diff options
author | Lars Knoll <lars.knoll@digia.com> | 2014-03-18 09:12:42 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-19 08:14:50 +0100 |
commit | cfd3eda076e81d56f985c830663ae93317b6ef8b (patch) | |
tree | b46fd616bfbe5170fd65198a561f19d7a5f37c0e /tests | |
parent | 4606bd668375770b8f9d84b1739c8a17cfc928d7 (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.cpp | 33 |
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() |