aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorKent Hansen <kent.hansen@nokia.com>2012-01-17 08:28:18 +0100
committerQt by Nokia <qt-info@nokia.com>2012-02-01 08:37:49 +0100
commit3a017cc96292dbda4ca9fd2ca5ac7cf8b39cd43e (patch)
tree24cf0ae8ec783bb5c7edfe92d62813839c6c4c06 /tests
parent422e2998364d6aae14e65823b315c5e2ae529a62 (diff)
QJS{Engine,Value}: Remove QRegExp-specific functions
Rationale: QRegExp regular expressions have different semantics than JavaScript RegExp. This can cause data loss and unexpected behavior. qjsvalue_cast() and fromScriptValue() can still be used to convert between QRegExp and JS RegExp. Task-number: QTBUG-23604 Change-Id: Iacf4aaea232aff9e4cecf4afa40753229bc5d643 Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/declarative/qjsengine/tst_qjsengine.cpp44
-rw-r--r--tests/auto/declarative/qjsvalue/tst_qjsvalue.cpp23
2 files changed, 31 insertions, 36 deletions
diff --git a/tests/auto/declarative/qjsengine/tst_qjsengine.cpp b/tests/auto/declarative/qjsengine/tst_qjsengine.cpp
index 1a0e8a1b34..b24aad864c 100644
--- a/tests/auto/declarative/qjsengine/tst_qjsengine.cpp
+++ b/tests/auto/declarative/qjsengine/tst_qjsengine.cpp
@@ -792,24 +792,18 @@ void tst_QJSEngine::newRegExp()
{
QSKIP("Test failing - QTBUG-22238");
QJSEngine eng;
- for (int x = 0; x < 2; ++x) {
- QJSValue rexp;
- if (x == 0)
- rexp = eng.newRegExp("foo", "bar");
- else
- rexp = eng.newRegExp(QRegExp("foo"));
- QCOMPARE(rexp.isValid(), true);
- QCOMPARE(rexp.isRegExp(), true);
- QCOMPARE(rexp.isObject(), true);
- QVERIFY(rexp.isCallable()); // in JSC, RegExp objects are callable
- // prototype should be RegExp.prototype
- QCOMPARE(rexp.prototype().isValid(), true);
- QCOMPARE(rexp.prototype().isObject(), true);
- QCOMPARE(rexp.prototype().isRegExp(), false);
- QCOMPARE(rexp.prototype().strictlyEquals(eng.evaluate("RegExp.prototype")), true);
+ QJSValue rexp = eng.toScriptValue(QRegExp("foo"));
+ QCOMPARE(rexp.isValid(), true);
+ QCOMPARE(rexp.isRegExp(), true);
+ QCOMPARE(rexp.isObject(), true);
+ QVERIFY(rexp.isCallable()); // in JSC, RegExp objects are callable
+ // prototype should be RegExp.prototype
+ QCOMPARE(rexp.prototype().isValid(), true);
+ QCOMPARE(rexp.prototype().isObject(), true);
+ QCOMPARE(rexp.prototype().isRegExp(), false);
+ QCOMPARE(rexp.prototype().strictlyEquals(eng.evaluate("RegExp.prototype")), true);
- QCOMPARE(rexp.toRegExp().pattern(), QRegExp("foo").pattern());
- }
+ QCOMPARE(qjsvalue_cast<QRegExp>(rexp).pattern(), QRegExp("foo").pattern());
}
void tst_QJSEngine::jsRegExp()
@@ -2746,7 +2740,7 @@ void tst_QJSEngine::valueConversion_regExp()
QRegExp in = QRegExp("foo");
QJSValue val = eng.toScriptValue(in);
QVERIFY(val.isRegExp());
- QRegExp out = val.toRegExp();
+ QRegExp out = qjsvalue_cast<QRegExp>(val);
QEXPECT_FAIL("", "QTBUG-6136: JSC-based back-end doesn't preserve QRegExp::patternSyntax (always uses RegExp2)", Continue);
QCOMPARE(out.patternSyntax(), in.patternSyntax());
QCOMPARE(out.pattern(), in.pattern());
@@ -2757,7 +2751,7 @@ void tst_QJSEngine::valueConversion_regExp()
QRegExp in = QRegExp("foo", Qt::CaseSensitive, QRegExp::RegExp2);
QJSValue val = eng.toScriptValue(in);
QVERIFY(val.isRegExp());
- QCOMPARE(val.toRegExp(), in);
+ QCOMPARE(qjsvalue_cast<QRegExp>(val), in);
}
{
QRegExp in = QRegExp("foo");
@@ -2765,7 +2759,7 @@ void tst_QJSEngine::valueConversion_regExp()
QJSValue val = eng.toScriptValue(in);
QVERIFY(val.isRegExp());
QEXPECT_FAIL("", "QTBUG-6136: JSC-based back-end doesn't preserve QRegExp::minimal (always false)", Continue);
- QCOMPARE(val.toRegExp().isMinimal(), in.isMinimal());
+ QCOMPARE(qjsvalue_cast<QRegExp>(val).isMinimal(), in.isMinimal());
}
}
@@ -5032,10 +5026,10 @@ void tst_QJSEngine::reentrancy_objectCreation()
QCOMPARE(d2.toDateTime(), d1.toDateTime());
}
{
- QJSValue r1 = eng1.newRegExp("foo", "gim");
- QJSValue r2 = eng2.newRegExp("foo", "gim");
- QCOMPARE(r1.toRegExp(), r2.toRegExp());
- QCOMPARE(r2.toRegExp(), r1.toRegExp());
+ QJSValue r1 = eng1.evaluate("new RegExp('foo', 'gim')");
+ QJSValue r2 = eng2.evaluate("new RegExp('foo', 'gim')");
+ QCOMPARE(qjsvalue_cast<QRegExp>(r1), qjsvalue_cast<QRegExp>(r2));
+ QCOMPARE(qjsvalue_cast<QRegExp>(r2), qjsvalue_cast<QRegExp>(r1));
}
{
QJSValue o1 = eng1.newQObject(this);
@@ -6004,7 +5998,7 @@ void tst_QJSEngine::qRegExpInport()
QJSEngine eng;
QJSValue rexp;
- rexp = eng.newRegExp(rx);
+ rexp = eng.toScriptValue(rx);
QCOMPARE(rexp.isValid(), true);
QCOMPARE(rexp.isRegExp(), true);
diff --git a/tests/auto/declarative/qjsvalue/tst_qjsvalue.cpp b/tests/auto/declarative/qjsvalue/tst_qjsvalue.cpp
index 8e6e012db3..c7396c9c28 100644
--- a/tests/auto/declarative/qjsvalue/tst_qjsvalue.cpp
+++ b/tests/auto/declarative/qjsvalue/tst_qjsvalue.cpp
@@ -1061,7 +1061,8 @@ void tst_QJSValue::toVariant()
{
QRegExp rx = QRegExp("[0-9a-z]+", Qt::CaseSensitive, QRegExp::RegExp2);
- QJSValue rxObject = eng.newRegExp(rx);
+ QJSValue rxObject = eng.toScriptValue(rx);
+ QVERIFY(rxObject.isRegExp());
QVariant var = rxObject.toVariant();
QCOMPARE(var, QVariant(rx));
}
@@ -1215,7 +1216,7 @@ void tst_QJSValue::toRegExp()
{
QJSEngine eng;
{
- QRegExp rx = eng.evaluate("/foo/").toRegExp();
+ QRegExp rx = qjsvalue_cast<QRegExp>(eng.evaluate("/foo/"));
QVERIFY(rx.isValid());
QCOMPARE(rx.patternSyntax(), QRegExp::RegExp2);
QCOMPARE(rx.pattern(), QString::fromLatin1("foo"));
@@ -1223,7 +1224,7 @@ void tst_QJSValue::toRegExp()
QVERIFY(!rx.isMinimal());
}
{
- QRegExp rx = eng.evaluate("/bar/gi").toRegExp();
+ QRegExp rx = qjsvalue_cast<QRegExp>(eng.evaluate("/bar/gi"));
QVERIFY(rx.isValid());
QCOMPARE(rx.patternSyntax(), QRegExp::RegExp2);
QCOMPARE(rx.pattern(), QString::fromLatin1("bar"));
@@ -1231,14 +1232,14 @@ void tst_QJSValue::toRegExp()
QVERIFY(!rx.isMinimal());
}
- QVERIFY(eng.evaluate("[]").toRegExp().isEmpty());
- QVERIFY(eng.evaluate("{}").toRegExp().isEmpty());
- QVERIFY(eng.globalObject().toRegExp().isEmpty());
- QVERIFY(QJSValue().toRegExp().isEmpty());
- QVERIFY(QJSValue(123).toRegExp().isEmpty());
- QVERIFY(QJSValue(false).toRegExp().isEmpty());
- QVERIFY(eng.nullValue().toRegExp().isEmpty());
- QVERIFY(eng.undefinedValue().toRegExp().isEmpty());
+ QVERIFY(qjsvalue_cast<QRegExp>(eng.evaluate("[]")).isEmpty());
+ QVERIFY(qjsvalue_cast<QRegExp>(eng.evaluate("{}")).isEmpty());
+ QVERIFY(qjsvalue_cast<QRegExp>(eng.globalObject()).isEmpty());
+ QVERIFY(qjsvalue_cast<QRegExp>(QJSValue()).isEmpty());
+ QVERIFY(qjsvalue_cast<QRegExp>(QJSValue(123)).isEmpty());
+ QVERIFY(qjsvalue_cast<QRegExp>(QJSValue(false)).isEmpty());
+ QVERIFY(qjsvalue_cast<QRegExp>(eng.nullValue()).isEmpty());
+ QVERIFY(qjsvalue_cast<QRegExp>(eng.undefinedValue()).isEmpty());
}
void tst_QJSValue::instanceOf_twoEngines()