--- /dev/null
+import QtQuick 1.0
+
+QtObject {
+ id: root
+
+ property QtObject objectProperty
+
+ property Component c: Component {
+ id: componentObject
+ QtObject {
+ }
+ }
+
+ function create() {
+ objectProperty = c.createObject(root);
+ }
+
+ function destroy() {
+ objectProperty.destroy();
+ }
+}
*/
void tst_qdeclarativeecmascript::dynamicDestruction()
{
+ {
QDeclarativeComponent component(&engine, TEST_FILE("dynamicDeletion.qml"));
QDeclarativeGuard<MyQmlObject> object = qobject_cast<MyQmlObject*>(component.create());
QVERIFY(object != 0);
QTest::qWait(0);
QCoreApplication::instance()->processEvents(QEventLoop::DeferredDeletion);
QVERIFY(!object);
+ }
+
+ {
+ QDeclarativeComponent component(&engine, TEST_FILE("dynamicDeletion.2.qml"));
+ QObject *o = component.create();
+ QVERIFY(o != 0);
+
+ QVERIFY(qvariant_cast<QObject*>(o->property("objectProperty")) == 0);
+
+ QMetaObject::invokeMethod(o, "create");
+
+ QVERIFY(qvariant_cast<QObject*>(o->property("objectProperty")) != 0);
+
+ QMetaObject::invokeMethod(o, "destroy");
+
+ QCoreApplication::instance()->processEvents(QEventLoop::DeferredDeletion);
+
+ QVERIFY(qvariant_cast<QObject*>(o->property("objectProperty")) == 0);
+
+ delete o;
+ }
}
/*