[Ktutorial-commits] SF.net SVN: ktutorial:[279] trunk/ktutorial/ktutorial-library/tests/view/ Windo
Status: Alpha
Brought to you by:
danxuliu
From: <dan...@us...> - 2010-10-29 19:41:26
|
Revision: 279 http://ktutorial.svn.sourceforge.net/ktutorial/?rev=279&view=rev Author: danxuliu Date: 2010-10-29 19:41:20 +0000 (Fri, 29 Oct 2010) Log Message: ----------- Refactor tests: use QPointer instead of QSignalSpy with destroyed(QObject*) signal, and extract checks to an assertWindow(QWidget* window, QWidget* expectedParent) method. Modified Paths: -------------- trunk/ktutorial/ktutorial-library/tests/view/WindowOnTopEnforcerTest.cpp Modified: trunk/ktutorial/ktutorial-library/tests/view/WindowOnTopEnforcerTest.cpp =================================================================== --- trunk/ktutorial/ktutorial-library/tests/view/WindowOnTopEnforcerTest.cpp 2010-10-27 09:53:15 UTC (rev 278) +++ trunk/ktutorial/ktutorial-library/tests/view/WindowOnTopEnforcerTest.cpp 2010-10-29 19:41:20 UTC (rev 279) @@ -48,6 +48,8 @@ void queueAssertParent(QWidget* widget, QWidget* parent, int timeToWait); void queueAssertIsVisibleWindow(QWidget* widget, int timeToWait); + void assertWindow(QWidget* window, QWidget* expectedParent) const; + }; void WindowOnTopEnforcerTest::testConstructor() { @@ -61,28 +63,25 @@ QWidget* window = new QWidget(); window->show(); - QWidget* windowToKeepOnTop = new QWidget(window); + QPointer<QWidget> windowToKeepOnTop = new QWidget(window); windowToKeepOnTop->setWindowFlags(Qt::Window); windowToKeepOnTop->show(); WindowOnTopEnforcer* enforcer = new WindowOnTopEnforcer(windowToKeepOnTop); enforcer->setBaseWindow(window); - QSignalSpy destroyedSpy(windowToKeepOnTop, SIGNAL(destroyed(QObject*))); + assertWindow(windowToKeepOnTop, window); delete window; - QCOMPARE(destroyedSpy.count(), 1); - QVariant argument = destroyedSpy.at(0).at(0); - QCOMPARE(argument.userType(), (int)QMetaType::QObjectStar); - QCOMPARE(qvariant_cast<QObject*>(argument), windowToKeepOnTop); + QVERIFY(!windowToKeepOnTop); } void WindowOnTopEnforcerTest::testChildWindow() { QWidget* window = new QWidget(); window->show(); - QWidget* windowToKeepOnTop = new QWidget(window); + QPointer<QWidget> windowToKeepOnTop = new QWidget(window); windowToKeepOnTop->setWindowFlags(Qt::Window); windowToKeepOnTop->show(); @@ -93,31 +92,22 @@ childWindow->setWindowFlags(Qt::Window); childWindow->show(); - QCOMPARE(windowToKeepOnTop->parentWidget(), window); - QVERIFY(windowToKeepOnTop->isVisible()); - QVERIFY(windowToKeepOnTop->windowFlags() & Qt::Window); + assertWindow(windowToKeepOnTop, window); delete childWindow; - QCOMPARE(windowToKeepOnTop->parentWidget(), window); - QVERIFY(windowToKeepOnTop->isVisible()); - QVERIFY(windowToKeepOnTop->windowFlags() & Qt::Window); + assertWindow(windowToKeepOnTop, window); - QSignalSpy destroyedSpy(windowToKeepOnTop, SIGNAL(destroyed(QObject*))); - delete window; - QCOMPARE(destroyedSpy.count(), 1); - QVariant argument = destroyedSpy.at(0).at(0); - QCOMPARE(argument.userType(), (int)QMetaType::QObjectStar); - QCOMPARE(qvariant_cast<QObject*>(argument), windowToKeepOnTop); + QVERIFY(!windowToKeepOnTop); } void WindowOnTopEnforcerTest::testModalDialog() { QWidget* window = new QWidget(); window->show(); - QWidget* windowToKeepOnTop = new QWidget(window); + QPointer<QWidget> windowToKeepOnTop = new QWidget(window); windowToKeepOnTop->setWindowFlags(Qt::Window); windowToKeepOnTop->show(); @@ -137,25 +127,18 @@ timerAccept.start(); modalDialog->exec(); - QCOMPARE(windowToKeepOnTop->parentWidget(), window); - QVERIFY(windowToKeepOnTop->isVisible()); - QVERIFY(windowToKeepOnTop->windowFlags() & Qt::Window); + assertWindow(windowToKeepOnTop, window); - QSignalSpy destroyedSpy(windowToKeepOnTop, SIGNAL(destroyed(QObject*))); - delete window; - QCOMPARE(destroyedSpy.count(), 1); - QVariant argument = destroyedSpy.at(0).at(0); - QCOMPARE(argument.userType(), (int)QMetaType::QObjectStar); - QCOMPARE(qvariant_cast<QObject*>(argument), windowToKeepOnTop); + QVERIFY(!windowToKeepOnTop); } void WindowOnTopEnforcerTest::testNestedModalDialog() { QWidget* window = new QWidget(); window->show(); - QWidget* windowToKeepOnTop = new QWidget(window); + QPointer<QWidget> windowToKeepOnTop = new QWidget(window); windowToKeepOnTop->setWindowFlags(Qt::Window); windowToKeepOnTop->show(); @@ -192,25 +175,18 @@ timerAcceptNested.start(); modalDialog->exec(); - QCOMPARE(windowToKeepOnTop->parentWidget(), window); - QVERIFY(windowToKeepOnTop->isVisible()); - QVERIFY(windowToKeepOnTop->windowFlags() & Qt::Window); + assertWindow(windowToKeepOnTop, window); - QSignalSpy destroyedSpy(windowToKeepOnTop, SIGNAL(destroyed(QObject*))); - delete window; - QCOMPARE(destroyedSpy.count(), 1); - QVariant argument = destroyedSpy.at(0).at(0); - QCOMPARE(argument.userType(), (int)QMetaType::QObjectStar); - QCOMPARE(qvariant_cast<QObject*>(argument), windowToKeepOnTop); + QVERIFY(!windowToKeepOnTop); } void WindowOnTopEnforcerTest::testSeveralModalDialogs() { QWidget* window = new QWidget(); window->show(); - QWidget* windowToKeepOnTop = new QWidget(window); + QPointer<QWidget> windowToKeepOnTop = new QWidget(window); windowToKeepOnTop->setWindowFlags(Qt::Window); windowToKeepOnTop->show(); @@ -266,9 +242,7 @@ timerAcceptNested2.start(); modalDialog->exec(); - QCOMPARE(windowToKeepOnTop->parentWidget(), window); - QVERIFY(windowToKeepOnTop->isVisible()); - QVERIFY(windowToKeepOnTop->windowFlags() & Qt::Window); + assertWindow(windowToKeepOnTop, window); QDialog* modalDialog2 = new QDialog(window); QDialog* nestedModalDialog3 = new QDialog(modalDialog); @@ -300,25 +274,18 @@ timerAcceptNested3.start(); modalDialog2->exec(); - QCOMPARE(windowToKeepOnTop->parentWidget(), window); - QVERIFY(windowToKeepOnTop->isVisible()); - QVERIFY(windowToKeepOnTop->windowFlags() & Qt::Window); + assertWindow(windowToKeepOnTop, window); - QSignalSpy destroyedSpy(windowToKeepOnTop, SIGNAL(destroyed(QObject*))); - delete window; - QCOMPARE(destroyedSpy.count(), 1); - QVariant argument = destroyedSpy.at(0).at(0); - QCOMPARE(argument.userType(), (int)QMetaType::QObjectStar); - QCOMPARE(qvariant_cast<QObject*>(argument), windowToKeepOnTop); + QVERIFY(!windowToKeepOnTop); } void WindowOnTopEnforcerTest::testNestedModalDialogOnChildWindow() { QWidget* window = new QWidget(); window->show(); - QWidget* windowToKeepOnTop = new QWidget(window); + QPointer<QWidget> windowToKeepOnTop = new QWidget(window); windowToKeepOnTop->setWindowFlags(Qt::Window); windowToKeepOnTop->show(); @@ -342,18 +309,11 @@ timerAccept.start(); nestedModalDialog->exec(); - QCOMPARE(windowToKeepOnTop->parentWidget(), window); - QVERIFY(windowToKeepOnTop->isVisible()); - QVERIFY(windowToKeepOnTop->windowFlags() & Qt::Window); + assertWindow(windowToKeepOnTop, window); - QSignalSpy destroyedSpy(windowToKeepOnTop, SIGNAL(destroyed(QObject*))); - delete window; - QCOMPARE(destroyedSpy.count(), 1); - QVariant argument = destroyedSpy.at(0).at(0); - QCOMPARE(argument.userType(), (int)QMetaType::QObjectStar); - QCOMPARE(qvariant_cast<QObject*>(argument), windowToKeepOnTop); + QVERIFY(!windowToKeepOnTop); } /////////////////////////////////// Helpers //////////////////////////////////// @@ -412,8 +372,16 @@ QTimer::singleShot(timeToWait, helper, SLOT(deleteLater())); } +void WindowOnTopEnforcerTest::assertWindow(QWidget* window, + QWidget* expectedParent) const { + QVERIFY(window); + QCOMPARE(window->parentWidget(), expectedParent); + QVERIFY(window->isVisible()); + QVERIFY(window->windowFlags() & Qt::Window); } +} + QTEST_MAIN(view::WindowOnTopEnforcerTest) #include "WidgetOnTopEnforcerTest.moc" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |