diff options
author | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2020-12-21 12:46:56 +0100 |
---|---|---|
committer | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2020-12-21 13:55:47 +0100 |
commit | 950c1925b167f6600e71bfc227b0395b1c83a03a (patch) | |
tree | dc327459ee8d61ce539aa9f096076337954b3da1 /tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp | |
parent | 56bdef94379479f27858dccc73a95614648735bb (diff) |
QCheckBox: cleanup autotest
Avoid possible memory leaks by creating the checkbox on the stack, adopt
coding style.
Change-Id: I25f8b9048c8318d2897fd942492254a036c3a706
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp')
-rw-r--r-- | tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp | 294 |
1 files changed, 116 insertions, 178 deletions
diff --git a/tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp b/tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp index 6dd4f8d2fe..0199262f4d 100644 --- a/tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp +++ b/tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp @@ -29,22 +29,13 @@ #include <QtTest/QtTest> - -#include "qcheckbox.h" -#include <qapplication.h> -#include <qpixmap.h> -#include <qdatetime.h> #include <qcheckbox.h> class tst_QCheckBox : public QObject { -Q_OBJECT - + Q_OBJECT private slots: void initTestCase(); - void cleanupTestCase(); - void init(); - void cleanup(); void setChecked(); void setTriState(); @@ -59,260 +50,207 @@ private slots: void stateChanged(); 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*/ ) -{ - toggle_count++; } // *************************************************** void tst_QCheckBox::setChecked() { - 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.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::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() { - 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 ); + QCheckBox testWidget; + int cur_state = -1; + QSignalSpy stateChangedSpy(&testWidget, &QCheckBox::stateChanged); + connect(&testWidget, &QCheckBox::stateChanged, this, [&](int state) { ++cur_state = state; }); + testWidget.setChecked(true); + QCoreApplication::processEvents(); + QCOMPARE(cur_state, 2); cur_state = -1; - testWidget->setChecked( false ); - qApp->processEvents(); - QCOMPARE( cur_state, (int)0 ); + testWidget.setChecked(false); + QCoreApplication::processEvents(); + QCOMPARE(cur_state, 0); cur_state = -1; - testWidget->setCheckState(Qt::PartiallyChecked); - qApp->processEvents(); - QCOMPARE( cur_state, (int)1 ); + testWidget.setCheckState(Qt::PartiallyChecked); + QCoreApplication::processEvents(); + QCOMPARE(cur_state, 1); QCOMPARE(stateChangedSpy.count(), 3); - testWidget->setCheckState(Qt::PartiallyChecked); - qApp->processEvents(); + testWidget.setCheckState(Qt::PartiallyChecked); + QCoreApplication::processEvents(); QCOMPARE(stateChangedSpy.count(), 3); } 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()); } |