aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qml')
-rw-r--r--tests/auto/qml/qqmljsscope/data/scriptBindingValueType.qml13
-rw-r--r--tests/auto/qml/qqmljsscope/tst_qqmljsscope.cpp28
2 files changed, 41 insertions, 0 deletions
diff --git a/tests/auto/qml/qqmljsscope/data/scriptBindingValueType.qml b/tests/auto/qml/qqmljsscope/data/scriptBindingValueType.qml
new file mode 100644
index 0000000000..9eed9e2a14
--- /dev/null
+++ b/tests/auto/qml/qqmljsscope/data/scriptBindingValueType.qml
@@ -0,0 +1,13 @@
+import QtQuick
+
+Item {
+ property int myInt: 123
+ property int block: { return 123; }
+ property int alsoABlock: {42}
+ property var lambda: function() {}
+ property var namedFunction: function hello() {}
+ property var arrow: x => x
+ property var myUndefined: undefined
+ property var emptyBlock: {}
+ property var emptyObject: ({})
+}
diff --git a/tests/auto/qml/qqmljsscope/tst_qqmljsscope.cpp b/tests/auto/qml/qqmljsscope/tst_qqmljsscope.cpp
index 4a0b74e4a3..4fb8805b7a 100644
--- a/tests/auto/qml/qqmljsscope/tst_qqmljsscope.cpp
+++ b/tests/auto/qml/qqmljsscope/tst_qqmljsscope.cpp
@@ -90,6 +90,8 @@ private Q_SLOTS:
void initTestCase() override;
void orderedBindings();
+ void scriptBindingValueType_data();
+ void scriptBindingValueType();
void signalCreationDifferences();
void allTypesAvailable();
void shadowing();
@@ -185,6 +187,32 @@ void tst_qqmljsscope::orderedBindings()
QCOMPARE(std::next(itemsBindingsBegin)->objectType()->baseTypeName(), u"Text"_s);
}
+void tst_qqmljsscope::scriptBindingValueType_data()
+{
+ QTest::addColumn<ScriptBindingValueType>("expectedType");
+
+ QTest::addRow("myInt") << ScriptBindingValueType::ScriptValue_Unknown;
+ QTest::addRow("block") << ScriptBindingValueType::ScriptValue_Function;
+ QTest::addRow("alsoABlock") << ScriptBindingValueType::ScriptValue_Function;
+ QTest::addRow("lambda") << ScriptBindingValueType::ScriptValue_Function;
+ QTest::addRow("namedFunction") << ScriptBindingValueType::ScriptValue_Function;
+ QTest::addRow("arrow") << ScriptBindingValueType::ScriptValue_Function;
+ QTest::addRow("myUndefined") << ScriptBindingValueType::ScriptValue_Undefined;
+ QTest::addRow("emptyBlock") << ScriptBindingValueType::ScriptValue_Function;
+ QTest::addRow("emptyObject") << ScriptBindingValueType::ScriptValue_Unknown;
+}
+void tst_qqmljsscope::scriptBindingValueType()
+{
+ QFETCH(ScriptBindingValueType, expectedType);
+
+ QQmlJSScope::ConstPtr root = run(u"scriptBindingValueType.qml"_s);
+ QVERIFY(root);
+
+ auto [start, end] = root->ownPropertyBindings(QTest::currentDataTag());
+ QCOMPARE(std::distance(start, end), 1);
+ QCOMPARE(start->scriptValueType(), expectedType);
+}
+
void tst_qqmljsscope::signalCreationDifferences()
{
QQmlJSScope::ConstPtr root = run(u"signalCreationDifferences.qml"_s, true);