blob: 55558760146881ee2a7bb96ba9a9dc53670f0bef [file] [log] [blame]
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the test suite of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:GPL-EXCEPT$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.0
import QtTest 1.1
TestCase {
name: "SelfTests"
// Replace the TestResult functions in "testCase" with hooks
// that record the events but don't send them to QTestLib.
QtObject {
id: functions
property string failmsg: "cleaned"
property string actual: ""
property string expected: ""
property variant functionsToRun: []
function fail(msg, file, line) {
failmsg = msg
}
function verify(cond, msg, file, line) {
if (cond) {
failmsg = "verify-ok"
return true
} else {
failmsg = msg
return false
}
}
function compare(success, msg, act, exp, file, line) {
if (success) {
failmsg = "compare-ok"
actual = ""
expected = ""
return true
} else {
failmsg = msg
actual = act
expected = exp
return false
}
}
function skip(msg, file, line) {
failmsg = "skip:" + msg
}
function stringify(str) {
return str;
}
}
TestCase {
id: testCase
when: false
optional: true
qtest_results: functions
}
function init() {
compare(functions.failmsg, "cleaned") // Checks for previous cleanup()
functions.failmsg = "invalid"
}
function cleanup() {
functions.failmsg = "cleaned"
}
function test_fail() {
compare(functions.failmsg, "invalid") // Checks that init() was run
var caught = false
try {
testCase.fail("foo")
} catch (e) {
compare(e.message, "QtQuickTest::fail")
compare(functions.failmsg, "foo")
caught = true
}
verify(caught)
caught = false
try {
testCase.fail()
} catch (e) {
compare(e.message, "QtQuickTest::fail")
compare(functions.failmsg, "")
caught = true
}
verify(caught)
caught = false
try {
testCase.fail(false)
} catch (e) {
compare(e.message, "QtQuickTest::fail")
compare(functions.failmsg, "false")
caught = true
}
verify(caught)
caught = false
try {
testCase.fail(3)
} catch (e) {
compare(e.message, "QtQuickTest::fail")
compare(functions.failmsg, "3")
caught = true
}
verify(caught)
}
function test_verify() {
compare(functions.failmsg, "invalid") // Checks that init() was run
try {
testCase.verify(true)
} catch (e) {
fail("verify(true) did not succeed")
}
compare(functions.failmsg, "verify-ok")
var caught = false;
try {
testCase.verify(false, "foo")
} catch (e) {
compare(e.message, "QtQuickTest::fail")
compare(functions.failmsg, "foo")
caught = true
}
verify(caught)
caught = false;
try {
testCase.verify(false)
} catch (e) {
compare(e.message, "QtQuickTest::fail")
compare(functions.failmsg, "")
caught = true
}
verify(caught)
caught = false;
try {
testCase.verify(true, "foo", "bar")
} catch (e) {
compare(e.message, "QtQuickTest::fail")
compare(functions.failmsg, "More than two arguments given to verify(). Did you mean tryVerify() or tryCompare()?")
caught = true
}
verify(caught)
}
function test_compare() {
compare(functions.failmsg, "invalid") // Checks that init() was run
try {
testCase.compare(23, 23)
} catch (e) {
fail("compare(23, 23) did not succeed")
}
compare(functions.failmsg, "compare-ok")
var caught = false;
try {
testCase.compare(23, 42, "foo")
} catch (e) {
compare(e.message, "QtQuickTest::fail")
compare(functions.failmsg, "foo")
compare(functions.actual, "23")
compare(functions.expected, "42")
caught = true
}
verify(caught)
caught = false;
try {
testCase.compare("abcdef", 42)
} catch (e) {
compare(e.message, "QtQuickTest::fail")
compare(functions.failmsg, "Compared values are not the same")
compare(functions.actual, "abcdef")
compare(functions.expected, "42")
caught = true
}
verify(caught)
/*
caught = false;
try {
testCase.compare(Qt.vector3d(1, 2, 3), Qt.vector3d(-1, 2, 3), "x")
} catch (e) {
compare(e.message, "QtQuickTest::fail")
compare(functions.failmsg, "x")
compare(functions.actual, "Qt.vector3d(1, 2, 3)")
compare(functions.expected, "Qt.vector3d(-1, 2, 3)")
caught = true
}
verify(caught)
caught = false;
try {
testCase.compare(Qt.vector3d(1, 2, 3), Qt.vector3d(1, -2, 3), "y")
} catch (e) {
compare(e.message, "QtQuickTest::fail")
compare(functions.failmsg, "y")
compare(functions.actual, "Qt.vector3d(1, 2, 3)")
compare(functions.expected, "Qt.vector3d(1, -2, 3)")
caught = true
}
verify(caught)
caught = false;
try {
testCase.compare(Qt.vector3d(1, 2, 3), Qt.vector3d(1, 2, -3), "z")
} catch (e) {
compare(e.message, "QtQuickTest::fail")
compare(functions.failmsg, "z")
compare(functions.actual, "Qt.vector3d(1, 2, 3)")
compare(functions.expected, "Qt.vector3d(1, 2, -3)")
caught = true
}
verify(caught)
caught = false;
try {
testCase.compare(Qt.vector3d(1, 2, 3), Qt.vector3d(1, 2, 3))
} catch (e) {
fail("vector compare did not succeed")
}
compare(functions.failmsg, "compare-ok")
*/
}
function test_skip() {
compare(functions.failmsg, "invalid") // Checks that init() was run
var caught = false
try {
testCase.skip("foo")
} catch (e) {
compare(e.message, "QtQuickTest::skip")
compare(functions.failmsg, "skip:foo")
caught = true
}
verify(caught)
caught = false
try {
testCase.skip()
} catch (e) {
compare(e.message, "QtQuickTest::skip")
compare(functions.failmsg, "skip:")
caught = true
}
verify(caught)
}
function test_blacklisted_fail()
{
verify(false)
}
function test_blacklistWithData_data() {
return [
{
tag: "test1",
success: true
},
{
tag: "test2",
success: false
},
{
tag: "test3",
success: true
}
]
}
function test_blacklistWithData(row) {
verify(row.success)
}
}