aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2014-03-18 09:12:42 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-19 08:14:50 +0100
commitcfd3eda076e81d56f985c830663ae93317b6ef8b (patch)
treeb46fd616bfbe5170fd65198a561f19d7a5f37c0e /tests
parent4606bd668375770b8f9d84b1739c8a17cfc928d7 (diff)
Fixes to for...in statement
Properly convert the argument to an object if it's not null or undefined as mandated by the standard. Add a similar test case for the with statement. Change-Id: Idd8e245e8dae4803eb0e2010e3d43bb912670444 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qml/qjsengine/tst_qjsengine.cpp33
1 files changed, 31 insertions, 2 deletions
diff --git a/tests/auto/qml/qjsengine/tst_qjsengine.cpp b/tests/auto/qml/qjsengine/tst_qjsengine.cpp
index 263dd0f963..ed6b5a9d42 100644
--- a/tests/auto/qml/qjsengine/tst_qjsengine.cpp
+++ b/tests/auto/qml/qjsengine/tst_qjsengine.cpp
@@ -115,7 +115,8 @@ private slots:
void jsForInStatement_prototypeProperties();
void jsForInStatement_mutateWhileIterating();
void jsForInStatement_arrays();
- void jsForInStatement_nullAndUndefined();
+ void jsForInStatement_constant();
+ void with_constant();
void stringObjects();
void jsStringPrototypeReplaceBugs();
void getterSetterThisObject_global();
@@ -1983,7 +1984,7 @@ void tst_QJSEngine::jsForInStatement_arrays()
}
}
-void tst_QJSEngine::jsForInStatement_nullAndUndefined()
+void tst_QJSEngine::jsForInStatement_constant()
{
QJSEngine eng;
{
@@ -1996,6 +1997,34 @@ void tst_QJSEngine::jsForInStatement_nullAndUndefined()
QVERIFY(ret.isBool());
QVERIFY(ret.toBool());
}
+ {
+ QJSValue ret = eng.evaluate("r = false; for (var p in 1) r = true; r");
+ QVERIFY(ret.isBool());
+ QVERIFY(!ret.toBool());
+ }
+ {
+ QJSValue ret = eng.evaluate("r = false; for (var p in 'abc') r = true; r");
+ QVERIFY(ret.isBool());
+ QVERIFY(ret.toBool());
+ }
+}
+
+void tst_QJSEngine::with_constant()
+{
+ QJSEngine eng;
+ {
+ QJSValue ret = eng.evaluate("r = false; with(null) { r= true; } r");
+ QVERIFY(ret.isError());
+ }
+ {
+ QJSValue ret = eng.evaluate("r = false; with(undefined) { r= true; } r");
+ QVERIFY(ret.isError());
+ }
+ {
+ QJSValue ret = eng.evaluate("r = false; with(1) { r= true; } r");
+ QVERIFY(ret.isBool());
+ QVERIFY(ret.toBool());
+ }
}
void tst_QJSEngine::stringObjects()