aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qqmlecmascript/data
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qml/qqmlecmascript/data')
-rw-r--r--tests/auto/qml/qqmlecmascript/data/concatenatedStringPropertyAccess.qml127
1 files changed, 127 insertions, 0 deletions
diff --git a/tests/auto/qml/qqmlecmascript/data/concatenatedStringPropertyAccess.qml b/tests/auto/qml/qqmlecmascript/data/concatenatedStringPropertyAccess.qml
new file mode 100644
index 0000000000..573ad431e1
--- /dev/null
+++ b/tests/auto/qml/qqmlecmascript/data/concatenatedStringPropertyAccess.qml
@@ -0,0 +1,127 @@
+import QtQuick 2.0
+
+// this used to trigger crash: see QTBUG-23126
+Item {
+ id: root
+ property bool success: false
+
+ // each of these property names have partial strings
+ // which are prehashed by v8 (random, cos, sin, ...)
+ property int randomProperty: 4
+ property real cosProperty: 1
+ property real cossin: 1
+ property real propertycos: 1
+ property real cos: 1
+
+ // these property names are entirely "new".
+ property string kqwpald: "hello"
+ property bool poiuyt: false
+
+ Component.onCompleted: {
+ success = true;
+
+ // 1: ensure that we can access the properties by name
+
+ if (root["random" + "Property"] != 4) {
+ success = false;
+ return;
+ }
+
+ if (root["cos" + "Property"] != 1) {
+ success = false;
+ return;
+ }
+
+ if (root["cos" + "sin"] != 1) {
+ success = false;
+ return;
+ }
+
+ if (root["property" + "cos"] != 1) {
+ success = false;
+ return;
+ }
+
+ if (root["" + "cos"] != 1) {
+ success = false;
+ return;
+ }
+
+ if (root["cos" + ""] != 1) {
+ success = false;
+ return;
+ }
+
+ if (root["kq" + "wpald"] != "hello") {
+ success = false;
+ return;
+ }
+
+ if (root["poiu" + "yt"] != false) {
+ success = false;
+ return;
+ }
+
+ // 2: ensure that similarly named properties don't cause crash
+
+ if (root["random" + "property"] == 4) {
+ success = false;
+ return;
+ }
+
+ if (root["cos" + "property"] == 1) {
+ success = false;
+ return;
+ }
+
+ if (root["cos" + "Sin"] == 1) {
+ success = false;
+ return;
+ }
+
+ if (root["property" + "Cos"] == 1) {
+ success = false;
+ return;
+ }
+
+ if (root["" + "Cos"] == 1) {
+ success = false;
+ return;
+ }
+
+ if (root["Cos" + ""] == 1) {
+ success = false;
+ return;
+ }
+
+ if (root["kq" + "Wpald"] == "hello") {
+ success = false;
+ return;
+ }
+
+ if (root["poiu" + "Yt"] == false) {
+ success = false;
+ return;
+ }
+
+ // 3: ensure that toString doesn't crash
+
+ root["random" + "Property"].toString();
+ root["cos" + "Property"].toString();
+ root["cos" + "Sin"] ? root["cos" + "Sin"].toString() : "";
+ root["property" + "Cos"] ? root["property" + "Cos"].toString() : "";
+ root["Cos" + ""] ? root["Cos" + ""].toString() : "";
+ root["" + "Cos"] ? root["" + "Cos"].toString() : "";
+ root["kq" + "Wpald"] ? root["kq" + "Wpald"].toString() : "";
+ root["poiu" + "Yt"] ? root["poiu" + "Yt"].toString() : "";
+
+ root["random" + "property"] ? root["random" + "property"].toString() : "";
+ root["cos" + "property"] ? root["cos" + "property"].toString() : "";
+ root["cos" + "sin"] ? root["cos" + "sin"].toString() : "";
+ root["property" + "cos"] ? root["property" + "cos"].toString() : "";
+ root["cos" + ""] ? root["cos" + ""].toString() : "";
+ root["" + "cos"] ? root["" + "cos"].toString() : "";
+ root["kq" + "wpald"] ? root["kq" + "wpald"].toString() : "";
+ root["poiu" + "yt"] ? root["poiu" + "yt"].toString() : "";
+ }
+}