ctkAbstractPythonManagerTest.cpp 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. // CTK includes
  2. #include "ctkAbstractPythonManager.h"
  3. #include "ctkTest.h"
  4. // PythonQt includes
  5. #include <PythonQt.h>
  6. // STD includes
  7. #include <cstdlib>
  8. #include <iostream>
  9. //-----------------------------------------------------------------------------
  10. class ctkAbstractPythonManagerTester: public QObject
  11. {
  12. Q_OBJECT
  13. private:
  14. ctkAbstractPythonManager PythonManager;
  15. private Q_SLOTS:
  16. void testIsPythonInitialized();
  17. void testPythonErrorOccured();
  18. void testPythonErrorOccured_data();
  19. void testMainContext();
  20. void testAddObjectToPythonMain();
  21. //void testRegisterPythonQtDecorator(); // TODO
  22. //void testRegisterClassForPythonQt(); // TODO
  23. void testExecuteString();
  24. void testExecuteString_data();
  25. //void testExecuteFile(); // TODO
  26. //void testPythonAttributes(); // TODO
  27. };
  28. // ----------------------------------------------------------------------------
  29. void ctkAbstractPythonManagerTester::testIsPythonInitialized()
  30. {
  31. QCOMPARE(this->PythonManager.isPythonInitialized(), false);
  32. }
  33. // ----------------------------------------------------------------------------
  34. void ctkAbstractPythonManagerTester::testMainContext()
  35. {
  36. QVERIFY(this->PythonManager.mainContext());
  37. }
  38. // ----------------------------------------------------------------------------
  39. void ctkAbstractPythonManagerTester::testPythonErrorOccured()
  40. {
  41. QFETCH(QString, pythonCode);
  42. QFETCH(bool, errorOccured);
  43. this->PythonManager.executeString(pythonCode);
  44. QCOMPARE(this->PythonManager.pythonErrorOccured(), errorOccured);
  45. }
  46. // ----------------------------------------------------------------------------
  47. void ctkAbstractPythonManagerTester::testPythonErrorOccured_data()
  48. {
  49. QTest::addColumn<QString>("pythonCode");
  50. QTest::addColumn<bool>("errorOccured");
  51. QTest::newRow("0") << QString("2 + 2") << false;
  52. QTest::newRow("1") << QString("raise Exception('This is exception is expected')") << true;
  53. }
  54. // ----------------------------------------------------------------------------
  55. void ctkAbstractPythonManagerTester::testAddObjectToPythonMain()
  56. {
  57. QObject * object = new QObject(this);
  58. object->setProperty("happy", true);
  59. this->PythonManager.addObjectToPythonMain("testAddObjectToPythonMain", object);
  60. QVariant returnValue = this->PythonManager.executeString("testAddObjectToPythonMain.happy",
  61. ctkAbstractPythonManager::EvalInput);
  62. QCOMPARE(returnValue, QVariant(true));
  63. }
  64. // ----------------------------------------------------------------------------
  65. void ctkAbstractPythonManagerTester::testExecuteString()
  66. {
  67. QFETCH(QString, stringToExecute);
  68. QFETCH(int, executeStringMode);
  69. QFETCH(QVariant, expectedReturnValue);
  70. QFETCH(QString, expectedVariableName);
  71. QFETCH(QVariant, expectedVariableValue);
  72. QVariant returnValue = this->PythonManager.executeString(
  73. stringToExecute,
  74. static_cast<ctkAbstractPythonManager::ExecuteStringMode>(executeStringMode));
  75. QCOMPARE(returnValue, expectedReturnValue);
  76. QCOMPARE(this->PythonManager.getVariable(expectedVariableName), expectedVariableValue);
  77. }
  78. // ----------------------------------------------------------------------------
  79. void ctkAbstractPythonManagerTester::testExecuteString_data()
  80. {
  81. QTest::addColumn<QString>("stringToExecute");
  82. QTest::addColumn<int>("executeStringMode");
  83. QTest::addColumn<QVariant>("expectedReturnValue");
  84. QTest::addColumn<QString>("expectedVariableName");
  85. QTest::addColumn<QVariant>("expectedVariableValue");
  86. QTest::newRow("0") << QString("a = 6542")
  87. << static_cast<int>(ctkAbstractPythonManager::FileInput)
  88. << QVariant() << QString("a") << QVariant(6542);
  89. QTest::newRow("1") << QString("6543")
  90. << static_cast<int>(ctkAbstractPythonManager::FileInput)
  91. << QVariant() << QString("a") << QVariant(6542);
  92. QTest::newRow("2") << QString("b = 6544")
  93. << static_cast<int>(ctkAbstractPythonManager::EvalInput)
  94. << QVariant() << QString("b") << QVariant();
  95. QTest::newRow("3") << QString("7")
  96. << static_cast<int>(ctkAbstractPythonManager::EvalInput)
  97. << QVariant(7) << QString("b") << QVariant();
  98. }
  99. // ----------------------------------------------------------------------------
  100. CTK_TEST_MAIN(ctkAbstractPythonManagerTest)
  101. #include "moc_ctkAbstractPythonManagerTest.cpp"