Add assorted tests to exercise more QTest functions
Coverage analysis reveals some unexercised code. Task-number: QTPM-1385 Change-Id: Ib3fdbcf778e7af14ca6dfa1a11bcb4943276de69 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
This commit is contained in:
parent
4b1b9ad7b0
commit
f3de22b211
45
tests/auto/testlib/selftests/expected_testlib.lightxml
Normal file
45
tests/auto/testlib/selftests/expected_testlib.lightxml
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
<Environment>
|
||||||
|
<QtVersion>@INSERT_QT_VERSION_HERE@</QtVersion>
|
||||||
|
<QtBuild/>
|
||||||
|
<QTestVersion>@INSERT_QT_VERSION_HERE@</QTestVersion>
|
||||||
|
</Environment>
|
||||||
|
<TestFunction name="initTestCase">
|
||||||
|
<Incident type="pass" file="" line="0" />
|
||||||
|
<Duration msecs="0"/>
|
||||||
|
</TestFunction>
|
||||||
|
<TestFunction name="basics">
|
||||||
|
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/testlib/tst_testlib.cpp" line="0">
|
||||||
|
<Description><![CDATA[Compared pointers are not the same]]></Description>
|
||||||
|
</Incident>
|
||||||
|
<Duration msecs="0"/>
|
||||||
|
</TestFunction>
|
||||||
|
<TestFunction name="delays">
|
||||||
|
<Incident type="pass" file="" line="0" />
|
||||||
|
<Duration msecs="0"/>
|
||||||
|
</TestFunction>
|
||||||
|
<TestFunction name="reals">
|
||||||
|
<Incident type="pass" file="" line="0">
|
||||||
|
<DataTag><![CDATA[zero]]></DataTag>
|
||||||
|
</Incident>
|
||||||
|
<Incident type="pass" file="" line="0">
|
||||||
|
<DataTag><![CDATA[self-qQNaN]]></DataTag>
|
||||||
|
</Incident>
|
||||||
|
<Incident type="pass" file="" line="0">
|
||||||
|
<DataTag><![CDATA[self-qInf]]></DataTag>
|
||||||
|
</Incident>
|
||||||
|
<Incident type="pass" file="" line="0">
|
||||||
|
<DataTag><![CDATA[infineg]]></DataTag>
|
||||||
|
</Incident>
|
||||||
|
<Incident type="pass" file="" line="0">
|
||||||
|
<DataTag><![CDATA[Sin(turn/4)]]></DataTag>
|
||||||
|
</Incident>
|
||||||
|
<Incident type="pass" file="" line="0">
|
||||||
|
<DataTag><![CDATA[Cos(turn/2)]]></DataTag>
|
||||||
|
</Incident>
|
||||||
|
<Duration msecs="0"/>
|
||||||
|
</TestFunction>
|
||||||
|
<TestFunction name="cleanupTestCase">
|
||||||
|
<Incident type="pass" file="" line="0" />
|
||||||
|
<Duration msecs="0"/>
|
||||||
|
</TestFunction>
|
||||||
|
<Duration msecs="0"/>
|
22
tests/auto/testlib/selftests/expected_testlib.tap
Normal file
22
tests/auto/testlib/selftests/expected_testlib.tap
Normal file
@ -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
|
23
tests/auto/testlib/selftests/expected_testlib.teamcity
Normal file
23
tests/auto/testlib/selftests/expected_testlib.teamcity
Normal file
@ -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']
|
15
tests/auto/testlib/selftests/expected_testlib.txt
Normal file
15
tests/auto/testlib/selftests/expected_testlib.txt
Normal file
@ -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 *********
|
48
tests/auto/testlib/selftests/expected_testlib.xml
Normal file
48
tests/auto/testlib/selftests/expected_testlib.xml
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<TestCase name="tst_TestLib">
|
||||||
|
<Environment>
|
||||||
|
<QtVersion>@INSERT_QT_VERSION_HERE@</QtVersion>
|
||||||
|
<QtBuild/>
|
||||||
|
<QTestVersion>@INSERT_QT_VERSION_HERE@</QTestVersion>
|
||||||
|
</Environment>
|
||||||
|
<TestFunction name="initTestCase">
|
||||||
|
<Incident type="pass" file="" line="0" />
|
||||||
|
<Duration msecs="0"/>
|
||||||
|
</TestFunction>
|
||||||
|
<TestFunction name="basics">
|
||||||
|
<Incident type="fail" file="qtbase/tests/auto/testlib/selftests/testlib/tst_testlib.cpp" line="0">
|
||||||
|
<Description><![CDATA[Compared pointers are not the same]]></Description>
|
||||||
|
</Incident>
|
||||||
|
<Duration msecs="0"/>
|
||||||
|
</TestFunction>
|
||||||
|
<TestFunction name="delays">
|
||||||
|
<Incident type="pass" file="" line="0" />
|
||||||
|
<Duration msecs="0"/>
|
||||||
|
</TestFunction>
|
||||||
|
<TestFunction name="reals">
|
||||||
|
<Incident type="pass" file="" line="0">
|
||||||
|
<DataTag><![CDATA[zero]]></DataTag>
|
||||||
|
</Incident>
|
||||||
|
<Incident type="pass" file="" line="0">
|
||||||
|
<DataTag><![CDATA[self-qQNaN]]></DataTag>
|
||||||
|
</Incident>
|
||||||
|
<Incident type="pass" file="" line="0">
|
||||||
|
<DataTag><![CDATA[self-qInf]]></DataTag>
|
||||||
|
</Incident>
|
||||||
|
<Incident type="pass" file="" line="0">
|
||||||
|
<DataTag><![CDATA[infineg]]></DataTag>
|
||||||
|
</Incident>
|
||||||
|
<Incident type="pass" file="" line="0">
|
||||||
|
<DataTag><![CDATA[Sin(turn/4)]]></DataTag>
|
||||||
|
</Incident>
|
||||||
|
<Incident type="pass" file="" line="0">
|
||||||
|
<DataTag><![CDATA[Cos(turn/2)]]></DataTag>
|
||||||
|
</Incident>
|
||||||
|
<Duration msecs="0"/>
|
||||||
|
</TestFunction>
|
||||||
|
<TestFunction name="cleanupTestCase">
|
||||||
|
<Incident type="pass" file="" line="0" />
|
||||||
|
<Duration msecs="0"/>
|
||||||
|
</TestFunction>
|
||||||
|
<Duration msecs="0"/>
|
||||||
|
</TestCase>
|
16
tests/auto/testlib/selftests/expected_testlib.xunitxml
Normal file
16
tests/auto/testlib/selftests/expected_testlib.xunitxml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<testsuite errors="0" failures="1" tests="5" name="tst_TestLib">
|
||||||
|
<properties>
|
||||||
|
<property value="@INSERT_QT_VERSION_HERE@" name="QTestVersion"/>
|
||||||
|
<property value="@INSERT_QT_VERSION_HERE@" name="QtVersion"/>
|
||||||
|
<property value="" name="QtBuild"/>
|
||||||
|
</properties>
|
||||||
|
<testcase result="pass" name="initTestCase"/>
|
||||||
|
<testcase result="fail" name="basics">
|
||||||
|
<failure message="Compared pointers are not the same" result="fail"/>
|
||||||
|
</testcase>
|
||||||
|
<testcase result="pass" name="delays"/>
|
||||||
|
<testcase result="pass" name="reals"/>
|
||||||
|
<testcase result="pass" name="cleanupTestCase"/>
|
||||||
|
<system-err/>
|
||||||
|
</testsuite>
|
@ -45,6 +45,7 @@ SUBPROGRAMS = \
|
|||||||
sleep \
|
sleep \
|
||||||
strcmp \
|
strcmp \
|
||||||
subtest \
|
subtest \
|
||||||
|
testlib \
|
||||||
tuplediagnostics \
|
tuplediagnostics \
|
||||||
verbose1 \
|
verbose1 \
|
||||||
verbose2 \
|
verbose2 \
|
||||||
|
7
tests/auto/testlib/selftests/testlib/testlib.pro
Normal file
7
tests/auto/testlib/selftests/testlib/testlib.pro
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
SOURCES += tst_testlib.cpp
|
||||||
|
QT = core testlib
|
||||||
|
|
||||||
|
darwin: CONFIG -= app_bundle
|
||||||
|
CONFIG -= debug_and_release_target
|
||||||
|
|
||||||
|
TARGET = testlib
|
97
tests/auto/testlib/selftests/testlib/tst_testlib.cpp
Normal file
97
tests/auto/testlib/selftests/testlib/tst_testlib.cpp
Normal file
@ -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 <QtTest/QtTest>
|
||||||
|
#include <QtCore/QtMath>
|
||||||
|
#include <QtCore/QtNumeric>
|
||||||
|
|
||||||
|
/* 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<double>("actual");
|
||||||
|
QTest::addColumn<double>("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"
|
@ -497,6 +497,7 @@ void tst_Selftests::runSubTest_data()
|
|||||||
<< "sleep"
|
<< "sleep"
|
||||||
<< "strcmp"
|
<< "strcmp"
|
||||||
<< "subtest"
|
<< "subtest"
|
||||||
|
<< "testlib"
|
||||||
<< "tuplediagnostics"
|
<< "tuplediagnostics"
|
||||||
<< "verbose1"
|
<< "verbose1"
|
||||||
<< "verbose2"
|
<< "verbose2"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user