diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2021-01-06 18:06:13 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2021-01-12 11:44:07 +0100 |
commit | 830eba61b73852a354954086a67e24cc22393558 (patch) | |
tree | f82c195afd398805c538e3822052219c681760ed /tests | |
parent | 7660c30e08975011c7bd47bcb1796139b9d77196 (diff) |
QJSManagedValue: Allow array access to strings
If you access a string as an array you get a one-character string of the
index you are asking for.
Change-Id: Ie2ac3243c9e23f37b8904c54d824946646a596eb
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/qml/qjsmanagedvalue/tst_qjsmanagedvalue.cpp | 25 | ||||
-rw-r--r-- | tests/auto/qml/qjsmanagedvalue/tst_qjsmanagedvalue.h | 1 |
2 files changed, 26 insertions, 0 deletions
diff --git a/tests/auto/qml/qjsmanagedvalue/tst_qjsmanagedvalue.cpp b/tests/auto/qml/qjsmanagedvalue/tst_qjsmanagedvalue.cpp index 1846030127..d245a034bb 100644 --- a/tests/auto/qml/qjsmanagedvalue/tst_qjsmanagedvalue.cpp +++ b/tests/auto/qml/qjsmanagedvalue/tst_qjsmanagedvalue.cpp @@ -1760,4 +1760,29 @@ void tst_QJSManagedValue::jsFunctionInVariant() } } +void tst_QJSManagedValue::stringByIndex() +{ + QJSEngine engine; + + const QString testString = QStringLiteral("foobar"); + QJSManagedValue str(testString, &engine); + + for (uint i = 0; i < testString.length(); ++i) { + QVERIFY(str.hasOwnProperty(i)); + QVERIFY(str.hasProperty(i)); + + QVERIFY(str.property(i).strictlyEquals(QJSValue(testString.mid(i, 1)))); + str.setProperty(i, QStringLiteral("u")); // ignored + QCOMPARE(str.toString(), testString); + } + + QVERIFY(!str.hasOwnProperty(6)); + QVERIFY(!str.hasProperty(6)); + QVERIFY(!str.hasOwnProperty(16)); + QVERIFY(!str.hasProperty(26)); + + QVERIFY(str.property(6).isUndefined()); + QVERIFY(str.property(506).isUndefined()); +} + QTEST_MAIN(tst_QJSManagedValue) diff --git a/tests/auto/qml/qjsmanagedvalue/tst_qjsmanagedvalue.h b/tests/auto/qml/qjsmanagedvalue/tst_qjsmanagedvalue.h index da2a8f76a7..041aae56aa 100644 --- a/tests/auto/qml/qjsmanagedvalue/tst_qjsmanagedvalue.h +++ b/tests/auto/qml/qjsmanagedvalue/tst_qjsmanagedvalue.h @@ -107,6 +107,7 @@ private Q_SLOTS: void stringAndUrl(); void jsFunctionInVariant(); + void stringByIndex(); private: void newEngine() { engine.reset(new QJSEngine()); } |