summaryrefslogtreecommitdiffstats
path: root/js/src/tests/ecma_3/Expressions
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/ecma_3/Expressions')
-rw-r--r--js/src/tests/ecma_3/Expressions/11.10-01.js43
-rw-r--r--js/src/tests/ecma_3/Expressions/11.10-02.js43
-rw-r--r--js/src/tests/ecma_3/Expressions/11.10-03.js43
-rw-r--r--js/src/tests/ecma_3/Expressions/11.6.1-1.js142
-rw-r--r--js/src/tests/ecma_3/Expressions/11.7.1-01.js43
-rw-r--r--js/src/tests/ecma_3/Expressions/11.7.2-01.js43
-rw-r--r--js/src/tests/ecma_3/Expressions/11.7.3-01.js43
-rw-r--r--js/src/tests/ecma_3/Expressions/11.9.6-1.js179
-rw-r--r--js/src/tests/ecma_3/Expressions/browser.js0
-rw-r--r--js/src/tests/ecma_3/Expressions/shell.js0
10 files changed, 579 insertions, 0 deletions
diff --git a/js/src/tests/ecma_3/Expressions/11.10-01.js b/js/src/tests/ecma_3/Expressions/11.10-01.js
new file mode 100644
index 000000000..1810f5797
--- /dev/null
+++ b/js/src/tests/ecma_3/Expressions/11.10-01.js
@@ -0,0 +1,43 @@
+/* -*- 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/. */
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 396969;
+var summary = '11.10 - & should evaluate operands in order';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+ enterFunc ('test');
+ printBugNumber(BUGNUMBER);
+ printStatus (summary);
+
+ expect = 'o.valueOf, p.valueOf';
+ var actualval;
+ var expectval = 2;
+
+ var o = {
+ valueOf: (function (){ actual += 'o.valueOf'; return this.value}),
+ value:42
+ };
+
+ var p = {
+ valueOf: (function (){ actual += ', p.valueOf'; return this.value}),
+ value:2
+ };
+
+ actualval = (o & p);
+
+ reportCompare(expectval, actualval, summary + ': value');
+ reportCompare(expect, actual, summary + ': order');
+
+ exitFunc ('test');
+}
diff --git a/js/src/tests/ecma_3/Expressions/11.10-02.js b/js/src/tests/ecma_3/Expressions/11.10-02.js
new file mode 100644
index 000000000..2f3e3c99d
--- /dev/null
+++ b/js/src/tests/ecma_3/Expressions/11.10-02.js
@@ -0,0 +1,43 @@
+/* -*- 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/. */
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 396969;
+var summary = '11.10 - ^ should evaluate operands in order';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+ enterFunc ('test');
+ printBugNumber(BUGNUMBER);
+ printStatus (summary);
+
+ expect = 'o.valueOf, p.valueOf';
+ var actualval;
+ var expectval = 40;
+
+ var o = {
+ valueOf: (function (){ actual += 'o.valueOf'; return this.value}),
+ value:42
+ };
+
+ var p = {
+ valueOf: (function (){ actual += ', p.valueOf'; return this.value}),
+ value:2
+ };
+
+ actualval = (o ^ p);
+
+ reportCompare(expectval, actualval, summary + ': value');
+ reportCompare(expect, actual, summary + ': order');
+
+ exitFunc ('test');
+}
diff --git a/js/src/tests/ecma_3/Expressions/11.10-03.js b/js/src/tests/ecma_3/Expressions/11.10-03.js
new file mode 100644
index 000000000..fba85c8fa
--- /dev/null
+++ b/js/src/tests/ecma_3/Expressions/11.10-03.js
@@ -0,0 +1,43 @@
+/* -*- 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/. */
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 396969;
+var summary = '11.10 - | should evaluate operands in order';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+ enterFunc ('test');
+ printBugNumber(BUGNUMBER);
+ printStatus (summary);
+
+ expect = 'o.valueOf, p.valueOf';
+ var actualval;
+ var expectval = 42;
+
+ var o = {
+ valueOf: (function (){ actual += 'o.valueOf'; return this.value}),
+ value:42
+ };
+
+ var p = {
+ valueOf: (function (){ actual += ', p.valueOf'; return this.value}),
+ value:2
+ };
+
+ actualval = (o | p);
+
+ reportCompare(expectval, actualval, summary + ': value');
+ reportCompare(expect, actual, summary + ': order');
+
+ exitFunc ('test');
+}
diff --git a/js/src/tests/ecma_3/Expressions/11.6.1-1.js b/js/src/tests/ecma_3/Expressions/11.6.1-1.js
new file mode 100644
index 000000000..76e71f30c
--- /dev/null
+++ b/js/src/tests/ecma_3/Expressions/11.6.1-1.js
@@ -0,0 +1,142 @@
+/* -*- 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/. */
+
+/*
+ *
+ * Date: 14 Mar 2003
+ * SUMMARY: Testing left-associativity of the + operator
+ *
+ * See ECMA-262 Ed.3, Section 11.6.1, "The Addition operator"
+ * See http://bugzilla.mozilla.org/show_bug.cgi?id=196290
+ *
+ * The upshot: |a + b + c| should always equal |(a + b) + c|
+ *
+ */
+//-----------------------------------------------------------------------------
+var UBound = 0;
+var BUGNUMBER = 196290;
+var summary = 'Testing left-associativity of the + operator';
+var status = '';
+var statusitems = [];
+var actual = '';
+var actualvalues = [];
+var expect= '';
+var expectedvalues = [];
+
+
+status = inSection(1);
+actual = 1 + 1 + 'px';
+expect = '2px';
+addThis();
+
+status = inSection(2);
+actual = 'px' + 1 + 1;
+expect = 'px11';
+addThis();
+
+status = inSection(3);
+actual = 1 + 1 + 1 + 'px';
+expect = '3px';
+addThis();
+
+status = inSection(4);
+actual = 1 + 1 + 'a' + 1 + 1 + 'b';
+expect = '2a11b';
+addThis();
+
+/*
+ * The next sections test the + operator via eval()
+ */
+status = inSection(5);
+actual = sumThese(1, 1, 'a', 1, 1, 'b');
+expect = '2a11b';
+addThis();
+
+status = inSection(6);
+actual = sumThese(new Number(1), new Number(1), 'a');
+expect = '2a';
+addThis();
+
+status = inSection(7);
+actual = sumThese('a', new Number(1), new Number(1));
+expect = 'a11';
+addThis();
+
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+
+
+function addThis()
+{
+ statusitems[UBound] = status;
+ actualvalues[UBound] = actual;
+ expectedvalues[UBound] = expect;
+ UBound++;
+}
+
+/*
+ * Applies the + operator to the provided arguments via eval().
+ *
+ * Form an eval string of the form 'arg1 + arg2 + arg3', but
+ * remember to add double-quotes inside the eval string around
+ * any argument that is of string type. For example, suppose the
+ * arguments were 11, 'a', 22. Then the eval string should be
+ *
+ * arg1 + quoteThis(arg2) + arg3
+ *
+ * If we didn't put double-quotes around the string argument,
+ * we'd get this for an eval string:
+ *
+ * '11 + a + 22'
+ *
+ * If we eval() this, we get 'ReferenceError: a is not defined'.
+ * With proper quoting, we get eval('11 + "a" + 22') as desired.
+ */
+function sumThese()
+{
+ var sEval = '';
+ var arg;
+ var i;
+
+ var L = arguments.length;
+ for (i=0; i<L; i++)
+ {
+ arg = arguments[i];
+ if (typeof arg === 'string')
+ arg = quoteThis(arg);
+
+ if (i < L-1)
+ sEval += arg + ' + ';
+ else
+ sEval += arg;
+ }
+
+ return eval(sEval);
+}
+
+
+function quoteThis(x)
+{
+ return '"' + x + '"';
+}
+
+
+function test()
+{
+ enterFunc('test');
+ printBugNumber(BUGNUMBER);
+ printStatus(summary);
+
+ for (var i=0; i<UBound; i++)
+ {
+ reportCompare(expectedvalues[i], actualvalues[i], statusitems[i]);
+ }
+
+ exitFunc ('test');
+}
diff --git a/js/src/tests/ecma_3/Expressions/11.7.1-01.js b/js/src/tests/ecma_3/Expressions/11.7.1-01.js
new file mode 100644
index 000000000..b839c2950
--- /dev/null
+++ b/js/src/tests/ecma_3/Expressions/11.7.1-01.js
@@ -0,0 +1,43 @@
+/* -*- 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/. */
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 396969;
+var summary = '11.7.1 - << should evaluate operands in order';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+ enterFunc ('test');
+ printBugNumber(BUGNUMBER);
+ printStatus (summary);
+
+ expect = 'o.valueOf, p.valueOf';
+ var actualval;
+ var expectval = 168;
+
+ var o = {
+ valueOf: (function (){ actual += 'o.valueOf'; return this.value}),
+ value:42
+ };
+
+ var p = {
+ valueOf: (function (){ actual += ', p.valueOf'; return this.value}),
+ value:2
+ };
+
+ actualval = (o << p);
+
+ reportCompare(expectval, actualval, summary + ': value');
+ reportCompare(expect, actual, summary + ': order');
+
+ exitFunc ('test');
+}
diff --git a/js/src/tests/ecma_3/Expressions/11.7.2-01.js b/js/src/tests/ecma_3/Expressions/11.7.2-01.js
new file mode 100644
index 000000000..072edc7b3
--- /dev/null
+++ b/js/src/tests/ecma_3/Expressions/11.7.2-01.js
@@ -0,0 +1,43 @@
+/* -*- 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/. */
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 396969;
+var summary = '11.7.2 - >> should evaluate operands in order';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+ enterFunc ('test');
+ printBugNumber(BUGNUMBER);
+ printStatus (summary);
+
+ expect = 'o.valueOf, p.valueOf';
+ var actualval;
+ var expectval = 10;
+
+ var o = {
+ valueOf: (function (){ actual += 'o.valueOf'; return this.value}),
+ value:42
+ };
+
+ var p = {
+ valueOf: (function (){ actual += ', p.valueOf'; return this.value}),
+ value:2
+ };
+
+ actualval = (o >> p);
+
+ reportCompare(expectval, actualval, summary + ': value');
+ reportCompare(expect, actual, summary + ': order');
+
+ exitFunc ('test');
+}
diff --git a/js/src/tests/ecma_3/Expressions/11.7.3-01.js b/js/src/tests/ecma_3/Expressions/11.7.3-01.js
new file mode 100644
index 000000000..75227e242
--- /dev/null
+++ b/js/src/tests/ecma_3/Expressions/11.7.3-01.js
@@ -0,0 +1,43 @@
+/* -*- 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/. */
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 396969;
+var summary = '11.7.3 - >>> should evaluate operands in order';
+var actual = '';
+var expect = '';
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function test()
+{
+ enterFunc ('test');
+ printBugNumber(BUGNUMBER);
+ printStatus (summary);
+
+ expect = 'o.valueOf, p.valueOf';
+ var actualval;
+ var expectval = 10;
+
+ var o = {
+ valueOf: (function (){ actual += 'o.valueOf'; return this.value}),
+ value:42
+ };
+
+ var p = {
+ valueOf: (function (){ actual += ', p.valueOf'; return this.value}),
+ value:2
+ };
+
+ actualval = (o >>> p);
+
+ reportCompare(expectval, actualval, summary + ': value');
+ reportCompare(expect, actual, summary + ': order');
+
+ exitFunc ('test');
+}
diff --git a/js/src/tests/ecma_3/Expressions/11.9.6-1.js b/js/src/tests/ecma_3/Expressions/11.9.6-1.js
new file mode 100644
index 000000000..ccf9e7b64
--- /dev/null
+++ b/js/src/tests/ecma_3/Expressions/11.9.6-1.js
@@ -0,0 +1,179 @@
+/* -*- 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/. */
+
+/*
+ *
+ * Date: 20 Feb 2002
+ * SUMMARY: Testing the comparison |undefined === null|
+ * See http://bugzilla.mozilla.org/show_bug.cgi?id=126722
+ *
+ */
+//-----------------------------------------------------------------------------
+var UBound = 0;
+var BUGNUMBER = 126722;
+var summary = 'Testing the comparison |undefined === null|';
+var status = '';
+var statusitems = [];
+var actual = '';
+var actualvalues = [];
+var expect= '';
+var expectedvalues = [];
+
+
+status = inSection(1);
+if (undefined === null)
+ actual = true;
+else
+ actual = false;
+expect = false;
+addThis();
+
+
+
+status = inSection(2);
+switch(true)
+{
+case (undefined === null) :
+ actual = true;
+ break;
+
+default:
+ actual = false;
+}
+expect = false;
+addThis();
+
+
+
+status = inSection(3);
+function f3(x)
+{
+ var res = false;
+
+ switch(true)
+ {
+ case (x === null) :
+ res = true;
+ break;
+
+ default:
+ // do nothing
+ }
+
+ return res;
+}
+
+actual = f3(undefined);
+expect = false;
+addThis();
+
+
+
+status = inSection(4);
+function f4(arr)
+{
+ var elt = '';
+ var res = false;
+
+ for (i=0; i<arr.length; i++)
+ {
+ elt = arr[i];
+
+ switch(true)
+ {
+ case (elt === null) :
+ res = true;
+ break;
+
+ default:
+ // do nothing
+ }
+ }
+
+ return res;
+}
+
+var arr = Array('a', undefined);
+actual = f4(arr);
+expect = false;
+addThis();
+
+
+
+status = inSection(5);
+function f5(arr)
+{
+ var len = arr.length;
+
+ for(var i=0; (arr[i]===undefined) && (i<len); i++)
+ ; //do nothing
+
+ return i;
+}
+
+/*
+ * An array of 5 undefined elements. Note:
+ *
+ * The return value of eval(a STATEMENT) is undefined.
+ * A non-existent PROPERTY is undefined, not a ReferenceError.
+ * No undefined element exists AFTER trailing comma at end.
+ *
+ */
+var arrUndef = [ , undefined, eval('var x = 0'), this.NOT_A_PROPERTY, , ];
+actual = f5(arrUndef);
+expect = 5;
+addThis();
+
+
+
+status = inSection(6);
+function f6(arr)
+{
+ var len = arr.length;
+
+ for(var i=0; (arr[i]===null) && (i<len); i++)
+ ; //do nothing
+
+ return i;
+}
+
+/*
+ * Use same array as above. This time we're comparing to |null|, so we expect 0
+ */
+actual = f6(arrUndef);
+expect = 0;
+addThis();
+
+
+
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+
+
+function addThis()
+{
+ statusitems[UBound] = status;
+ actualvalues[UBound] = actual;
+ expectedvalues[UBound] = expect;
+ UBound++;
+}
+
+
+function test()
+{
+ enterFunc('test');
+ printBugNumber(BUGNUMBER);
+ printStatus(summary);
+
+ for (var i=0; i<UBound; i++)
+ {
+ reportCompare(expectedvalues[i], actualvalues[i], statusitems[i]);
+ }
+
+ exitFunc ('test');
+}
diff --git a/js/src/tests/ecma_3/Expressions/browser.js b/js/src/tests/ecma_3/Expressions/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_3/Expressions/browser.js
diff --git a/js/src/tests/ecma_3/Expressions/shell.js b/js/src/tests/ecma_3/Expressions/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_3/Expressions/shell.js