Add QskHirachicalGroup tests

This commit is contained in:
Clemens Manert 2022-04-26 18:33:32 +02:00
parent c664c505e7
commit 43c8dc80f8
No known key found for this signature in database
GPG Key ID: 9197EAE8F85E3A18
4 changed files with 233 additions and 1 deletions

View File

@ -0,0 +1,191 @@
#include "HirachicalGroupTests.h"
#include <QskCheckBox.h>
#include <QskTristateCheckBox.h>
#include <QskHirachicalGroup.h>
void HirachicalGroupTests::init()
{
root = new QskControl();
}
void HirachicalGroupTests::cleanup()
{
delete root;
}
void HirachicalGroupTests::higherGroupUpdatesLower()
{
auto t = new QskTristateCheckBox( root );
auto group = new QskHirachicalGroup( t );
auto c1 = new QskCheckBox( root );
auto c2 = new QskCheckBox( root );
auto c3 = new QskCheckBox( root );
group->add( c1 );
group->add( c2 );
group->add( c3 );
QVERIFY( t->isChecked() == false );
QVERIFY( c1->isChecked() == false );
QVERIFY( c2->isChecked() == false );
QVERIFY( c3->isChecked() == false );
t->setChecked( true );
QVERIFY( t->isChecked() );
QVERIFY( c1->isChecked() );
QVERIFY( c2->isChecked() );
QVERIFY( c3->isChecked() );
t->setChecked( false );
QVERIFY( t->isChecked() == false );
QVERIFY( c1->isChecked() == false );
QVERIFY( c2->isChecked() == false );
QVERIFY( c3->isChecked() == false );
}
void HirachicalGroupTests::lowerGroupUpdatesHigher()
{
auto t = new QskTristateCheckBox( root );
auto group = new QskHirachicalGroup( t );
auto c1 = new QskCheckBox( root );
auto c2 = new QskCheckBox( root );
group->add( c1 );
group->add( c2 );
c1->setChecked( true );
QVERIFY( t->isChecked() );
QVERIFY( t->checkState() == Qt::CheckState::PartiallyChecked );
QVERIFY( c1->isChecked() == true );
QVERIFY( c2->isChecked() == false );
c2->setChecked( true );
QVERIFY( t->isChecked() );
QVERIFY( t->checkState() == Qt::CheckState::Checked );
QVERIFY( c1->isChecked() == true );
QVERIFY( c2->isChecked() == true );
c1->setChecked( false );
QVERIFY( t->isChecked() );
QVERIFY( t->checkState() == Qt::CheckState::PartiallyChecked );
QVERIFY( c1->isChecked() == false );
QVERIFY( c2->isChecked() == true );
c2->setChecked( false );
QVERIFY( t->isChecked() == false );
QVERIFY( t->checkState() == Qt::CheckState::Unchecked );
QVERIFY( c1->isChecked() == false );
QVERIFY( c2->isChecked() == false );
}
void HirachicalGroupTests::addToGroup()
{
auto t = new QskTristateCheckBox( root );
auto group = new QskHirachicalGroup( t );
auto c1 = new QskCheckBox( root );
auto c2 = new QskCheckBox( root );
group->add( c1 );
group->add( c2 );
t->setChecked( true );
QVERIFY( t->isChecked() );
QVERIFY( c1->isChecked() );
QVERIFY( c2->isChecked() );
auto c3 = new QskCheckBox( root );
group->add( c3 );
( t->checkState() );
c3->setChecked( true );
QVERIFY( t->checkState() == Qt::CheckState::Checked );
auto t4 = new QskCheckBox( root );
t4->setChecked( true );
group->add( t4 );
QVERIFY( t->checkState() == Qt::CheckState::Checked );
}
void HirachicalGroupTests::addPartlyToGroup() {
auto t1 = new QskTristateCheckBox( root );
auto t2 = new QskTristateCheckBox( root );
auto group1 = new QskHirachicalGroup( t1 );
auto group2 = new QskHirachicalGroup( t2 );
auto c1 = new QskCheckBox( root );
auto c2a = new QskCheckBox( root );
auto c2b = new QskCheckBox( root );
group1->add( c1 );
group1->add( t2 );
group2->add( c2a );
group2->add( c2b );
c2a->setChecked( true );
QVERIFY( t1->checkState() == Qt::CheckState::PartiallyChecked );
QVERIFY( t2->checkState() == Qt::CheckState::PartiallyChecked );
}
void HirachicalGroupTests::removeFromGroup()
{
auto t = new QskTristateCheckBox( root );
auto group = new QskHirachicalGroup( t );
auto c1 = new QskCheckBox( root );
auto c2 = new QskCheckBox( root );
group->add( c1 );
group->add( c2 );
c2->setChecked( true );
QVERIFY( t->checkState() == Qt::CheckState::PartiallyChecked );
group->remove( c2 );
QVERIFY( t->isChecked() == false );
}
void HirachicalGroupTests::groupMemberGetsDeleted()
{
auto t = new QskTristateCheckBox( root );
auto group = new QskHirachicalGroup( t );
auto c1 = new QskCheckBox( root );
auto c2 = new QskCheckBox( root );
group->add( c1 );
group->add( c2 );
c2->setChecked( true );
QVERIFY( t->checkState() == Qt::CheckState::PartiallyChecked );
delete c2;
QVERIFY( t->isChecked() == false );
}
void HirachicalGroupTests::addTwiceToSameGroup()
{
auto t = new QskTristateCheckBox( root );
auto group = new QskHirachicalGroup( t );
auto c1 = new QskCheckBox( root );
auto c2 = new QskCheckBox( root );
group->add( c1 );
group->add( c1 );
group->remove( c1 );
group->add( c2 );
c2->setChecked( true );
QVERIFY( t->checkState() == Qt::CheckState::Checked );
}
#include "moc_HirachicalGroupTests.cpp"

View File

@ -0,0 +1,25 @@
#pragma once
#include <qobject.h>
#include <QtTest/QtTest>
class QskControl;
class HirachicalGroupTests : public QObject
{
Q_OBJECT
QskControl * root;
private Q_SLOTS:
void init();
void cleanup();
void higherGroupUpdatesLower();
void lowerGroupUpdatesHigher();
void addToGroup();
void addPartlyToGroup();
void removeFromGroup();
void groupMemberGetsDeleted();
void addTwiceToSameGroup();
};
QTEST_MAIN( HirachicalGroupTests )

View File

@ -0,0 +1,14 @@
CONFIG += qskexample
CONFIG += console
CONFIG += testcase
QT += testlib
HEADERS += \
HirachicalGroupTests.h
SOURCES += \
HirachicalGroupTests.cpp

View File

@ -1,4 +1,6 @@
TEMPLATE = subdirs TEMPLATE = subdirs
SUBDIRS += \ SUBDIRS += \
tristatecheckbox tristatecheckbox\
hirachicalgroup