From f3de22b2117f083308a45cc3ed80979db421e274 Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Tue, 16 Oct 2018 19:07:14 +0200 Subject: Add assorted tests to exercise more QTest functions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Coverage analysis reveals some unexercised code. Task-number: QTPM-1385 Change-Id: Ib3fdbcf778e7af14ca6dfa1a11bcb4943276de69 Reviewed-by: Volker Hilsheimer Reviewed-by: Jędrzej Nowacki --- .../testlib/selftests/expected_testlib.lightxml | 45 ++++++++++ tests/auto/testlib/selftests/expected_testlib.tap | 22 +++++ .../testlib/selftests/expected_testlib.teamcity | 23 +++++ tests/auto/testlib/selftests/expected_testlib.txt | 15 ++++ tests/auto/testlib/selftests/expected_testlib.xml | 48 +++++++++++ .../testlib/selftests/expected_testlib.xunitxml | 16 ++++ tests/auto/testlib/selftests/selftests.pri | 1 + tests/auto/testlib/selftests/testlib/testlib.pro | 7 ++ .../auto/testlib/selftests/testlib/tst_testlib.cpp | 97 ++++++++++++++++++++++ tests/auto/testlib/selftests/tst_selftests.cpp | 1 + 10 files changed, 275 insertions(+) create mode 100644 tests/auto/testlib/selftests/expected_testlib.lightxml create mode 100644 tests/auto/testlib/selftests/expected_testlib.tap create mode 100644 tests/auto/testlib/selftests/expected_testlib.teamcity create mode 100644 tests/auto/testlib/selftests/expected_testlib.txt create mode 100644 tests/auto/testlib/selftests/expected_testlib.xml create mode 100644 tests/auto/testlib/selftests/expected_testlib.xunitxml create mode 100644 tests/auto/testlib/selftests/testlib/testlib.pro create mode 100644 tests/auto/testlib/selftests/testlib/tst_testlib.cpp (limited to 'tests') diff --git a/tests/auto/testlib/selftests/expected_testlib.lightxml b/tests/auto/testlib/selftests/expected_testlib.lightxml new file mode 100644 index 0000000000..47f5edc07d --- /dev/null +++ b/tests/auto/testlib/selftests/expected_testlib.lightxml @@ -0,0 +1,45 @@ + + @INSERT_QT_VERSION_HERE@ + + @INSERT_QT_VERSION_HERE@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/auto/testlib/selftests/expected_testlib.tap b/tests/auto/testlib/selftests/expected_testlib.tap new file mode 100644 index 0000000000..d85b23b7d4 --- /dev/null +++ b/tests/auto/testlib/selftests/expected_testlib.tap @@ -0,0 +1,22 @@ +TAP version 13 +# tst_TestLib +ok 1 - initTestCase() +not ok 2 - basics() + --- + # Compared pointers are not the same + at: tst_TestLib::basics() (qtbase/tests/auto/testlib/selftests/testlib/tst_testlib.cpp:54) + file: qtbase/tests/auto/testlib/selftests/testlib/tst_testlib.cpp + line: 54 + ... +ok 3 - delays() +ok 4 - reals(zero) +ok 5 - reals(self-qQNaN) +ok 6 - reals(self-qInf) +ok 7 - reals(infineg) +ok 8 - reals(Sin(turn/4)) +ok 9 - reals(Cos(turn/2)) +ok 10 - cleanupTestCase() +1..10 +# tests 10 +# pass 9 +# fail 1 diff --git a/tests/auto/testlib/selftests/expected_testlib.teamcity b/tests/auto/testlib/selftests/expected_testlib.teamcity new file mode 100644 index 0000000000..11617121e2 --- /dev/null +++ b/tests/auto/testlib/selftests/expected_testlib.teamcity @@ -0,0 +1,23 @@ +##teamcity[testSuiteStarted name='tst_TestLib' flowId='tst_TestLib'] +##teamcity[testStarted name='initTestCase()' flowId='tst_TestLib'] +##teamcity[testFinished name='initTestCase()' flowId='tst_TestLib'] +##teamcity[testStarted name='basics()' flowId='tst_TestLib'] +##teamcity[testFailed name='basics()' message='Failure! |[Loc: qtbase/tests/auto/testlib/selftests/testlib/tst_testlib.cpp(0)|]' details='Compared pointers are not the same' flowId='tst_TestLib'] +##teamcity[testFinished name='basics()' flowId='tst_TestLib'] +##teamcity[testStarted name='delays()' flowId='tst_TestLib'] +##teamcity[testFinished name='delays()' flowId='tst_TestLib'] +##teamcity[testStarted name='reals(zero)' flowId='tst_TestLib'] +##teamcity[testFinished name='reals(zero)' flowId='tst_TestLib'] +##teamcity[testStarted name='reals(self-qQNaN)' flowId='tst_TestLib'] +##teamcity[testFinished name='reals(self-qQNaN)' flowId='tst_TestLib'] +##teamcity[testStarted name='reals(self-qInf)' flowId='tst_TestLib'] +##teamcity[testFinished name='reals(self-qInf)' flowId='tst_TestLib'] +##teamcity[testStarted name='reals(infineg)' flowId='tst_TestLib'] +##teamcity[testFinished name='reals(infineg)' flowId='tst_TestLib'] +##teamcity[testStarted name='reals(Sin(turn/4))' flowId='tst_TestLib'] +##teamcity[testFinished name='reals(Sin(turn/4))' flowId='tst_TestLib'] +##teamcity[testStarted name='reals(Cos(turn/2))' flowId='tst_TestLib'] +##teamcity[testFinished name='reals(Cos(turn/2))' flowId='tst_TestLib'] +##teamcity[testStarted name='cleanupTestCase()' flowId='tst_TestLib'] +##teamcity[testFinished name='cleanupTestCase()' flowId='tst_TestLib'] +##teamcity[testSuiteFinished name='tst_TestLib' flowId='tst_TestLib'] diff --git a/tests/auto/testlib/selftests/expected_testlib.txt b/tests/auto/testlib/selftests/expected_testlib.txt new file mode 100644 index 0000000000..a3f463e7d4 --- /dev/null +++ b/tests/auto/testlib/selftests/expected_testlib.txt @@ -0,0 +1,15 @@ +********* Start testing of tst_TestLib ********* +Config: Using QtTest library +PASS : tst_TestLib::initTestCase() +FAIL! : tst_TestLib::basics() Compared pointers are not the same + Loc: [qtbase/tests/auto/testlib/selftests/testlib/tst_testlib.cpp(0)] +PASS : tst_TestLib::delays() +PASS : tst_TestLib::reals(zero) +PASS : tst_TestLib::reals(self-qQNaN) +PASS : tst_TestLib::reals(self-qInf) +PASS : tst_TestLib::reals(infineg) +PASS : tst_TestLib::reals(Sin(turn/4)) +PASS : tst_TestLib::reals(Cos(turn/2)) +PASS : tst_TestLib::cleanupTestCase() +Totals: 9 passed, 1 failed, 0 skipped, 0 blacklisted, 0ms +********* Finished testing of tst_TestLib ********* diff --git a/tests/auto/testlib/selftests/expected_testlib.xml b/tests/auto/testlib/selftests/expected_testlib.xml new file mode 100644 index 0000000000..3aca904ac1 --- /dev/null +++ b/tests/auto/testlib/selftests/expected_testlib.xml @@ -0,0 +1,48 @@ + + + + @INSERT_QT_VERSION_HERE@ + + @INSERT_QT_VERSION_HERE@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/auto/testlib/selftests/expected_testlib.xunitxml b/tests/auto/testlib/selftests/expected_testlib.xunitxml new file mode 100644 index 0000000000..c9c67c7c9a --- /dev/null +++ b/tests/auto/testlib/selftests/expected_testlib.xunitxml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/tests/auto/testlib/selftests/selftests.pri b/tests/auto/testlib/selftests/selftests.pri index bc5a74a20a..b4568dd3e1 100644 --- a/tests/auto/testlib/selftests/selftests.pri +++ b/tests/auto/testlib/selftests/selftests.pri @@ -45,6 +45,7 @@ SUBPROGRAMS = \ sleep \ strcmp \ subtest \ + testlib \ tuplediagnostics \ verbose1 \ verbose2 \ diff --git a/tests/auto/testlib/selftests/testlib/testlib.pro b/tests/auto/testlib/selftests/testlib/testlib.pro new file mode 100644 index 0000000000..a909c1c213 --- /dev/null +++ b/tests/auto/testlib/selftests/testlib/testlib.pro @@ -0,0 +1,7 @@ +SOURCES += tst_testlib.cpp +QT = core testlib + +darwin: CONFIG -= app_bundle +CONFIG -= debug_and_release_target + +TARGET = testlib diff --git a/tests/auto/testlib/selftests/testlib/tst_testlib.cpp b/tests/auto/testlib/selftests/testlib/tst_testlib.cpp new file mode 100644 index 0000000000..38a71be732 --- /dev/null +++ b/tests/auto/testlib/selftests/testlib/tst_testlib.cpp @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2018 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$ +** +****************************************************************************/ + +#include +#include +#include + +/* Test QTest functions not covered by other parts of the selftest. Tests that + * involve crashing or exiting should be added as separate tests in their own + * right. Tests that form a coherent group on a related theme should also go in + * their own directory. Tests that fail in order to exercise QTest internals + * are fine. + */ + +class tst_TestLib : public QObject +{ +Q_OBJECT +private slots: + void basics() const; + void delays() const; + void reals_data() const; + void reals() const; +}; + +void tst_TestLib::basics() const +{ + QVERIFY(QByteArray(QTest::currentAppName()).contains("testlib")); + + QCOMPARE(QTest::testObject(), nullptr); // last, because it should fail +} + +QT_BEGIN_NAMESPACE + +namespace QTest { + // Defined; not declared in the public header, but used by qtdeclarative. + int defaultKeyDelay(); + int defaultMouseDelay(); +} + +QT_END_NAMESPACE + +void tst_TestLib::delays() const +{ + QVERIFY(QTest::defaultMouseDelay() >= 0); + QVERIFY(QTest::defaultKeyDelay() >= 0); +} + +void tst_TestLib::reals_data() const +{ + QTest::addColumn("actual"); + QTest::addColumn("expected"); + + QTest::newRow("zero") << 0.0 << 0.0; +#define ADDROW(func) QTest::addRow("self-%s", #func) << func() << func() + ADDROW(qQNaN); + ADDROW(qInf); +#undef ADDROW // Just used so as to exercise addRow() + QTest::newRow("infineg") << -qInf() << -qInf(); + QTest::newRow("Sin(turn/4)") << qSin(9 * M_PI_2) << 1.0; + QTest::newRow("Cos(turn/2)") << qCos(15 * M_PI) << -1.0; +} + +void tst_TestLib::reals() const +{ + QFETCH(double, actual); + QFETCH(double, expected); + QCOMPARE(actual, expected); +} + +QTEST_APPLESS_MAIN(tst_TestLib) + +#include "tst_testlib.moc" diff --git a/tests/auto/testlib/selftests/tst_selftests.cpp b/tests/auto/testlib/selftests/tst_selftests.cpp index a5094c8b9e..6ef0ca19ed 100644 --- a/tests/auto/testlib/selftests/tst_selftests.cpp +++ b/tests/auto/testlib/selftests/tst_selftests.cpp @@ -497,6 +497,7 @@ void tst_Selftests::runSubTest_data() << "sleep" << "strcmp" << "subtest" + << "testlib" << "tuplediagnostics" << "verbose1" << "verbose2" -- cgit v1.2.3