diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2011-10-05 18:15:03 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-10-06 07:55:45 +0200 |
commit | 6028d8ebceccc4edd7c31ba0d16773ae866336c3 (patch) | |
tree | 630de9c420b10b7f3b4146f2847962a878e915d4 /tests/auto/declarative/qdeclarativeincubator/tst_qdeclarativeincubator.cpp | |
parent | 466fe00e80fe80c0babc7b895882926c0a34b785 (diff) |
Always delete object if incubator is cancelled
Change-Id: Iad04340bac9d1345069e540e6bf9dbf671ce9226
Reviewed-on: http://codereview.qt-project.org/6088
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
Diffstat (limited to 'tests/auto/declarative/qdeclarativeincubator/tst_qdeclarativeincubator.cpp')
-rw-r--r-- | tests/auto/declarative/qdeclarativeincubator/tst_qdeclarativeincubator.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/auto/declarative/qdeclarativeincubator/tst_qdeclarativeincubator.cpp b/tests/auto/declarative/qdeclarativeincubator/tst_qdeclarativeincubator.cpp index e7fc77784b..f870ffb5cd 100644 --- a/tests/auto/declarative/qdeclarativeincubator/tst_qdeclarativeincubator.cpp +++ b/tests/auto/declarative/qdeclarativeincubator/tst_qdeclarativeincubator.cpp @@ -77,6 +77,7 @@ private slots: void noIncubationController(); void forceCompletion(); void setInitialState(); + void clearDuringCompletion(); private: QDeclarativeIncubationController controller; @@ -395,6 +396,36 @@ void tst_qdeclarativeincubator::setInitialState() } } +void tst_qdeclarativeincubator::clearDuringCompletion() +{ + CompletionRegisteringType::clearMe(); + SelfRegisteringType::clearMe(); + + QDeclarativeComponent component(&engine, TEST_FILE("clearDuringCompletion.qml")); + QVERIFY(component.isReady()); + + QDeclarativeIncubator incubator; + component.create(incubator); + + QCOMPARE(incubator.status(), QDeclarativeIncubator::Loading); + QVERIFY(CompletionRegisteringType::me() == 0); + + while (CompletionRegisteringType::me() == 0 && incubator.isLoading()) { + bool b = false; + controller.incubateWhile(&b); + } + + QVERIFY(CompletionRegisteringType::me() != 0); + QVERIFY(SelfRegisteringType::me() != 0); + QVERIFY(incubator.isLoading()); + + QPointer<QObject> srt = SelfRegisteringType::me(); + + incubator.clear(); + QVERIFY(incubator.isNull()); + QVERIFY(srt.isNull()); +} + QTEST_MAIN(tst_qdeclarativeincubator) #include "tst_qdeclarativeincubator.moc" |