diff options
Diffstat (limited to 'tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp')
-rw-r--r-- | tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp | 391 |
1 files changed, 173 insertions, 218 deletions
diff --git a/tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp b/tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp index 6dd4f8d2fe..42eb81d3c7 100644 --- a/tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp +++ b/tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp @@ -1,52 +1,22 @@ -/**************************************************************************** -** -** 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$ -** -****************************************************************************/ - - -#include <QtTest/QtTest> - - -#include "qcheckbox.h" -#include <qapplication.h> -#include <qpixmap.h> -#include <qdatetime.h> -#include <qcheckbox.h> +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only + + +#include <QTest> +#include <QSignalSpy> +#include <QApplication> +#include <QPixmap> +#include <QDateTime> +#include <QCheckBox> class tst_QCheckBox : public QObject { -Q_OBJECT - + Q_OBJECT private slots: void initTestCase(); - void cleanupTestCase(); - void init(); - void cleanup(); void setChecked(); + void setCheckedSignal(); void setTriState(); void setText_data(); void setText(); @@ -56,263 +26,248 @@ private slots: void toggle(); void pressed(); void toggled(); - void stateChanged(); + void checkStateChanged(); void foregroundRole(); void minimumSizeHint(); - -protected slots: - void onClicked(); - void onToggled( bool on ); - void onPressed(); - void onReleased(); - void onStateChanged( int state ); - -private: - uint click_count; - uint toggle_count; - uint press_count; - uint release_count; - int cur_state; - QCheckBox *testWidget; }; void tst_QCheckBox::initTestCase() { if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) QSKIP("Wayland: This fails. Figure out why."); - - // Create the test class - testWidget = new QCheckBox(0); - testWidget->setObjectName("testObject"); - testWidget->resize( 200, 200 ); - testWidget->show(); - QVERIFY(QTest::qWaitForWindowActive(testWidget)); -} - -void tst_QCheckBox::cleanupTestCase() -{ - delete testWidget; - testWidget = 0; } -void tst_QCheckBox::init() -{ - testWidget->setTristate( false ); - testWidget->setChecked( false ); - testWidget->setAutoRepeat( false ); -} - -void tst_QCheckBox::cleanup() -{ - disconnect(testWidget, SIGNAL(pressed()), this, SLOT(onPressed())); - disconnect(testWidget, SIGNAL(released()), this, SLOT(onReleased())); - disconnect(testWidget, SIGNAL(clicked()), this, SLOT(onClicked())); - disconnect(testWidget, SIGNAL(toggled(bool)), this, SLOT(onToggled(bool))); -} - -void tst_QCheckBox::onClicked() -{ - click_count++; -} - -void tst_QCheckBox::onPressed() -{ - press_count++; -} - -void tst_QCheckBox::onReleased() -{ - release_count++; -} +// *************************************************** -void tst_QCheckBox::onToggled( bool /*on*/ ) +void tst_QCheckBox::setChecked() { - toggle_count++; + QCheckBox testWidget; + testWidget.setChecked(true); + QVERIFY(testWidget.isChecked()); + QVERIFY(testWidget.isChecked()); + QVERIFY(testWidget.checkState() == Qt::Checked); + + testWidget.setChecked(false); + QVERIFY(!testWidget.isChecked()); + QVERIFY(!testWidget.isChecked()); + QVERIFY(testWidget.checkState() == Qt::Unchecked); + + testWidget.setChecked(false); + QTest::keyClick(&testWidget, ' '); + QVERIFY(testWidget.isChecked()); + + QTest::keyClick(&testWidget, ' '); + QVERIFY(!testWidget.isChecked()); } -// *************************************************** - -void tst_QCheckBox::setChecked() +void tst_QCheckBox::setCheckedSignal() { - testWidget->setChecked( true ); - QVERIFY( testWidget->isChecked() ); - QVERIFY( testWidget->isChecked() ); - QVERIFY( testWidget->checkState() == Qt::Checked ); - - testWidget->setChecked( false ); - QVERIFY( !testWidget->isChecked() ); - QVERIFY( !testWidget->isChecked() ); - QVERIFY( testWidget->checkState() == Qt::Unchecked ); - - testWidget->setChecked( false ); - QTest::keyClick( testWidget, ' ' ); - QVERIFY( testWidget->isChecked() ); - - QTest::keyClick( testWidget, ' ' ); - QVERIFY( !testWidget->isChecked() ); + QCheckBox testWidget; + testWidget.setCheckState(Qt::Unchecked); + QSignalSpy checkStateChangedSpy(&testWidget, &QCheckBox::checkStateChanged); + testWidget.setCheckState(Qt::Checked); + testWidget.setCheckState(Qt::Checked); + QTRY_COMPARE(checkStateChangedSpy.size(), 1); // get signal only once + QCOMPARE(testWidget.checkState(), Qt::Checked); + testWidget.setCheckState(Qt::Unchecked); + testWidget.setCheckState(Qt::Unchecked); + QTRY_COMPARE(checkStateChangedSpy.size(), 2); // get signal only once + QCOMPARE(testWidget.checkState(), Qt::Unchecked); + testWidget.setCheckState(Qt::PartiallyChecked); + testWidget.setCheckState(Qt::PartiallyChecked); + QTRY_COMPARE(checkStateChangedSpy.size(), 3); // get signal only once + QCOMPARE(testWidget.checkState(), Qt::PartiallyChecked); } void tst_QCheckBox::setTriState() { - testWidget->setTristate( true ); - QVERIFY( testWidget->isTristate() ); - QVERIFY( testWidget->checkState() == Qt::Unchecked ); + QCheckBox testWidget; + testWidget.setTristate(true); + QVERIFY(testWidget.isTristate()); + QVERIFY(testWidget.checkState() == Qt::Unchecked); - testWidget->setCheckState(Qt::PartiallyChecked); - QVERIFY( testWidget->checkState() == Qt::PartiallyChecked ); + testWidget.setCheckState(Qt::PartiallyChecked); + QVERIFY(testWidget.checkState() == Qt::PartiallyChecked); - testWidget->setChecked( true ); - QVERIFY( testWidget->isChecked() ); - QVERIFY( testWidget->checkState() == Qt::Checked ); + testWidget.setChecked(true); + QVERIFY(testWidget.isChecked()); + QVERIFY(testWidget.checkState() == Qt::Checked); - testWidget->setChecked( false ); - QVERIFY( !testWidget->isChecked() ); - QVERIFY( testWidget->checkState() == Qt::Unchecked ); + testWidget.setChecked(false); + QVERIFY(!testWidget.isChecked()); + QVERIFY(testWidget.checkState() == Qt::Unchecked); - testWidget->setCheckState(Qt::PartiallyChecked); - QVERIFY( testWidget->checkState() == Qt::PartiallyChecked ); + testWidget.setCheckState(Qt::PartiallyChecked); + QVERIFY(testWidget.checkState() == Qt::PartiallyChecked); - testWidget->setTristate( false ); - QVERIFY( !testWidget->isTristate() ); + testWidget.setTristate(false); + QVERIFY(!testWidget.isTristate()); - testWidget->setCheckState(Qt::PartiallyChecked); - QVERIFY( testWidget->checkState() == Qt::PartiallyChecked ); + testWidget.setCheckState(Qt::PartiallyChecked); + QVERIFY(testWidget.checkState() == Qt::PartiallyChecked); - testWidget->setChecked( true ); - QVERIFY( testWidget->checkState() == Qt::Checked ); + testWidget.setChecked(true); + QVERIFY(testWidget.checkState() == Qt::Checked); - testWidget->setChecked( false ); - QVERIFY( testWidget->checkState() == Qt::Unchecked ); + testWidget.setChecked(false); + QVERIFY(testWidget.checkState() == Qt::Unchecked); } void tst_QCheckBox::setText_data() { QTest::addColumn<QString>("s1"); - QTest::newRow( "data0" ) << QString("This is a text"); - QTest::newRow( "data1" ) << QString("A"); - QTest::newRow( "data2" ) << QString("ABCDEFG "); - QTest::newRow( "data3" ) << QString("Text\nwith a cr-lf"); - QTest::newRow( "data4" ) << QString(""); + QTest::newRow("data0" ) << QString("This is a text"); + QTest::newRow("data1" ) << QString("A"); + QTest::newRow("data2" ) << QString("ABCDEFG "); + QTest::newRow("data3" ) << QString("Text\nwith a cr-lf"); + QTest::newRow("data4" ) << QString(""); } void tst_QCheckBox::setText() { - QFETCH( QString, s1 ); - testWidget->setText( s1 ); - QCOMPARE( testWidget->text(), s1 ); + QCheckBox testWidget; + QFETCH(QString, s1); + testWidget.setText(s1); + QCOMPARE(testWidget.text(), s1); } void tst_QCheckBox::setDown() { - testWidget->setDown( true ); - QVERIFY( testWidget->isDown() ); + QCheckBox testWidget; + testWidget.setDown(true); + QVERIFY(testWidget.isDown()); - testWidget->setDown( false ); - QVERIFY( !testWidget->isDown() ); + testWidget.setDown(false); + QVERIFY(!testWidget.isDown()); } void tst_QCheckBox::setAutoRepeat() { + QCheckBox testWidget; // setAutoRepeat has no effect on toggle buttons - QVERIFY( testWidget->isCheckable() ); + testWidget.setAutoRepeat(true); + QVERIFY(testWidget.isCheckable()); } void tst_QCheckBox::toggle() { + QCheckBox testWidget; bool cur_state; - cur_state = testWidget->isChecked(); - testWidget->toggle(); - QVERIFY( cur_state != testWidget->isChecked() ); + cur_state = testWidget.isChecked(); + testWidget.toggle(); + QVERIFY(cur_state != testWidget.isChecked()); - cur_state = testWidget->isChecked(); - testWidget->toggle(); - QVERIFY( cur_state != testWidget->isChecked() ); + cur_state = testWidget.isChecked(); + testWidget.toggle(); + QVERIFY(cur_state != testWidget.isChecked()); - cur_state = testWidget->isChecked(); - testWidget->toggle(); - QVERIFY( cur_state != testWidget->isChecked() ); + cur_state = testWidget.isChecked(); + testWidget.toggle(); + QVERIFY(cur_state != testWidget.isChecked()); } void tst_QCheckBox::pressed() { - connect(testWidget, SIGNAL(pressed()), this, SLOT(onPressed())); - connect(testWidget, SIGNAL(released()), this, SLOT(onReleased())); - press_count = 0; - release_count = 0; - testWidget->setDown(false); - QVERIFY( !testWidget->isChecked() ); - - QTest::keyPress( testWidget, Qt::Key_Space ); - QVERIFY( press_count == 1 ); - QVERIFY( release_count == 0 ); - QVERIFY( !testWidget->isChecked() ); - - QTest::keyRelease( testWidget, Qt::Key_Space ); - QVERIFY( press_count == 1 ); - QVERIFY( release_count == 1 ); - QVERIFY( testWidget->isChecked() ); + QCheckBox testWidget; + int press_count = 0; + int release_count = 0; + connect(&testWidget, &QCheckBox::pressed, this, [&]() { ++press_count; }); + connect(&testWidget, &QCheckBox::released, this, [&]() { ++release_count; }); + testWidget.setDown(false); + QVERIFY(!testWidget.isChecked()); + + QTest::keyPress(&testWidget, Qt::Key_Space); + QVERIFY(press_count == 1); + QVERIFY(release_count == 0); + QVERIFY(!testWidget.isChecked()); + + QTest::keyRelease(&testWidget, Qt::Key_Space); + QVERIFY(press_count == 1); + QVERIFY(release_count == 1); + QVERIFY(testWidget.isChecked()); } void tst_QCheckBox::toggled() { - connect(testWidget, SIGNAL(toggled(bool)), this, SLOT(onToggled(bool))); - click_count = 0; - toggle_count = 0; - testWidget->toggle(); - QCOMPARE( toggle_count, (uint)1 ); + QCheckBox testWidget; + int toggle_count = 0; + int click_count = 0; + connect(&testWidget, &QCheckBox::toggled, this, [&]() { ++toggle_count; }); + connect(&testWidget, &QCheckBox::clicked, this, [&]() { ++click_count; }); - testWidget->toggle(); - QCOMPARE( toggle_count, (uint)2 ); + testWidget.toggle(); + QCOMPARE(toggle_count, 1); - testWidget->toggle(); - QCOMPARE( toggle_count, (uint)3 ); + testWidget.toggle(); + QCOMPARE(toggle_count, 2); - QCOMPARE( click_count, (uint)0 ); -} + testWidget.toggle(); + QCOMPARE(toggle_count, 3); -void tst_QCheckBox::onStateChanged( int state ) -{ - cur_state = state; + QCOMPARE(click_count, 0); } -void tst_QCheckBox::stateChanged() +void tst_QCheckBox::checkStateChanged() { - QSignalSpy stateChangedSpy(testWidget, SIGNAL(stateChanged(int))); - connect(testWidget, SIGNAL(stateChanged(int)), this, SLOT(onStateChanged(int))); - cur_state = -1; - testWidget->setChecked( true ); - qApp->processEvents(); - QCOMPARE( cur_state, (int)2 ); - - cur_state = -1; - testWidget->setChecked( false ); - qApp->processEvents(); - QCOMPARE( cur_state, (int)0 ); - - cur_state = -1; - testWidget->setCheckState(Qt::PartiallyChecked); - qApp->processEvents(); - QCOMPARE( cur_state, (int)1 ); - - QCOMPARE(stateChangedSpy.count(), 3); - testWidget->setCheckState(Qt::PartiallyChecked); - qApp->processEvents(); - QCOMPARE(stateChangedSpy.count(), 3); + QCheckBox testWidget; + QCOMPARE(testWidget.checkState(), Qt::Unchecked); + + Qt::CheckState cur_state = Qt::Unchecked; + QSignalSpy checkStateChangedSpy(&testWidget, &QCheckBox::checkStateChanged); +#if QT_DEPRECATED_SINCE(6, 9) + QT_IGNORE_DEPRECATIONS( + QSignalSpy stateChangedSpy(&testWidget, &QCheckBox::stateChanged); + ) +#endif + connect(&testWidget, &QCheckBox::checkStateChanged, this, [&](auto state) { cur_state = state; }); + testWidget.setChecked(true); + QTRY_COMPARE(checkStateChangedSpy.size(), 1); +#if QT_DEPRECATED_SINCE(6, 9) + QCOMPARE(stateChangedSpy.size(), 1); +#endif + QCOMPARE(cur_state, Qt::Checked); + QCOMPARE(testWidget.checkState(), Qt::Checked); + + testWidget.setChecked(false); + QTRY_COMPARE(checkStateChangedSpy.size(), 2); +#if QT_DEPRECATED_SINCE(6, 9) + QCOMPARE(stateChangedSpy.size(), 2); +#endif + QCOMPARE(cur_state, Qt::Unchecked); + QCOMPARE(testWidget.checkState(), Qt::Unchecked); + + testWidget.setCheckState(Qt::PartiallyChecked); + QTRY_COMPARE(checkStateChangedSpy.size(), 3); +#if QT_DEPRECATED_SINCE(6, 9) + QCOMPARE(stateChangedSpy.size(), 3); +#endif + QCOMPARE(cur_state, Qt::PartiallyChecked); + QCOMPARE(testWidget.checkState(), Qt::PartiallyChecked); + + testWidget.setCheckState(Qt::PartiallyChecked); + QCoreApplication::processEvents(); + QCOMPARE(checkStateChangedSpy.size(), 3); +#if QT_DEPRECATED_SINCE(6, 9) + QCOMPARE(stateChangedSpy.size(), 3); +#endif } void tst_QCheckBox::isToggleButton() { - QVERIFY( testWidget->isCheckable() ); + QCheckBox testWidget; + QVERIFY(testWidget.isCheckable()); } void tst_QCheckBox::foregroundRole() { - QCOMPARE(testWidget->foregroundRole(), QPalette::WindowText); + QCheckBox testWidget; + QCOMPARE(testWidget.foregroundRole(), QPalette::WindowText); } void tst_QCheckBox::minimumSizeHint() { + QCheckBox testWidget; QCheckBox box(tr("CheckBox's sizeHint is the same as it's minimumSizeHint")); QCOMPARE(box.sizeHint(), box.minimumSizeHint()); } |