summaryrefslogtreecommitdiffstats
path: root/sigcore
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2008-12-23 16:54:34 -0500
committerBen Boeckel <MathStuf@gmail.com>2008-12-23 16:54:34 -0500
commit73808809ef8a3e2448081b73a70d91cebecfffc6 (patch)
tree26d511775460f39c6ae835eca200844d8d0166d6 /sigcore
parentc2462fdb8a60517beb67a89b55e078a2cbea30c4 (diff)
downloadsigen-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.txt17
-rw-r--r--sigcore/test/TestScript.cpp128
-rw-r--r--sigcore/test/TestScript.h51
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