Jacek Caban : jscript: Added labelled statements tests.

Alexandre Julliard julliard at winehq.org
Tue Jan 17 13:45:28 CST 2012


Module: wine
Branch: master
Commit: 5c47f4a269b48ddfa1f450a9fa6c13182e366dca
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=5c47f4a269b48ddfa1f450a9fa6c13182e366dca

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Jan 17 12:42:08 2012 +0100

jscript: Added labelled statements tests.

---

 dlls/jscript/tests/api.js  |    7 +++++
 dlls/jscript/tests/lang.js |   55 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 62 insertions(+), 0 deletions(-)

diff --git a/dlls/jscript/tests/api.js b/dlls/jscript/tests/api.js
index ed1acd2..be49179 100644
--- a/dlls/jscript/tests/api.js
+++ b/dlls/jscript/tests/api.js
@@ -1980,6 +1980,8 @@ var exception_array = {
     E_DISABLED_CC:       { type: "SyntaxError",  number: -2146827258 },
     E_INVALID_BREAK:     { type: "SyntaxError",  number: -2146827269 },
     E_INVALID_CONTINUE:  { type: "SyntaxError",  number: -2146827268 },
+    E_LABEL_NOT_FOUND:   { type: "SyntaxError",  number: -2146827262 },
+    E_LABEL_REDEFINED:   { type: "SyntaxError",  number: -2146827263 },
 
     E_ILLEGAL_ASSIGN:  { type: "ReferenceError", number: -2146823280 },
 
@@ -2088,6 +2090,11 @@ testSyntaxError("@a", "E_DISABLED_CC");
 testSyntaxError("/* @cc_on @*/ @_jscript_version", "E_DISABLED_CC");
 testSyntaxError("ok(false, 'unexpected execution'); break;", "E_INVALID_BREAK");
 testSyntaxError("ok(false, 'unexpected execution'); continue;", "E_INVALID_CONTINUE");
+testSyntaxError("ok(false, 'unexpected execution'); while(true) break unknown_label;", "E_LABEL_NOT_FOUND");
+testSyntaxError("ok(false, 'unexpected execution'); some_label: continue some_label;", "E_INVALID_CONTINUE");
+testSyntaxError("ok(false, 'unexpected execution'); while(true) continue some_label;", "E_LABEL_NOT_FOUND");
+testSyntaxError("ok(false, 'unexpected execution'); some_label: { while(true) continue some_label; }", "E_INVALID_CONTINUE");
+testSyntaxError("ok(false, 'unexpected execution'); some_label: { some_label: while(true); }", "E_LABEL_REDEFINED");
 
 // ReferenceError tests
 testException(function() {test = function() {}}, "E_ILLEGAL_ASSIGN");
diff --git a/dlls/jscript/tests/lang.js b/dlls/jscript/tests/lang.js
index a035ebe..b6fe821 100644
--- a/dlls/jscript/tests/lang.js
+++ b/dlls/jscript/tests/lang.js
@@ -920,6 +920,61 @@ for(var iter in [1,2,3]) {
 }
 ok(tmp, "tmp = " + tmp);
 
+loop_label:
+while(true) {
+    while(true)
+        break loop_label;
+}
+
+loop_label: {
+    tmp = 0;
+    while(true) {
+        while(true)
+            break loop_label;
+    }
+    ok(false, "unexpected evaluation 1");
+}
+
+while(true) {
+    some_label: break;
+    ok(false, "unexpected evaluation 2");
+}
+
+just_label: tmp = 1;
+ok(tmp === 1, "tmp != 1");
+
+some_label: break some_label;
+
+other_label: {
+    break other_label;
+    ok(false, "unexpected evaluation 3");
+}
+
+loop_label:
+do {
+    while(true)
+        continue loop_label;
+}while(false);
+
+loop_label:
+for(i = 0; i < 3; i++) {
+    while(true)
+        continue loop_label;
+}
+
+loop_label:
+other_label:
+for(i = 0; i < 3; i++) {
+    while(true)
+        continue loop_label;
+}
+
+loop_label:
+for(tmp in {prop: false}) {
+    while(true)
+        continue loop_label;
+}
+
 ok((void 1) === undefined, "(void 1) !== undefined");
 
 var inobj = new Object();




More information about the wine-cvs mailing list