aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMaximilian Goldstein <max.goldstein@qt.io>2021-02-09 14:29:24 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-02-22 14:20:19 +0000
commit0c029b420ea9b7631cf87d427c0821320064c01b (patch)
tree2f4a5fec2d7d135caa64df3cdb1619668288ecc2 /tests
parent911191793f10b6c160b282b98e7cf585103ca47c (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')
-rw-r--r--tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp42
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"