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:
Edward Welbourne 2018-10-16 19:07:14 +02:00
parent 4b1b9ad7b0
commit f3de22b211
10 changed files with 275 additions and 0 deletions

View 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"/>

View 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

View 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']

View 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 *********

View 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>

View 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>

View File

@ -45,6 +45,7 @@ SUBPROGRAMS = \
sleep \
strcmp \
subtest \
testlib \
tuplediagnostics \
verbose1 \
verbose2 \

View File

@ -0,0 +1,7 @@
SOURCES += tst_testlib.cpp
QT = core testlib
darwin: CONFIG -= app_bundle
CONFIG -= debug_and_release_target
TARGET = testlib

View 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"

View File

@ -497,6 +497,7 @@ void tst_Selftests::runSubTest_data()
<< "sleep"
<< "strcmp"
<< "subtest"
<< "testlib"
<< "tuplediagnostics"
<< "verbose1"
<< "verbose2"