diff options
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/qml/qqmlmetatype/data/testExternalEnums.qml | 12 | ||||
-rw-r--r-- | tests/auto/qml/qqmlmetatype/tst_qqmlmetatype.cpp | 33 |
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" |