diff --git a/tests/checkboxes/main.cpp b/tests/checkboxes/main.cpp index 2895344b..234753c0 100644 --- a/tests/checkboxes/main.cpp +++ b/tests/checkboxes/main.cpp @@ -46,5 +46,164 @@ void CheckBoxTests::triState() { QVERIFY( t->isTriState() == true ); } +void CheckBoxTests::higherGroupUpdatesLower() { + auto t = new QskCheckBox( root ); + auto t1 = new QskCheckBox( root ); + auto t2 = new QskCheckBox( root ); + auto t3 = new QskCheckBox( root ); + + t->addToGroup( t1 ); + t->addToGroup( t2 ); + t->addToGroup( t3 ); + + QVERIFY( t->isChecked() == false ); + QVERIFY( t1->isChecked() == false ); + QVERIFY( t2->isChecked() == false ); + QVERIFY( t3->isChecked() == false ); + + t->setChecked( true ); + QVERIFY( t->isChecked() ); + QVERIFY( t1->isChecked() ); + QVERIFY( t2->isChecked() ); + QVERIFY( t3->isChecked() ); + + t->setChecked( false ); + QVERIFY( t->isChecked() == false ); + QVERIFY( t1->isChecked() == false ); + QVERIFY( t2->isChecked() == false ); + QVERIFY( t3->isChecked() == false ); + +} +void CheckBoxTests::lowerGroupUpdatesHigher() { + auto t = new QskCheckBox( root ); + + auto t1 = new QskCheckBox( root ); + auto t2 = new QskCheckBox( root ); + + t->addToGroup( t1 ); + t->addToGroup( t2 ); + + t1->setChecked( true ); + QVERIFY( t->isChecked() ); + QVERIFY( t->isTriState() ); + QVERIFY( t->checkState() == Qt::CheckState::PartiallyChecked ); + QVERIFY( t1->isChecked() == true ); + QVERIFY( t2->isChecked() == false ); + + + t2->setChecked( true ); + QVERIFY( t->isChecked() ); + QVERIFY( t->isTriState() ); + QVERIFY( t->checkState() == Qt::CheckState::Checked ); + QVERIFY( t1->isChecked() == true ); + QVERIFY( t2->isChecked() == true ); + + t1->setChecked( false ); + QVERIFY( t->isChecked() ); + QVERIFY( t->isTriState() ); + QVERIFY( t->checkState() == Qt::CheckState::PartiallyChecked ); + QVERIFY( t1->isChecked() == false ); + QVERIFY( t2->isChecked() == true ); + + t2->setChecked( false ); + QVERIFY( t->isChecked() == false ); + QVERIFY( t->isTriState() ); + QVERIFY( t->checkState() == Qt::CheckState::Unchecked ); + QVERIFY( t1->isChecked() == false ); + QVERIFY( t2->isChecked() == false ); +} + +void CheckBoxTests::addToGroup() { + auto t = new QskCheckBox( root ); + + auto t1 = new QskCheckBox( root ); + auto t2 = new QskCheckBox( root ); + + t->addToGroup( t1 ); + t->addToGroup( t2 ); + + t->setChecked( true ); + QVERIFY( t->isChecked() ); + QVERIFY( t1->isChecked() ); + QVERIFY( t2->isChecked() ); + + auto t3 = new QskCheckBox( root ); + t->addToGroup( t3 ); + + QVERIFY( t->checkState() == Qt::CheckState::PartiallyChecked ); + + t3->setChecked( true ); + QVERIFY( t->checkState() == Qt::CheckState::Checked ); + auto t4 = new QskCheckBox( root ); + t4->setChecked( true ); + t->addToGroup( t4 ); + QVERIFY( t->checkState() == Qt::CheckState::Checked ); +} + +void CheckBoxTests::addPartlyToGroup() { + auto t = new QskCheckBox( root ); + + auto t1 = new QskCheckBox( root ); + auto t1a = new QskCheckBox( root ); + auto t1b = new QskCheckBox( root ); + + t1->addToGroup( t1a ); + t1->addToGroup( t1b ); + + t1a->setChecked( true ); + + QVERIFY( t1->checkState() == Qt::CheckState::PartiallyChecked ); + t->addToGroup( t1 ); + QVERIFY( t1->checkState() == Qt::CheckState::PartiallyChecked ); +} + + +void CheckBoxTests::removeFromGroup() { + auto t = new QskCheckBox( root ); + + auto t1 = new QskCheckBox( root ); + auto t2 = new QskCheckBox( root ); + + t->addToGroup( t1 ); + t->addToGroup( t2 ); + + t2->setChecked( true ); + QVERIFY( t->checkState() == Qt::CheckState::PartiallyChecked ); + + t->removeFromGroup( t2 ); + QVERIFY( t->isChecked() == false ); +} + +void CheckBoxTests::groupMemberGetsDeleted() { + auto t = new QskCheckBox( root ); + auto t1 = new QskCheckBox( root ); + auto t2 = new QskCheckBox( root ); + + t->addToGroup( t1 ); + t->addToGroup( t2 ); + + t2->setChecked( true ); + QVERIFY( t->checkState() == Qt::CheckState::PartiallyChecked ); + + delete t2; + QVERIFY( t->isChecked() == false ); +} + +void CheckBoxTests::addTwiceToSameGroup() { + auto t = new QskCheckBox( root ); + + auto t1 = new QskCheckBox( root ); + auto t2 = new QskCheckBox( root ); + + t->addToGroup( t1 ); + t->addToGroup( t1 ); + t->removeFromGroup( t1 ); + + t->addToGroup( t2 ); + + t2->setChecked( true ); + + QVERIFY( t->checkState() == Qt::CheckState::Checked ); +} #include "moc_main.cpp" diff --git a/tests/checkboxes/main.h b/tests/checkboxes/main.h index b0efc3c3..5f5b5e93 100644 --- a/tests/checkboxes/main.h +++ b/tests/checkboxes/main.h @@ -17,6 +17,13 @@ class CheckBoxTests : public QObject void click(); void toggle(); void triState(); + void higherGroupUpdatesLower(); + void lowerGroupUpdatesHigher(); + void addToGroup(); + void addPartlyToGroup(); + void removeFromGroup(); + void groupMemberGetsDeleted(); + void addTwiceToSameGroup(); }; QTEST_MAIN(CheckBoxTests)