diff options
Diffstat (limited to 'tests/auto/qml/qqmlecmascript/data/handleReferenceManagement.dynprop.2.qml')
| -rw-r--r-- | tests/auto/qml/qqmlecmascript/data/handleReferenceManagement.dynprop.2.qml | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/auto/qml/qqmlecmascript/data/handleReferenceManagement.dynprop.2.qml b/tests/auto/qml/qqmlecmascript/data/handleReferenceManagement.dynprop.2.qml new file mode 100644 index 0000000000..00f09e159c --- /dev/null +++ b/tests/auto/qml/qqmlecmascript/data/handleReferenceManagement.dynprop.2.qml @@ -0,0 +1,31 @@ +import QtQuick 2.0 +import Qt.test.qobjectApi 1.0 as QObjectApi + +Item { + property bool success: true + property Item testProp: null + + // first we create an object and reference it via a dynamic variant property + function createReference() { + var c = Qt.createComponent("HRMDPComponent.qml"); + testProp = c.createObject(null); // QML ownership. + } + + // after a gc, it should not have been collected. + function ensureReference() { + if (testProp == null) success = false; // should not have triggered delete notify / zeroed testProp value + if (testProp.variantCanary != 5) success = false; // should not have deleted vmemo of object referenced by testProp + if (testProp.varCanary != 12) success = false; // should not have collected vmemo vmeProperties + if (QObjectApi.qobjectTestWritableProperty != 42) success = false; // should not have been set to 43. + } + + // then we remove the reference. + function removeReference() { + testProp = null; // allow original object to be released. + } + + // after a gc (and deferred deletion process) the object should be gone + function ensureDeletion() { + if (QObjectApi.qobjectTestWritableProperty != 43) success = false; // should have been set to 43. + } +} |
