aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qqmlmetatype
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qml/qqmlmetatype')
-rw-r--r--tests/auto/qml/qqmlmetatype/data/testExternalEnums.qml12
-rw-r--r--tests/auto/qml/qqmlmetatype/tst_qqmlmetatype.cpp33
2 files changed, 45 insertions, 0 deletions
diff --git a/tests/auto/qml/qqmlmetatype/data/testExternalEnums.qml b/tests/auto/qml/qqmlmetatype/data/testExternalEnums.qml
new file mode 100644
index 0000000000..8eb5616ab2
--- /dev/null
+++ b/tests/auto/qml/qqmlmetatype/data/testExternalEnums.qml
@@ -0,0 +1,12 @@
+import QtQml 2.2
+import x.y.z 1.0
+
+QtObject {
+ function x() {
+ eval("1");
+ return ExternalEnums.DocumentsLocation;
+ }
+
+ property var a: ExternalEnums.DocumentsLocation
+ property var b: x()
+}
diff --git a/tests/auto/qml/qqmlmetatype/tst_qqmlmetatype.cpp b/tests/auto/qml/qqmlmetatype/tst_qqmlmetatype.cpp
index 19cda21685..9fbd719d7b 100644
--- a/tests/auto/qml/qqmlmetatype/tst_qqmlmetatype.cpp
+++ b/tests/auto/qml/qqmlmetatype/tst_qqmlmetatype.cpp
@@ -26,6 +26,7 @@
**
****************************************************************************/
+#include <qstandardpaths.h>
#include <qtest.h>
#include <qqml.h>
#include <qqmlprivate.h>
@@ -53,6 +54,7 @@ private slots:
void invalidQmlTypeName();
void registrationType();
void compositeType();
+ void externalEnums();
void isList();
@@ -70,6 +72,20 @@ public:
};
QML_DECLARE_TYPE(TestType);
+class ExternalEnums : public QObject
+{
+ Q_OBJECT
+ Q_ENUMS(QStandardPaths::StandardLocation QStandardPaths::LocateOptions)
+public:
+ ExternalEnums(QObject *parent = nullptr) : QObject(parent) {}
+
+ static QObject *create(QQmlEngine *engine, QJSEngine *scriptEngine) {
+ Q_UNUSED(scriptEngine);
+ return new ExternalEnums(engine);
+ }
+};
+QML_DECLARE_TYPE(ExternalEnums);
+
QObject *testTypeProvider(QQmlEngine *engine, QJSEngine *scriptEngine)
{
Q_UNUSED(engine);
@@ -271,6 +287,23 @@ void tst_qqmlmetatype::compositeType()
QCOMPARE(type->sourceUrl(), testFileUrl("ImplicitType.qml"));
}
+void tst_qqmlmetatype::externalEnums()
+{
+ QQmlEngine engine;
+ qmlRegisterSingletonType<ExternalEnums>("x.y.z", 1, 0, "ExternalEnums", ExternalEnums::create);
+
+ QQmlComponent c(&engine, testFileUrl("testExternalEnums.qml"));
+ QObject *obj = c.create();
+ QVERIFY(obj);
+ QVariant a = obj->property("a");
+ QCOMPARE(a.type(), QVariant::Int);
+ QCOMPARE(a.toInt(), int(QStandardPaths::DocumentsLocation));
+ QVariant b = obj->property("b");
+ QCOMPARE(b.type(), QVariant::Int);
+ QCOMPARE(b.toInt(), int(QStandardPaths::DocumentsLocation));
+
+}
+
QTEST_MAIN(tst_qqmlmetatype)
#include "tst_qqmlmetatype.moc"