summaryrefslogtreecommitdiffstats
path: root/js/src/tests/js1_2/statements
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/js1_2/statements')
-rw-r--r--js/src/tests/js1_2/statements/break.js130
-rw-r--r--js/src/tests/js1_2/statements/browser.js0
-rw-r--r--js/src/tests/js1_2/statements/continue.js143
-rw-r--r--js/src/tests/js1_2/statements/do_while.js35
-rw-r--r--js/src/tests/js1_2/statements/shell.js0
-rw-r--r--js/src/tests/js1_2/statements/switch.js96
-rw-r--r--js/src/tests/js1_2/statements/switch2.js158
7 files changed, 562 insertions, 0 deletions
diff --git a/js/src/tests/js1_2/statements/break.js b/js/src/tests/js1_2/statements/break.js
new file mode 100644
index 000000000..77c4983d0
--- /dev/null
+++ b/js/src/tests/js1_2/statements/break.js
@@ -0,0 +1,130 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ Filename: break.js
+ Description: 'Tests the break statement'
+
+ Author: Nick Lerissa
+ Date: March 18, 1998
+*/
+
+var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"';
+var VERSION = 'no version';
+startTest();
+var TITLE = 'statements: break';
+
+writeHeaderToLog("Executing script: break.js");
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var i,j;
+
+for (i = 0; i < 1000; i++)
+{
+ if (i == 100) break;
+}
+
+// 'breaking out of "for" loop'
+new TestCase ( SECTION, 'breaking out of "for" loop',
+ 100, i);
+
+j = 2000;
+
+out1:
+for (i = 0; i < 1000; i++)
+{
+ if (i == 100)
+ {
+ out2:
+ for (j = 0; j < 1000; j++)
+ {
+ if (j == 500) break out1;
+ }
+ j = 2001;
+ }
+ j = 2002;
+}
+
+// 'breaking out of a "for" loop with a "label"'
+new TestCase ( SECTION, 'breaking out of a "for" loop with a "label"',
+ 500, j);
+
+i = 0;
+
+while (i < 1000)
+{
+ if (i == 100) break;
+ i++;
+}
+
+// 'breaking out of a "while" loop'
+new TestCase ( SECTION, 'breaking out of a "while" loop',
+ 100, i );
+
+
+j = 2000;
+i = 0;
+
+out3:
+while (i < 1000)
+{
+ if (i == 100)
+ {
+ j = 0;
+ out4:
+ while (j < 1000)
+ {
+ if (j == 500) break out3;
+ j++;
+ }
+ j = 2001;
+ }
+ j = 2002;
+ i++;
+}
+
+// 'breaking out of a "while" loop with a "label"'
+new TestCase ( SECTION, 'breaking out of a "while" loop with a "label"',
+ 500, j);
+
+i = 0;
+
+do
+{
+ if (i == 100) break;
+ i++;
+} while (i < 1000);
+
+// 'breaking out of a "do" loop'
+new TestCase ( SECTION, 'breaking out of a "do" loop',
+ 100, i );
+
+j = 2000;
+i = 0;
+
+out5:
+do
+{
+ if (i == 100)
+ {
+ j = 0;
+ out6:
+ do
+ {
+ if (j == 500) break out5;
+ j++;
+ }while (j < 1000);
+ j = 2001;
+ }
+ j = 2002;
+ i++;
+}while (i < 1000);
+
+// 'breaking out of a "do" loop with a "label"'
+new TestCase ( SECTION, 'breaking out of a "do" loop with a "label"',
+ 500, j);
+
+test();
diff --git a/js/src/tests/js1_2/statements/browser.js b/js/src/tests/js1_2/statements/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/js1_2/statements/browser.js
diff --git a/js/src/tests/js1_2/statements/continue.js b/js/src/tests/js1_2/statements/continue.js
new file mode 100644
index 000000000..0017ba88d
--- /dev/null
+++ b/js/src/tests/js1_2/statements/continue.js
@@ -0,0 +1,143 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ Filename: continue.js
+ Description: 'Tests the continue statement'
+
+ Author: Nick Lerissa
+ Date: March 18, 1998
+*/
+
+var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"';
+var VERSION = 'no version';
+startTest();
+var TITLE = 'statements: continue';
+
+writeHeaderToLog("Executing script: continue.js");
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var i,j;
+
+j = 0;
+for (i = 0; i < 200; i++)
+{
+ if (i == 100)
+ continue;
+ j++;
+}
+
+// '"continue" in a "for" loop'
+new TestCase ( SECTION, '"continue" in "for" loop',
+ 199, j);
+
+
+j = 0;
+out1:
+for (i = 0; i < 1000; i++)
+{
+ if (i == 100)
+ {
+ out2:
+ for (var k = 0; k < 1000; k++)
+ {
+ if (k == 500) continue out1;
+ }
+ j = 3000;
+ }
+ j++;
+}
+
+// '"continue" in a "for" loop with a "label"'
+new TestCase ( SECTION, '"continue" in "for" loop with a "label"',
+ 999, j);
+
+i = 0;
+j = 1;
+
+while (i != j)
+{
+ i++;
+ if (i == 100) continue;
+ j++;
+}
+
+// '"continue" in a "while" loop'
+new TestCase ( SECTION, '"continue" in a "while" loop',
+ 100, j );
+
+j = 0;
+i = 0;
+out3:
+while (i < 1000)
+{
+ if (i == 100)
+ {
+ var k = 0;
+ out4:
+ while (k < 1000)
+ {
+ if (k == 500)
+ {
+ i++;
+ continue out3;
+ }
+ k++;
+ }
+ j = 3000;
+ }
+ j++;
+ i++;
+}
+
+// '"continue" in a "while" loop with a "label"'
+new TestCase ( SECTION, '"continue" in a "while" loop with a "label"',
+ 999, j);
+
+i = 0;
+j = 1;
+
+do
+{
+ i++;
+ if (i == 100) continue;
+ j++;
+} while (i != j);
+
+
+// '"continue" in a "do" loop'
+new TestCase ( SECTION, '"continue" in a "do" loop',
+ 100, j );
+
+j = 0;
+i = 0;
+out5:
+do
+{
+ if (i == 100)
+ {
+ var k = 0;
+ out6:
+ do
+ {
+ if (k == 500)
+ {
+ i++;
+ continue out5;
+ }
+ k++;
+ }while (k < 1000);
+ j = 3000;
+ }
+ j++;
+ i++;
+}while (i < 1000);
+
+// '"continue" in a "do" loop with a "label"'
+new TestCase ( SECTION, '"continue" in a "do" loop with a "label"',
+ 999, j);
+
+test();
diff --git a/js/src/tests/js1_2/statements/do_while.js b/js/src/tests/js1_2/statements/do_while.js
new file mode 100644
index 000000000..90ad5117e
--- /dev/null
+++ b/js/src/tests/js1_2/statements/do_while.js
@@ -0,0 +1,35 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ Filename: do_while.js
+ Description: 'This tests the new do_while loop'
+
+ Author: Nick Lerissa
+ Date: Fri Feb 13 09:58:28 PST 1998
+*/
+
+var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"';
+var VERSION = 'no version';
+startTest();
+var TITLE = 'statements: do_while';
+
+writeHeaderToLog('Executing script: do_while.js');
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var done = false;
+var x = 0;
+do
+{
+ if (x++ == 3) done = true;
+} while (!done);
+
+new TestCase( SECTION, "do_while ",
+ 4, x);
+
+//load('d:/javascript/tests/output/statements/do_while.js')
+test();
+
diff --git a/js/src/tests/js1_2/statements/shell.js b/js/src/tests/js1_2/statements/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/js1_2/statements/shell.js
diff --git a/js/src/tests/js1_2/statements/switch.js b/js/src/tests/js1_2/statements/switch.js
new file mode 100644
index 000000000..c7d3548de
--- /dev/null
+++ b/js/src/tests/js1_2/statements/switch.js
@@ -0,0 +1,96 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ Filename: switch.js
+ Description: 'Tests the switch statement'
+
+ http://scopus.mcom.com/bugsplat/show_bug.cgi?id=323696
+
+ Author: Nick Lerissa
+ Date: March 19, 1998
+*/
+
+var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"';
+var VERSION = 'no version';
+var TITLE = 'statements: switch';
+var BUGNUMBER="323696";
+
+startTest();
+writeHeaderToLog("Executing script: switch.js");
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+
+var var1 = "match string";
+var match1 = false;
+var match2 = false;
+var match3 = false;
+
+switch (var1)
+{
+case "match string":
+ match1 = true;
+case "bad string 1":
+ match2 = true;
+ break;
+case "bad string 2":
+ match3 = true;
+}
+
+new TestCase ( SECTION, 'switch statement',
+ true, match1);
+
+new TestCase ( SECTION, 'switch statement',
+ true, match2);
+
+new TestCase ( SECTION, 'switch statement',
+ false, match3);
+
+var var2 = 3;
+
+var match1 = false;
+var match2 = false;
+var match3 = false;
+var match4 = false;
+var match5 = false;
+
+switch (var2)
+{
+case 1:
+/* switch (var1)
+ {
+ case "foo":
+ match1 = true;
+ break;
+ case 3:
+ match2 = true;
+ break;
+ }*/
+ match3 = true;
+ break;
+case 2:
+ match4 = true;
+ break;
+case 3:
+ match5 = true;
+ break;
+}
+new TestCase ( SECTION, 'switch statement',
+ false, match1);
+
+new TestCase ( SECTION, 'switch statement',
+ false, match2);
+
+new TestCase ( SECTION, 'switch statement',
+ false, match3);
+
+new TestCase ( SECTION, 'switch statement',
+ false, match4);
+
+new TestCase ( SECTION, 'switch statement',
+ true, match5);
+
+test();
diff --git a/js/src/tests/js1_2/statements/switch2.js b/js/src/tests/js1_2/statements/switch2.js
new file mode 100644
index 000000000..86b2251fa
--- /dev/null
+++ b/js/src/tests/js1_2/statements/switch2.js
@@ -0,0 +1,158 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ Filename: switch2.js
+ Description: 'Tests the switch statement'
+
+ http://scopus.mcom.com/bugsplat/show_bug.cgi?id=323696
+
+ Author: Norris Boyd
+ Date: July 31, 1998
+*/
+
+var SECTION = 'As described in Netscape doc "Whats new in JavaScript 1.2"';
+var VERSION = 'no version';
+var TITLE = 'statements: switch';
+var BUGNUMBER="323626";
+
+startTest();
+writeHeaderToLog("Executing script: switch2.js");
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+// test defaults not at the end; regression test for a bug that
+// nearly made it into 4.06
+function f0(i) {
+ switch(i) {
+ default:
+ case "a":
+ case "b":
+ return "ab*"
+ case "c":
+ return "c";
+ case "d":
+ return "d";
+ }
+ return "";
+}
+new TestCase(SECTION, 'switch statement',
+ f0("a"), "ab*");
+
+new TestCase(SECTION, 'switch statement',
+ f0("b"), "ab*");
+
+new TestCase(SECTION, 'switch statement',
+ f0("*"), "ab*");
+
+new TestCase(SECTION, 'switch statement',
+ f0("c"), "c");
+
+new TestCase(SECTION, 'switch statement',
+ f0("d"), "d");
+
+function f1(i) {
+ switch(i) {
+ case "a":
+ case "b":
+ default:
+ return "ab*"
+ case "c":
+ return "c";
+ case "d":
+ return "d";
+ }
+ return "";
+}
+
+new TestCase(SECTION, 'switch statement',
+ f1("a"), "ab*");
+
+new TestCase(SECTION, 'switch statement',
+ f1("b"), "ab*");
+
+new TestCase(SECTION, 'switch statement',
+ f1("*"), "ab*");
+
+new TestCase(SECTION, 'switch statement',
+ f1("c"), "c");
+
+new TestCase(SECTION, 'switch statement',
+ f1("d"), "d");
+
+// Switch on integer; will use TABLESWITCH opcode in C engine
+function f2(i) {
+ switch (i) {
+ case 0:
+ case 1:
+ return 1;
+ case 2:
+ return 2;
+ }
+ // with no default, control will fall through
+ return 3;
+}
+
+new TestCase(SECTION, 'switch statement',
+ f2(0), 1);
+
+new TestCase(SECTION, 'switch statement',
+ f2(1), 1);
+
+new TestCase(SECTION, 'switch statement',
+ f2(2), 2);
+
+new TestCase(SECTION, 'switch statement',
+ f2(3), 3);
+
+// empty switch: make sure expression is evaluated
+var se = 0;
+switch (se = 1) {
+}
+new TestCase(SECTION, 'switch statement',
+ se, 1);
+
+// only default
+se = 0;
+switch (se) {
+default:
+ se = 1;
+}
+new TestCase(SECTION, 'switch statement',
+ se, 1);
+
+// in loop, break should only break out of switch
+se = 0;
+for (var i=0; i < 2; i++) {
+ switch (i) {
+ case 0:
+ case 1:
+ break;
+ }
+ se = 1;
+}
+new TestCase(SECTION, 'switch statement',
+ se, 1);
+
+// test "fall through"
+se = 0;
+i = 0;
+switch (i) {
+case 0:
+ se++;
+ /* fall through */
+case 1:
+ se++;
+ break;
+}
+new TestCase(SECTION, 'switch statement',
+ se, 2);
+print("hi");
+
+test();
+
+// Needed: tests for evaluation time of case expressions.
+// This issue was under debate at ECMA, so postponing for now.
+