diff options
Diffstat (limited to 'QtTest/TestCaseBase.qml')
-rw-r--r-- | QtTest/TestCaseBase.qml | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/QtTest/TestCaseBase.qml b/QtTest/TestCaseBase.qml new file mode 100644 index 0000000..122c6ae --- /dev/null +++ b/QtTest/TestCaseBase.qml @@ -0,0 +1,87 @@ +import Qt 4.7 + +Item { + id: testCase + visible: false + property string name + property variant tests: [] + + property string currentTestCase + property int numPassed + property int numFailed + property int numSkipped + property bool expectingFail + property string expectFailMsg + + function fail(msg) { + if (expectingFail) { + if (expectFailMsg) + print("EXPECT : " + currentTestCase + " " + expectFailMsg + " " + msg) + else + print("EXPECT : " + currentTestCase + " " + msg) + throw new Error("QtTest::expect_fail") + } else { + print("FAIL : " + currentTestCase + " " + msg) + throw new Error("QtTest::fail") + } + } + + function fail2(msg, msg2) { + if (msg) + fail(msg + ": " + msg2) + else + fail(msg2) + } + + function verify(cond, msg) { + if (!cond) + fail(msg) + } + + function compare(actual, expected, msg) { + if (actual != expected) + fail2(msg, "actual: " + actual + ", expected: " + expected) + } + + function skip(msg) { + print("SKIP : " + currentTestCase + " " + msg) + throw new Error("QtTest::skip") + } + + function expectFail(msg) { + expectingFail = true + expectFailMsg = msg + } + + function run() { + var prefix; + if (name) + prefix = name + "::" + var success = true + numPassed = 0 + numFailed = 0 + numSkipped = 0 + for (var prop in testCase) { + if (prop.indexOf("test_") != 0) + continue + currentTestCase = prefix + prop + "()" + expectingFail = false + try { + testCase[prop]() + ++numPassed + print("PASS : " + currentTestCase) + } catch (e) { + if (e.message == "QtTest::fail") { + ++numFailed + success = false + } else if (e.message == "QtTest::skip") { + ++numSkipped + } else if (e.message == "QtTest::expect_fail") { + ++numFailed + } + } + } + currentTestCase = "" + return success; + } +} |