aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qjsengine/tst_qjsengine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qml/qjsengine/tst_qjsengine.cpp')
-rw-r--r--tests/auto/qml/qjsengine/tst_qjsengine.cpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/tests/auto/qml/qjsengine/tst_qjsengine.cpp b/tests/auto/qml/qjsengine/tst_qjsengine.cpp
index a1662b495c..ba99b34935 100644
--- a/tests/auto/qml/qjsengine/tst_qjsengine.cpp
+++ b/tests/auto/qml/qjsengine/tst_qjsengine.cpp
@@ -148,6 +148,8 @@ private slots:
void functionDeclarationsInConditionals();
void arrayPop_QTBUG_35979();
+
+ void regexpLastMatch();
};
tst_QJSEngine::tst_QJSEngine()
@@ -2705,6 +2707,68 @@ void tst_QJSEngine::arrayPop_QTBUG_35979()
QCOMPARE(result.toString(), QString("1,3"));
}
+void tst_QJSEngine::regexpLastMatch()
+{
+ QJSEngine eng;
+
+ QCOMPARE(eng.evaluate("RegExp.input").toString(), QString());
+
+ QJSValue hasProperty;
+
+ for (int i = 1; i < 9; ++i) {
+ hasProperty = eng.evaluate("RegExp.hasOwnProperty(\"$" + QString::number(i) + "\")");
+ QVERIFY(hasProperty.isBool());
+ QVERIFY(hasProperty.toBool());
+ }
+
+ hasProperty = eng.evaluate("RegExp.hasOwnProperty(\"$0\")");
+ QVERIFY(hasProperty.isBool());
+ QVERIFY(!hasProperty.toBool());
+
+ hasProperty = eng.evaluate("RegExp.hasOwnProperty(\"$10\")");
+ QVERIFY(!hasProperty.toBool());
+
+ hasProperty = eng.evaluate("RegExp.hasOwnProperty(\"lastMatch\")");
+ QVERIFY(hasProperty.toBool());
+ hasProperty = eng.evaluate("RegExp.hasOwnProperty(\"$&\")");
+ QVERIFY(hasProperty.toBool());
+
+ QJSValue result = eng.evaluate(""
+ "var re = /h(el)l(o)/\n"
+ "var text = \"blah hello world\"\n"
+ "text.match(re)\n");
+ QVERIFY(!result.isError());
+ QJSValue match = eng.evaluate("RegExp.$1");
+ QCOMPARE(match.toString(), QString("el"));
+ match = eng.evaluate("RegExp.$2");
+ QCOMPARE(match.toString(), QString("o"));
+ for (int i = 3; i <= 9; ++i) {
+ match = eng.evaluate("RegExp.$" + QString::number(i));
+ QVERIFY(match.isString());
+ QCOMPARE(match.toString(), QString());
+ }
+ QCOMPARE(eng.evaluate("RegExp.input").toString(), QString("blah hello world"));
+ QCOMPARE(eng.evaluate("RegExp.lastParen").toString(), QString("o"));
+ QCOMPARE(eng.evaluate("RegExp.leftContext").toString(), QString("blah "));
+ QCOMPARE(eng.evaluate("RegExp.rightContext").toString(), QString(" world"));
+
+ QCOMPARE(eng.evaluate("RegExp.lastMatch").toString(), QString("hello"));
+
+ result = eng.evaluate(""
+ "var re = /h(ello)/\n"
+ "var text = \"hello\"\n"
+ "text.match(re)\n");
+ QVERIFY(!result.isError());
+ match = eng.evaluate("RegExp.$1");
+ QCOMPARE(match.toString(), QString("ello"));
+ for (int i = 2; i <= 9; ++i) {
+ match = eng.evaluate("RegExp.$" + QString::number(i));
+ QVERIFY(match.isString());
+ QCOMPARE(match.toString(), QString());
+ }
+
+}
+
QTEST_MAIN(tst_QJSEngine)
#include "tst_qjsengine.moc"