diff options
Diffstat (limited to 'tests/auto/quick/qquickitem/tst_qquickitem.cpp')
-rw-r--r-- | tests/auto/quick/qquickitem/tst_qquickitem.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/auto/quick/qquickitem/tst_qquickitem.cpp b/tests/auto/quick/qquickitem/tst_qquickitem.cpp index 40327b0666..5993008c4a 100644 --- a/tests/auto/quick/qquickitem/tst_qquickitem.cpp +++ b/tests/auto/quick/qquickitem/tst_qquickitem.cpp @@ -52,6 +52,7 @@ #include <QQmlEngine> #include "../../shared/util.h" #include "../shared/viewtestutil.h" +#include <QSignalSpy> class TestItem : public QQuickItem { @@ -172,6 +173,8 @@ private slots: void visualParentOwnership(); void visualParentOwnershipWindow(); + void testSGInitializeAndInvalidate(); + private: enum PaintOrderOp { @@ -1883,6 +1886,37 @@ void tst_qquickitem::visualParentOwnershipWindow() } } +void tst_qquickitem::testSGInitializeAndInvalidate() +{ + for (int i=0; i<2; ++i) { + QScopedPointer<QQuickView> view(new QQuickView()); + + QQuickItem *item = new QQuickItem(); + + int expected; + if (i == 0) { + // First iteration, item has contents and should get signals + expected = 1; + item->setFlag(QQuickItem::ItemHasContents, true); + } else { + // Second iteration, item does not have content and will not get signals + expected = 0; + } + + QSignalSpy initializeSpy(item, SIGNAL(sceneGraphInitialized())); + QSignalSpy invalidateSpy(item, SIGNAL(sceneGraphInvalidated())); + item->setParentItem(view->contentItem()); + view->show(); + + QVERIFY(QTest::qWaitForWindowExposed(view.data())); + QCOMPARE(initializeSpy.size(), expected); + + delete view.take(); + QCOMPARE(invalidateSpy.size(), expected); + } + +} + QTEST_MAIN(tst_qquickitem) #include "tst_qquickitem.moc" |