aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/objectConversion.qml16
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp16
2 files changed, 32 insertions, 0 deletions
diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/objectConversion.qml b/tests/auto/declarative/qdeclarativeecmascript/data/objectConversion.qml
new file mode 100644
index 0000000000..67fc342db3
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativeecmascript/data/objectConversion.qml
@@ -0,0 +1,16 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 360
+ height: 360
+
+ function circularObject() {
+ var a = {}
+ var b = {}
+
+ a.test = 100;
+ a.c = b;
+ b.c = a;
+ return a;
+ }
+}
diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
index 537965ccf8..9200e0f5f2 100644
--- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
+++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
@@ -152,6 +152,7 @@ private slots:
void propertyChangeSlots();
void elementAssign();
void objectPassThroughSignals();
+ void objectConversion();
void booleanConversion();
void handleReferenceManagement();
void stringArg();
@@ -3314,6 +3315,21 @@ void tst_qdeclarativeecmascript::objectPassThroughSignals()
delete object;
}
+// QTBUG-21626
+void tst_qdeclarativeecmascript::objectConversion()
+{
+ QDeclarativeComponent component(&engine, TEST_FILE("objectConversion.qml"));
+
+ QObject *object = component.create();
+ QVERIFY(object != 0);
+ QVariant retn;
+ QMetaObject::invokeMethod(object, "circularObject", Q_RETURN_ARG(QVariant, retn));
+ QCOMPARE(retn.value<QVariantMap>().value("test"), QVariant(100));
+
+ delete object;
+}
+
+
// QTBUG-20242
void tst_qdeclarativeecmascript::booleanConversion()
{