diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2010-04-08 08:24:48 (GMT) |
---|---|---|
committer | Aaron Kennedy <aaron.kennedy@nokia.com> | 2010-04-08 08:24:48 (GMT) |
commit | 978c56d47a6436fab9ab239bc81cdbf245b9ab10 (patch) | |
tree | 9f53ad0dc50407baa554644db60f19e9a9e6f011 /tests/auto | |
parent | 3e299066d0270100331973ff202209c94cf362de (diff) | |
download | Qt-978c56d47a6436fab9ab239bc81cdbf245b9ab10.zip Qt-978c56d47a6436fab9ab239bc81cdbf245b9ab10.tar.gz Qt-978c56d47a6436fab9ab239bc81cdbf245b9ab10.tar.bz2 |
Don't crash when QML engine is deleted
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/declarative/qdeclarativeecmascript/data/deletedEngine.qml | 11 | ||||
-rw-r--r-- | tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp | 23 |
2 files changed, 34 insertions, 0 deletions
diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/deletedEngine.qml b/tests/auto/declarative/qdeclarativeecmascript/data/deletedEngine.qml new file mode 100644 index 0000000..6c538fe --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/deletedEngine.qml @@ -0,0 +1,11 @@ +import Qt 4.6 + +QtObject { + function calculate() { + return b * 13; + } + + property int a: calculate() + property int b: 3 +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp index f675801..72f14f9 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp +++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp @@ -138,6 +138,7 @@ private slots: void dynamicCreationCrash(); void regExpBug(); void nullObjectBinding(); + void deletedEngine(); void callQtInvokables(); private: @@ -2158,6 +2159,28 @@ void tst_qdeclarativeecmascript::nullObjectBinding() delete object; } +// Test that bindings don't evaluate once the engine has been destroyed +void tst_qdeclarativeecmascript::deletedEngine() +{ + QDeclarativeEngine *engine = new QDeclarativeEngine; + QDeclarativeComponent component(engine, TEST_FILE("deletedEngine.qml")); + + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("a").toInt(), 39); + object->setProperty("b", QVariant(9)); + QCOMPARE(object->property("a").toInt(), 117); + + delete engine; + + QCOMPARE(object->property("a").toInt(), 117); + object->setProperty("b", QVariant(10)); + QCOMPARE(object->property("a").toInt(), 117); + + delete object; +} + QTEST_MAIN(tst_qdeclarativeecmascript) #include "tst_qdeclarativeecmascript.moc" |