From 9ce92849efcd3cb5a26c274582d5e70b8db4e41c Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Fri, 6 Dec 2019 15:37:49 +0000 Subject: [PATCH] add qrand() test Signed-off-by: Ivailo Monev --- tests/auto/qrand/CMakeLists.txt | 4 +++ tests/auto/qrand/tst_qrand.cpp | 71 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 tests/auto/qrand/CMakeLists.txt create mode 100644 tests/auto/qrand/tst_qrand.cpp diff --git a/tests/auto/qrand/CMakeLists.txt b/tests/auto/qrand/CMakeLists.txt new file mode 100644 index 000000000..172d202fe --- /dev/null +++ b/tests/auto/qrand/CMakeLists.txt @@ -0,0 +1,4 @@ +katie_test(tst_qrand + ${CMAKE_CURRENT_SOURCE_DIR}/tst_qrand.cpp +) + diff --git a/tests/auto/qrand/tst_qrand.cpp b/tests/auto/qrand/tst_qrand.cpp new file mode 100644 index 000000000..87aa31878 --- /dev/null +++ b/tests/auto/qrand/tst_qrand.cpp @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Copyright (C) 2016-2019 Ivailo Monev +** +** This file is part of the test suite of the Katie Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +class tst_QRand: public QObject +{ + Q_OBJECT +private slots: + void random_data(); + void random(); +}; + +void tst_QRand::random_data() +{ + QTest::addColumn("seed"); + + QTest::newRow("with_seed") << true; + QTest::newRow("without_seed") << false; +} + +void tst_QRand::random() +{ + QFETCH(bool, seed); + + static int lastvalue = 0; + static const int numcalls = 10000; + for (int i = 0; i < numcalls; i++) { + if (seed) { + qsrand(i); + } + + const int value = qrand(); + QVERIFY(lastvalue != value); + lastvalue = value; + } +} + +QTEST_MAIN(tst_QRand) + +#include "moc_tst_qrand.cpp" -- 2.11.0