diff options
author | Maximilian Goldstein <max.goldstein@qt.io> | 2021-02-09 14:29:24 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-02-22 14:20:19 +0000 |
commit | 0c029b420ea9b7631cf87d427c0821320064c01b (patch) | |
tree | 2f4a5fec2d7d135caa64df3cdb1619668288ecc2 /tests/auto | |
parent | 911191793f10b6c160b282b98e7cf585103ca47c (diff) |
Fix QJSValue singletons only supporting object types
Now primitives such as integers and strings should also work.
Fixes: QTBUG-85615
Change-Id: I201d1844b7272ca50e32f1e33e9ac357b5e68dfe
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
(cherry picked from commit 64102ae231317eb6f637304918e55153dadef72d)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp index 66beb839f0..3b527a8f50 100644 --- a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp +++ b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp @@ -352,6 +352,8 @@ private slots: void invalidInlineComponent(); void warnOnInjectedParameters(); + void qtbug_85615(); + private: QQmlEngine engine; QStringList defaultImportPathList; @@ -6206,6 +6208,46 @@ void tst_qqmllanguage::qtbug_86482() QCOMPARE(o->property("result").toString(), QStringLiteral("Hello world!")); } +void tst_qqmllanguage::qtbug_85615() +{ + qmlRegisterSingletonType("Test.Singleton", 1, 0, "SingletonString", [](QQmlEngine *, QJSEngine *) -> QJSValue { + return QJSValue("Test"); + }); + qmlRegisterSingletonType("Test.Singleton", 1, 0, "SingletonInt", [](QQmlEngine *, QJSEngine *) -> QJSValue { + return QJSValue(123); + }); + qmlRegisterSingletonType("Test.Singleton", 1, 0, "SingletonDouble", [](QQmlEngine *, QJSEngine *) -> QJSValue { + return QJSValue(1.23); + }); + qmlRegisterSingletonType("Test.Singleton", 1, 0, "SingletonUndefined", [](QQmlEngine *, QJSEngine *) -> QJSValue { + return QJSValue(QJSValue::UndefinedValue); + }); + qmlRegisterSingletonType("Test.Singleton", 1, 0, "SingletonNull", [](QQmlEngine *, QJSEngine *) -> QJSValue { + return QJSValue(QJSValue::NullValue); + }); + + QQmlEngine e; + QQmlComponent c(&engine); + c.setData("import QtQml 2.0\n" + "import Test.Singleton\n" + "QtObject {\n" + " property var resultString: SingletonString\n" + " property var resultInt: SingletonInt\n" + " property var resultDouble: SingletonDouble\n" + " property var resultUndefined: SingletonUndefined\n" + " property var resultNull: SingletonNull\n" + "}", QUrl()); + QVERIFY2(c.isReady(), qPrintable(c.errorString())); + + QScopedPointer<QObject> o(c.create()); + QCOMPARE(o->property("resultString").toString(), "Test"); + QCOMPARE(o->property("resultInt").toInt(), 123); + QCOMPARE(o->property("resultDouble").toDouble(), 1.23); + QVERIFY(!o->property("resultUndefined").isValid()); + QCOMPARE(o->property("resultUndefined").metaType(), QMetaType(QMetaType::UnknownType)); + QCOMPARE(o->property("resultNull").metaType(), QMetaType(QMetaType::Nullptr)); +} + QTEST_MAIN(tst_qqmllanguage) #include "tst_qqmllanguage.moc" |