aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/qobjectDerivedArgument.qml17
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp40
2 files changed, 57 insertions, 0 deletions
diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/qobjectDerivedArgument.qml b/tests/auto/declarative/qdeclarativeecmascript/data/qobjectDerivedArgument.qml
new file mode 100644
index 0000000000..bf4ab6fd7a
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativeecmascript/data/qobjectDerivedArgument.qml
@@ -0,0 +1,17 @@
+import QtQuick 2.0
+import Qt.test 1.0
+
+MyQmlObject {
+ id: root
+ stringProperty: 'hello'
+ property var child
+
+ property bool result: false
+
+ Component.onCompleted: {
+ child = invokable.createMyQmlObject('goodbye');
+
+ result = (invokable.getStringProperty(root) == 'hello') &&
+ (invokable.getStringProperty(child) == 'goodbye');
+ }
+}
diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
index 354087da8a..d30766f982 100644
--- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
+++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
@@ -235,6 +235,7 @@ private slots:
void rewriteMultiLineStrings();
void revisionErrors();
void revision();
+ void invokableWithQObjectDerived();
void automaticSemicolon();
void unaryExpression();
@@ -6017,6 +6018,45 @@ void tst_qdeclarativeecmascript::tryStatement()
}
}
+class CppInvokableWithQObjectDerived : public QObject
+{
+ Q_OBJECT
+public:
+ CppInvokableWithQObjectDerived() {}
+ ~CppInvokableWithQObjectDerived() {}
+
+ Q_INVOKABLE MyQmlObject *createMyQmlObject(QString data)
+ {
+ MyQmlObject *obj = new MyQmlObject();
+ obj->setStringProperty(data);
+ return obj;
+ }
+
+ Q_INVOKABLE QString getStringProperty(MyQmlObject *obj)
+ {
+ return obj->stringProperty();
+ }
+};
+
+void tst_qdeclarativeecmascript::invokableWithQObjectDerived()
+{
+ CppInvokableWithQObjectDerived invokable;
+
+ {
+ QDeclarativeEngine engine;
+ engine.rootContext()->setContextProperty("invokable", &invokable);
+
+ QDeclarativeComponent component(&engine, testFileUrl("qobjectDerivedArgument.qml"));
+
+ QObject *object = component.create();
+
+ QVERIFY(object != 0);
+ QVERIFY(object->property("result").value<bool>() == true);
+
+ delete object;
+ }
+}
+
QTEST_MAIN(tst_qdeclarativeecmascript)
#include "tst_qdeclarativeecmascript.moc"