diff options
author | Ben Boeckel <MathStuf@gmail.com> | 2008-12-23 16:54:34 -0500 |
---|---|---|
committer | Ben Boeckel <MathStuf@gmail.com> | 2008-12-23 16:54:34 -0500 |
commit | 73808809ef8a3e2448081b73a70d91cebecfffc6 (patch) | |
tree | 26d511775460f39c6ae835eca200844d8d0166d6 /sigcore | |
parent | c2462fdb8a60517beb67a89b55e078a2cbea30c4 (diff) | |
download | sigen-73808809ef8a3e2448081b73a70d91cebecfffc6.tar.gz sigen-73808809ef8a3e2448081b73a70d91cebecfffc6.tar.xz sigen-73808809ef8a3e2448081b73a70d91cebecfffc6.zip |
Adding Script tests and made the CMake file link only necessary things
Diffstat (limited to 'sigcore')
-rw-r--r-- | sigcore/test/CMakeLists.txt | 17 | ||||
-rw-r--r-- | sigcore/test/TestScript.cpp | 128 | ||||
-rw-r--r-- | sigcore/test/TestScript.h | 51 |
3 files changed, 194 insertions, 2 deletions
diff --git a/sigcore/test/CMakeLists.txt b/sigcore/test/CMakeLists.txt index ebdfce3b..29e0cb88 100644 --- a/sigcore/test/CMakeLists.txt +++ b/sigcore/test/CMakeLists.txt @@ -1,9 +1,22 @@ SET(libraries +) + +MAKE_TEST(Matrix libraries) + +SET(libraries + ${libraries} sigcore ) MAKE_TEST(Fraction libraries) MAKE_TEST(Hat libraries) -MAKE_TEST(Matrix libraries) MAKE_TEST(Range libraries) -# MAKE_TEST(Script libraries) + +IF (KDE4_FOUND) + SET(libraries + ${libraries} + ${KDE4_KROSSCORE_LIBRARY} + ) + + MAKE_TEST(Script libraries) +ENDIF (KDE4_FOUND) diff --git a/sigcore/test/TestScript.cpp b/sigcore/test/TestScript.cpp new file mode 100644 index 00000000..ccb340c5 --- /dev/null +++ b/sigcore/test/TestScript.cpp @@ -0,0 +1,128 @@ +/* + * Copyright 2008 Ben Boeckel <MathStuf@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +// Header include +#include "TestScript.h" + +// KDE includes +#include <kross/core/action.h> + +// Qt includes +#include <QtTest/QTest> + +QString TestScript::value() const +{ + return m_value; +} + +void TestScript::setValue(const QString& value) +{ + m_value = value; +} + +void TestScript::slot1() +{ + m_foo = true; +} + +void TestScript::slot2() +{ + m_bar = true; +} + +void TestScript::initTestCase() +{ + m_foo = false; + m_bar = false; +} + +void TestScript::setInterpreter() +{ + Sigcore::Script script; + + QCOMPARE(script.interpreter(), QString("")); + + script.setInterpreter("python"); + + QCOMPARE(script.interpreter(), QString("python")); +} + +void TestScript::setScript() +{ + Sigcore::Script script; + + QCOMPARE(script.script(), QString("")); + + script.setScript("import os"); + + QCOMPARE(script.script(), QString("import os")); +} + +void TestScript::assignment() +{ + Sigcore::Script script1; + Sigcore::Script script2("python", "import os"); + + QCOMPARE(script1.interpreter(), QString("")); + QCOMPARE(script1.script(), QString("")); + + script1 = script2; + + QCOMPARE(script1.interpreter(), QString("python")); + QCOMPARE(script1.script(), QString("import os")); +} + +void TestScript::equality() +{ + Sigcore::Script script1; + Sigcore::Script script2("python", "import os"); + + QVERIFY(script1 != script2); + + script1 = script2; + + QVERIFY(script1 == script2); +} + +void TestScript::running() +{ + Sigcore::Script script("python", "import object\n\ +\n\ +object.value = \"set\"\n\ +def slot():\n\ + object.slot1()\n\ +object.connect(\"signal1()\", slot)\n\ +object.connect(\"signal2()\", \"slot2()\")\n\ +"); + + Kross::Action* action = new Kross::Action(this, "test-script"); + action->setInterpreter(script.interpreter()); + action->setCode(script.script().toUtf8()); + + action->addObject(this, "object"); + + action->trigger(); + + emit(signal1()); + emit(signal2()); + + QCOMPARE(m_foo, true); + QCOMPARE(m_bar, true); + QCOMPARE(m_value, QString("set")); +} + +QTEST_MAIN(TestScript) diff --git a/sigcore/test/TestScript.h b/sigcore/test/TestScript.h new file mode 100644 index 00000000..8768d593 --- /dev/null +++ b/sigcore/test/TestScript.h @@ -0,0 +1,51 @@ +/* + * Copyright 2008 Ben Boeckel <MathStuf@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef TESTSCRIPT +#define TESTSCRIPT + +// Sigcore includes +#include "../Script.h" + +class TestScript : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString value READ value WRITE setValue) + + public: + QString value() const; + void setValue(const QString& value); + public slots: + void slot1(); + void slot2(); + signals: + void signal1(); + void signal2(); + private: + bool m_foo; + bool m_bar; + QString m_value; + private slots: + void initTestCase(); + void setInterpreter(); + void setScript(); + void assignment(); + void equality(); + void running(); +}; + +#endif |