diff options
Diffstat (limited to 'js/src/tests/test262/ch11/11.10')
77 files changed, 2468 insertions, 0 deletions
diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A1.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A1.js new file mode 100644 index 000000000..25416cdca --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A1.js @@ -0,0 +1,61 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * White Space and Line Terminator between BitwiseANDExpression and "&" or between "&" and EqualityExpression are allowed + * + * @path ch11/11.10/11.10.1/S11.10.1_A1.js + * @description Checking uses eval + */ + +//CHECK#1 +if ((eval("1\u0009&\u00091")) !== 1) { + $ERROR('#1: (1\\u0009&\\u00091) === 1'); +} + +//CHECK#2 +if ((eval("1\u000B&\u000B1")) !== 1) { + $ERROR('#2: (1\\u000B&\\u000B1) === 1'); +} + +//CHECK#3 +if ((eval("1\u000C&\u000C1")) !== 1) { + $ERROR('#3: (1\\u000C&\\u000C1) === 1'); +} + +//CHECK#4 +if ((eval("1\u0020&\u00201")) !== 1) { + $ERROR('#4: (1\\u0020&\\u00201) === 1'); +} + +//CHECK#5 +if ((eval("1\u00A0&\u00A01")) !== 1) { + $ERROR('#5: (1\\u00A0&\\u00A01) === 1'); +} + +//CHECK#6 +if ((eval("1\u000A&\u000A1")) !== 1) { + $ERROR('#6: (1\\u000A&\\u000A1) === 1'); +} + +//CHECK#7 +if ((eval("1\u000D&\u000D1")) !== 1) { + $ERROR('#7: (1\\u000D&\\u000D1) === 1'); +} + +//CHECK#8 +if ((eval("1\u2028&\u20281")) !== 1) { + $ERROR('#8: (1\\u2028&\\u20281) === 1'); +} + +//CHECK#9 +if ((eval("1\u2029&\u20291")) !== 1) { + $ERROR('#9: (1\\u2029&\\u20291) === 1'); +} + + +//CHECK#10 +if ((eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029&\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) !== 1) { + $ERROR('#10: (1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029&\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === 1'); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.1_T1.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.1_T1.js new file mode 100644 index 000000000..4acb431bc --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.1_T1.js @@ -0,0 +1,43 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x & y uses GetValue + * + * @path ch11/11.10/11.10.1/S11.10.1_A2.1_T1.js + * @description Either Type is not Reference or GetBase is not null + */ + +//CHECK#1 +if ((1 & 1) !== 1) { + $ERROR('#1: (1 & 1) === 1. Actual: ' + ((1 & 1))); +} + +//CHECK#2 +var x = 1; +if ((x & 1) !== 1) { + $ERROR('#2: var x = 1; (x & 1) === 1. Actual: ' + ((x & 1))); +} + +//CHECK#3 +var y = 1; +if ((1 & y) !== 1) { + $ERROR('#3: var y = 1; (1 & y) === 1. Actual: ' + ((1 & y))); +} + +//CHECK#4 +var x = 1; +var y = 1; +if ((x & y) !== 1) { + $ERROR('#4: var x = 1; var y = 1; (x & y) === 1. Actual: ' + ((x & y))); +} + +//CHECK#5 +var objectx = new Object(); +var objecty = new Object(); +objectx.prop = 1; +objecty.prop = 1; +if ((objectx.prop & objecty.prop) !== 1) { + $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; (objectx.prop & objecty.prop) === 1. Actual: ' + ((objectx.prop & objecty.prop))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.1_T2.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.1_T2.js new file mode 100644 index 000000000..91f0369a6 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.1_T2.js @@ -0,0 +1,21 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x & y uses GetValue + * + * @path ch11/11.10/11.10.1/S11.10.1_A2.1_T2.js + * @description If GetBase(x) is null, throw ReferenceError + */ + +//CHECK#1 +try { + x & 1; + $ERROR('#1.1: x & 1 throw ReferenceError. Actual: ' + (x & 1)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: x & 1 throw ReferenceError. Actual: ' + (e)); + } +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.1_T3.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.1_T3.js new file mode 100644 index 000000000..eb308b1b8 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.1_T3.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x & y uses GetValue + * + * @path ch11/11.10/11.10.1/S11.10.1_A2.1_T3.js + * @description If GetBase(y) is null, throw ReferenceError + */ + +//CHECK#1 +try { + 1 & y; + $ERROR('#1.1: 1 & y throw ReferenceError. Actual: ' + (1 & y)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: 1 & y throw ReferenceError. Actual: ' + (e)); + } +} + + diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.2_T1.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.2_T1.js new file mode 100644 index 000000000..b5aafe3d8 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.2_T1.js @@ -0,0 +1,71 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x & y uses [[Default Value]] + * + * @path ch11/11.10/11.10.1/S11.10.1_A2.2_T1.js + * @description If Type(value) is Object, evaluate ToPrimitive(value, Number) + */ + +//CHECK#1 +if (({valueOf: function() {return 1}} & 1) !== 1) { + $ERROR('#1: ({valueOf: function() {return 1}} & 1) === 1. Actual: ' + (({valueOf: function() {return 1}} & 1))); +} + +//CHECK#2 +if (({valueOf: function() {return 1}, toString: function() {return 0}} & 1) !== 1) { + $ERROR('#2: ({valueOf: function() {return 1}, toString: function() {return 0}} & 1) === 1. Actual: ' + (({valueOf: function() {return 1}, toString: function() {return 0}} & 1))); +} + +//CHECK#3 +if (({valueOf: function() {return 1}, toString: function() {return {}}} & 1) !== 1) { + $ERROR('#3: ({valueOf: function() {return 1}, toString: function() {return {}}} & 1) === 1. Actual: ' + (({valueOf: function() {return 1}, toString: function() {return {}}} & 1))); +} + +//CHECK#4 +try { + if (({valueOf: function() {return 1}, toString: function() {throw "error"}} & 1) !== 1) { + $ERROR('#4.1: ({valueOf: function() {return 1}, toString: function() {throw "error"}} & 1) === 1. Actual: ' + (({valueOf: function() {return 1}, toString: function() {throw "error"}} & 1))); + } +} +catch (e) { + if (e === "error") { + $ERROR('#4.2: ({valueOf: function() {return 1}, toString: function() {throw "error"}} & 1) not throw "error"'); + } else { + $ERROR('#4.3: ({valueOf: function() {return 1}, toString: function() {throw "error"}} & 1) not throw Error. Actual: ' + (e)); + } +} + +//CHECK#5 +if ((1 & {toString: function() {return 1}}) !== 1) { + $ERROR('#5.1: (1 & {toString: function() {return 1}}) === 1. Actual: ' + ((1 & {toString: function() {return 1}}))); +} + +//CHECK#6 +if ((1 & {valueOf: function() {return {}}, toString: function() {return 1}}) !== 1) { + $ERROR('#6: (1 & {valueOf: function() {return {}}, toString: function() {return 1}}) === 1. Actual: ' + ((1 & {valueOf: function() {return {}}, toString: function() {return 1}}))); +} + +//CHECK#7 +try { + 1 & {valueOf: function() {throw "error"}, toString: function() {return 1}}; + $ERROR('#7.1: 1 & {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (1 & {valueOf: function() {throw "error"}, toString: function() {return 1}})); +} +catch (e) { + if (e !== "error") { + $ERROR('#7.2: 1 & {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e)); + } +} + +//CHECK#8 +try { + 1 & {valueOf: function() {return {}}, toString: function() {return {}}}; + $ERROR('#8.1: 1 & {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 & {valueOf: function() {return {}}, toString: function() {return {}}})); +} +catch (e) { + if ((e instanceof TypeError) !== true) { + $ERROR('#8.2: 1 & {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e)); + } +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.3_T1.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.3_T1.js new file mode 100644 index 000000000..079e2ccb4 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.3_T1.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * ToInt32(first expression) is called first, and then ToInt32(second expression) + * + * @path ch11/11.10/11.10.1/S11.10.1_A2.3_T1.js + * @description Checking by using "throw" + */ + +//CHECK#1 +var x = { valueOf: function () { throw "x"; } }; +var y = { valueOf: function () { throw "y"; } }; +try { + x & y; + $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x & y throw "x". Actual: ' + (x & y)); +} catch (e) { + if (e === "y") { + $ERROR('#1.2: ToInt32(first expression) is called first, and then ToInt32(second expression)'); + } else { + if (e !== "x") { + $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x & y throw "x". Actual: ' + (e)); + } + } +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.4_T1.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.4_T1.js new file mode 100644 index 000000000..c77c23d5d --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.4_T1.js @@ -0,0 +1,23 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * First expression is evaluated first, and then second expression + * + * @path ch11/11.10/11.10.1/S11.10.1_A2.4_T1.js + * @description Checking with "=" + */ + +//CHECK#1 +var x = 0; +if (((x = 1) & x) !== 1) { + $ERROR('#1: var x = 0; ((x = 1) & x) === 1. Actual: ' + (((x = 1) & x))); +} + +//CHECK#2 +var x = 0; +if ((x & (x = 1)) !== 0) { + $ERROR('#2: var x = 0; (x & (x = 1)) === 0. Actual: ' + ((x & (x = 1)))); +} + + diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.4_T2.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.4_T2.js new file mode 100644 index 000000000..23b8d91cf --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.4_T2.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * First expression is evaluated first, and then second expression + * + * @path ch11/11.10/11.10.1/S11.10.1_A2.4_T2.js + * @description Checking with "throw" + */ + +//CHECK#1 +var x = function () { throw "x"; }; +var y = function () { throw "y"; }; +try { + x() & y(); + $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() & y() throw "x". Actual: ' + (x() & y())); +} catch (e) { + if (e === "y") { + $ERROR('#1.2: First expression is evaluated first, and then second expression'); + } else { + if (e !== "x") { + $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() & y() throw "x". Actual: ' + (e)); + } + } +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.4_T3.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.4_T3.js new file mode 100644 index 000000000..2aef6019b --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A2.4_T3.js @@ -0,0 +1,28 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * First expression is evaluated first, and then second expression + * + * @path ch11/11.10/11.10.1/S11.10.1_A2.4_T3.js + * @description Checking with undeclarated variables + * @noStrict + */ + +//CHECK#1 +try { + x & (x = 1); + $ERROR('#1.1: x & (x = 1) throw ReferenceError. Actual: ' + (x & (x = 1))); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: x & (x = 1) throw ReferenceError. Actual: ' + (e)); + } +} + +//CHECK#2 +if (((y = 1) & y) !== 1) { + $ERROR('#2: ((y = 1) & y) === 1. Actual: ' + (((y = 1) & y))); +} + + diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.1.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.1.js new file mode 100644 index 000000000..3818831d2 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.1.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x & y returns ToNumber(x) & ToNumber(y) + * + * @path ch11/11.10/11.10.1/S11.10.1_A3_T1.1.js + * @description Type(x) and Type(y) are primitive boolean and Boolean object + */ + +//CHECK#1 +if ((true & true) !== 1) { + $ERROR('#1: (true & true) === 1. Actual: ' + ((true & true))); +} + +//CHECK#2 +if ((new Boolean(true) & true) !== 1) { + $ERROR('#2: (new Boolean(true) & true) === 1. Actual: ' + ((new Boolean(true) & true))); +} + +//CHECK#3 +if ((true & new Boolean(true)) !== 1) { + $ERROR('#3: (true & new Boolean(true)) === 1. Actual: ' + ((true & new Boolean(true)))); +} + +//CHECK#4 +if ((new Boolean(true) & new Boolean(true)) !== 1) { + $ERROR('#4: (new Boolean(true) & new Boolean(true)) === 1. Actual: ' + ((new Boolean(true) & new Boolean(true)))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.2.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.2.js new file mode 100644 index 000000000..96f0a7c52 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.2.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x & y returns ToNumber(x) & ToNumber(y) + * + * @path ch11/11.10/11.10.1/S11.10.1_A3_T1.2.js + * @description Type(x) and Type(y) are primitive number and Number object + */ + +//CHECK#1 +if ((1 & 1) !== 1) { + $ERROR('#1: (1 & 1) === 1. Actual: ' + ((1 & 1))); +} + +//CHECK#2 +if ((new Number(1) & 1) !== 1) { + $ERROR('#2: (new Number(1) & 1) === 1. Actual: ' + ((new Number(1) & 1))); +} + +//CHECK#3 +if ((1 & new Number(1)) !== 1) { + $ERROR('#3: (1 & new Number(1)) === 1. Actual: ' + ((1 & new Number(1)))); +} + +//CHECK#4 +if ((new Number(1) & new Number(1)) !== 1) { + $ERROR('#4: (new Number(1) & new Number(1)) === 1. Actual: ' + ((new Number(1) & new Number(1)))); +} + + diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.3.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.3.js new file mode 100644 index 000000000..e94451b58 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.3.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x & y returns ToNumber(x) & ToNumber(y) + * + * @path ch11/11.10/11.10.1/S11.10.1_A3_T1.3.js + * @description Type(x) and Type(y) are primitive string and String object + */ + +//CHECK#1 +if (("1" & "1") !== 1) { + $ERROR('#1: ("1" & "1") === 1. Actual: ' + (("1" & "1"))); +} + +//CHECK#2 +if ((new String("1") & "1") !== 1) { + $ERROR('#2: (new String("1") & "1") === 1. Actual: ' + ((new String("1") & "1"))); +} + +//CHECK#3 +if (("1" & new String("1")) !== 1) { + $ERROR('#3: ("1" & new String("1")) === 1. Actual: ' + (("1" & new String("1")))); +} + +//CHECK#4 +if ((new String("1") & new String("1")) !== 1) { + $ERROR('#4: (new String("1") & new String("1")) === 1. Actual: ' + ((new String("1") & new String("1")))); +} + +//CHECK#5 +if (("x" & "1") !== 0) { + $ERROR('#5: ("x" & "1") === 0. Actual: ' + (("x" & "1"))); +} + +//CHECK#6 +if (("1" & "x") !== 0) { + $ERROR('#6: ("1" & "x") === 0. Actual: ' + (("1" & "x"))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.4.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.4.js new file mode 100644 index 000000000..ba187bd35 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.4.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x & y returns ToNumber(x) & ToNumber(y) + * + * @path ch11/11.10/11.10.1/S11.10.1_A3_T1.4.js + * @description Type(x) and Type(y) are null and undefined + */ + +//CHECK#1 +if ((null & undefined) !== 0) { + $ERROR('#1: (null & undefined) === 0. Actual: ' + ((null & undefined))); +} + +//CHECK#2 +if ((undefined & null) !== 0) { + $ERROR('#2: (undefined & null) === 0. Actual: ' + ((undefined & null))); +} + +//CHECK#3 +if ((undefined & undefined) !== 0) { + $ERROR('#3: (undefined & undefined) === 0. Actual: ' + ((undefined & undefined))); +} + +//CHECK#4 +if ((null & null) !== 0) { + $ERROR('#4: (null & null) === 0. Actual: ' + ((null & null))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.5.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.5.js new file mode 100644 index 000000000..437336a4b --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T1.5.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x & y returns ToNumber(x) & ToNumber(y) + * + * @path ch11/11.10/11.10.1/S11.10.1_A3_T1.5.js + * @description Type(x) and Type(y) are Object object and Function object + */ + +//CHECK#1 +if (({} & function(){return 1}) !== 0) { + $ERROR('#1: ({} & function(){return 1}) === 0. Actual: ' + (({} & function(){return 1}))); +} + +//CHECK#2 +if ((function(){return 1} & {}) !== 0) { + $ERROR('#2: (function(){return 1} & {}) === 0. Actual: ' + ((function(){return 1} & {}))); +} + +//CHECK#3 +if ((function(){return 1} & function(){return 1}) !== 0) { + $ERROR('#3: (function(){return 1} & function(){return 1}) === 0. Actual: ' + ((function(){return 1} & function(){return 1}))); +} + +//CHECK#4 +if (({} & {}) !== 0) { + $ERROR('#4: ({} & {}) === 0. Actual: ' + (({} & {}))); +} + + diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.1.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.1.js new file mode 100644 index 000000000..7a70acf5f --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.1.js @@ -0,0 +1,50 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x & y returns ToNumber(x) & ToNumber(y) + * + * @path ch11/11.10/11.10.1/S11.10.1_A3_T2.1.js + * @description Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object) + */ + +//CHECK#1 +if ((true & 1) !== 1) { + $ERROR('#1: (true & 1) === 1. Actual: ' + ((true & 1))); +} + +//CHECK#2 +if ((1 & true) !== 1) { + $ERROR('#2: (1 & true) === 1. Actual: ' + ((1 & true))); +} + +//CHECK#3 +if ((new Boolean(true) & 1) !== 1) { + $ERROR('#3: (new Boolean(true) & 1) === 1. Actual: ' + ((new Boolean(true) & 1))); +} + +//CHECK#4 +if ((1 & new Boolean(true)) !== 1) { + $ERROR('#4: (1 & new Boolean(true)) === 1. Actual: ' + ((1 & new Boolean(true)))); +} + +//CHECK#5 +if ((true & new Number(1)) !== 1) { + $ERROR('#5: (true & new Number(1)) === 1. Actual: ' + ((true & new Number(1)))); +} + +//CHECK#6 +if ((new Number(1) & true) !== 1) { + $ERROR('#6: (new Number(1) & true) === 1. Actual: ' + ((new Number(1) & true))); +} + +//CHECK#7 +if ((new Boolean(true) & new Number(1)) !== 1) { + $ERROR('#7: (new Boolean(true) & new Number(1)) === 1. Actual: ' + ((new Boolean(true) & new Number(1)))); +} + +//CHECK#8 +if ((new Number(1) & new Boolean(true)) !== 1) { + $ERROR('#8: (new Number(1) & new Boolean(true)) === 1. Actual: ' + ((new Number(1) & new Boolean(true)))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.2.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.2.js new file mode 100644 index 000000000..72765faf2 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.2.js @@ -0,0 +1,60 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x & y returns ToNumber(x) & ToNumber(y) + * + * @path ch11/11.10/11.10.1/S11.10.1_A3_T2.2.js + * @description Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object) + */ + +//CHECK#1 +if (("1" & 1) !== 1) { + $ERROR('#1: ("1" & 1) === 1. Actual: ' + (("1" & 1))); +} + +//CHECK#2 +if ((1 & "1") !== 1) { + $ERROR('#2: (1 & "1") === 1. Actual: ' + ((1 & "1"))); +} + +//CHECK#3 +if ((new String("1") & 1) !== 1) { + $ERROR('#3: (new String("1") & 1) === 1. Actual: ' + ((new String("1") & 1))); +} + +//CHECK#4 +if ((1 & new String("1")) !== 1) { + $ERROR('#4: (1 & new String("1")) === 1. Actual: ' + ((1 & new String("1")))); +} + +//CHECK#5 +if (("1" & new Number(1)) !== 1) { + $ERROR('#5: ("1" & new Number(1)) === 1. Actual: ' + (("1" & new Number(1)))); +} + +//CHECK#6 +if ((new Number(1) & "1") !== 1) { + $ERROR('#6: (new Number(1) & "1") === 1. Actual: ' + ((new Number(1) & "1"))); +} + +//CHECK#7 +if ((new String("1") & new Number(1)) !== 1) { + $ERROR('#7: (new String("1") & new Number(1)) === 1. Actual: ' + ((new String("1") & new Number(1)))); +} + +//CHECK#8 +if ((new Number(1) & new String("1")) !== 1) { + $ERROR('#8: (new Number(1) & new String("1")) === 1. Actual: ' + ((new Number(1) & new String("1")))); +} + +//CHECK#9 +if (("x" & 1) !== 0) { + $ERROR('#9: ("x" & 1) === 0. Actual: ' + (("x" & 1))); +} + +//CHECK#10 +if ((1 & "x") !== 0) { + $ERROR('#10: (1 & "x") === 0. Actual: ' + ((1 & "x"))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.3.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.3.js new file mode 100644 index 000000000..a133e1f43 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.3.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x & y returns ToNumber(x) & ToNumber(y) + * + * @path ch11/11.10/11.10.1/S11.10.1_A3_T2.3.js + * @description Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null + */ + +//CHECK#1 +if ((1 & null) !== 0) { + $ERROR('#1: (1 & null) === 0. Actual: ' + ((1 & null))); +} + +//CHECK#2 +if ((null & 1) !== 0) { + $ERROR('#2: (null & 1) === 0. Actual: ' + ((null & 1))); +} + +//CHECK#3 +if ((new Number(1) & null) !== 0) { + $ERROR('#3: (new Number(1) & null) === 0. Actual: ' + ((new Number(1) & null))); +} + +//CHECK#4 +if ((null & new Number(1)) !== 0) { + $ERROR('#4: (null & new Number(1)) === 0. Actual: ' + ((null & new Number(1)))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.4.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.4.js new file mode 100644 index 000000000..1ceb71fa0 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.4.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x & y returns ToNumber(x) & ToNumber(y) + * + * @path ch11/11.10/11.10.1/S11.10.1_A3_T2.4.js + * @description Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined + */ + +//CHECK#1 +if ((1 & undefined) !== 0) { + $ERROR('#1: (1 & undefined) === 0. Actual: ' + ((1 & undefined))); +} + +//CHECK#2 +if ((undefined & 1) !== 0) { + $ERROR('#2: (undefined & 1) === 0. Actual: ' + ((undefined & 1))); +} + +//CHECK#3 +if ((new Number(1) & undefined) !== 0) { + $ERROR('#3: (new Number(1) & undefined) === 0. Actual: ' + ((new Number(1) & undefined))); +} + +//CHECK#4 +if ((undefined & new Number(1)) !== 0) { + $ERROR('#4: (undefined & new Number(1)) === 0. Actual: ' + ((undefined & new Number(1)))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.5.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.5.js new file mode 100644 index 000000000..3983069f4 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.5.js @@ -0,0 +1,50 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x & y returns ToNumber(x) & ToNumber(y) + * + * @path ch11/11.10/11.10.1/S11.10.1_A3_T2.5.js + * @description Type(x) us different from Type(y) and both types are String (primitive or object) or Boolean (primitive and object) + */ + +//CHECK#1 +if ((true & "1") !== 1) { + $ERROR('#1: (true & "1") === 1. Actual: ' + ((true & "1"))); +} + +//CHECK#2 +if (("1" & true) !== 1) { + $ERROR('#2: ("1" & true) === 1. Actual: ' + (("1" & true))); +} + +//CHECK#3 +if ((new Boolean(true) & "1") !== 1) { + $ERROR('#3: (new Boolean(true) & "1") === 1. Actual: ' + ((new Boolean(true) & "1"))); +} + +//CHECK#4 +if (("1" & new Boolean(true)) !== 1) { + $ERROR('#4: ("1" & new Boolean(true)) === 1. Actual: ' + (("1" & new Boolean(true)))); +} + +//CHECK#5 +if ((true & new String("1")) !== 1) { + $ERROR('#5: (true & new String("1")) === 1. Actual: ' + ((true & new String("1")))); +} + +//CHECK#6 +if ((new String("1") & true) !== 1) { + $ERROR('#6: (new String("1") & true) === 1. Actual: ' + ((new String("1") & true))); +} + +//CHECK#7 +if ((new Boolean(true) & new String("1")) !== 1) { + $ERROR('#7: (new Boolean(true) & new String("1")) === 1. Actual: ' + ((new Boolean(true) & new String("1")))); +} + +//CHECK#8 +if ((new String("1") & new Boolean(true)) !== 1) { + $ERROR('#8: (new String("1") & new Boolean(true)) === 1. Actual: ' + ((new String("1") & new Boolean(true)))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.6.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.6.js new file mode 100644 index 000000000..b9f66bb79 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.6.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x & y returns ToNumber(x) & ToNumber(y) + * + * @path ch11/11.10/11.10.1/S11.10.1_A3_T2.6.js + * @description Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined + */ + +//CHECK#1 +if (("1" & undefined) !== 0) { + $ERROR('#1: ("1" & undefined) === 0. Actual: ' + (("1" & undefined))); +} + +//CHECK#2 +if ((undefined & "1") !== 0) { + $ERROR('#2: (undefined & "1") === 0. Actual: ' + ((undefined & "1"))); +} + +//CHECK#3 +if ((new String("1") & undefined) !== 0) { + $ERROR('#3: (new String("1") & undefined) === 0. Actual: ' + ((new String("1") & undefined))); +} + +//CHECK#4 +if ((undefined & new String("1")) !== 0) { + $ERROR('#4: (undefined & new String("1")) === 0. Actual: ' + ((undefined & new String("1")))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.7.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.7.js new file mode 100644 index 000000000..0dbabe1f0 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.7.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x & y returns ToNumber(x) & ToNumber(y) + * + * @path ch11/11.10/11.10.1/S11.10.1_A3_T2.7.js + * @description Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null + */ + +//CHECK#1 +if (("1" & null) !== 0) { + $ERROR('#1: ("1" & null) === 0. Actual: ' + (("1" & null))); +} + +//CHECK#2 +if ((null & "1") !== 0) { + $ERROR('#2: (null & "1") === 0. Actual: ' + ((null & "1"))); +} + +//CHECK#3 +if ((new String("1") & null) !== 0) { + $ERROR('#3: (new String("1") & null) === 0. Actual: ' + ((new String("1") & null))); +} + +//CHECK#4 +if ((null & new String("1")) !== 0) { + $ERROR('#4: (null & new String("1")) === 0. Actual: ' + ((null & new String("1")))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.8.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.8.js new file mode 100644 index 000000000..33eec3241 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.8.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x & y returns ToNumber(x) & ToNumber(y) + * + * @path ch11/11.10/11.10.1/S11.10.1_A3_T2.8.js + * @description Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined + */ + +//CHECK#1 +if ((true & undefined) !== 0) { + $ERROR('#1: (true & undefined) === 0. Actual: ' + ((true & undefined))); +} + +//CHECK#2 +if ((undefined & true) !== 0) { + $ERROR('#2: (undefined & true) === 0. Actual: ' + ((undefined & true))); +} + +//CHECK#3 +if ((new Boolean(true) & undefined) !== 0) { + $ERROR('#3: (new Boolean(true) & undefined) === 0. Actual: ' + ((new Boolean(true) & undefined))); +} + +//CHECK#4 +if ((undefined & new Boolean(true)) !== 0) { + $ERROR('#4: (undefined & new Boolean(true)) === 0. Actual: ' + ((undefined & new Boolean(true)))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.9.js b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.9.js new file mode 100644 index 000000000..9c94ad0e7 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/S11.10.1_A3_T2.9.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x & y returns ToNumber(x) & ToNumber(y) + * + * @path ch11/11.10/11.10.1/S11.10.1_A3_T2.9.js + * @description Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null + */ + +//CHECK#1 +if ((true & null) !== 0) { + $ERROR('#1: (true & null) === 0. Actual: ' + ((true & null))); +} + +//CHECK#2 +if ((null & true) !== 0) { + $ERROR('#2: (null & true) === 0. Actual: ' + ((null & true))); +} + +//CHECK#3 +if ((new Boolean(true) & null) !== 0) { + $ERROR('#3: (new Boolean(true) & null) === 0. Actual: ' + ((new Boolean(true) & null))); +} + +//CHECK#4 +if ((null & new Boolean(true)) !== 0) { + $ERROR('#4: (null & new Boolean(true)) === 0. Actual: ' + ((null & new Boolean(true)))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/browser.js b/js/src/tests/test262/ch11/11.10/11.10.1/browser.js new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/browser.js diff --git a/js/src/tests/test262/ch11/11.10/11.10.1/shell.js b/js/src/tests/test262/ch11/11.10/11.10.1/shell.js new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.1/shell.js diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A1.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A1.js new file mode 100644 index 000000000..6798a9ea4 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A1.js @@ -0,0 +1,61 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * White Space and Line Terminator between BitwiseXORExpression and "^" or between "^" and BitwiseANDExpression are allowed + * + * @path ch11/11.10/11.10.2/S11.10.2_A1.js + * @description The check uses eval + */ + +//CHECK#1 +if ((eval("1\u0009^\u00091")) !== 0) { + $ERROR('#1: (1\\u0009^\\u00091) === 0'); +} + +//CHECK#2 +if ((eval("1\u000B^\u000B1")) !== 0) { + $ERROR('#2: (1\\u000B^\\u000B1) === 0'); +} + +//CHECK#3 +if ((eval("1\u000C^\u000C1")) !== 0) { + $ERROR('#3: (1\\u000C^\\u000C1) === 0'); +} + +//CHECK#4 +if ((eval("1\u0020^\u00201")) !== 0) { + $ERROR('#4: (1\\u0020^\\u00201) === 0'); +} + +//CHECK#5 +if ((eval("1\u00A0^\u00A01")) !== 0) { + $ERROR('#5: (1\\u00A0^\\u00A01) === 0'); +} + +//CHECK#6 +if ((eval("1\u000A^\u000A1")) !== 0) { + $ERROR('#6: (1\\u000A^\\u000A1) === 0'); +} + +//CHECK#7 +if ((eval("1\u000D^\u000D1")) !== 0) { + $ERROR('#7: (1\\u000D^\\u000D1) === 0'); +} + +//CHECK#8 +if ((eval("1\u2028^\u20281")) !== 0) { + $ERROR('#8: (1\\u2028^\\u20281) === 0'); +} + +//CHECK#9 +if ((eval("1\u2029^\u20291")) !== 0) { + $ERROR('#9: (1\\u2029^\\u20291) === 0'); +} + + +//CHECK#10 +if ((eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029^\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) !== 0) { + $ERROR('#10: (1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029^\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === 0'); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.1_T1.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.1_T1.js new file mode 100644 index 000000000..f4aad4a19 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.1_T1.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x ^ y uses GetValue + * + * @path ch11/11.10/11.10.2/S11.10.2_A2.1_T1.js + * @description Either Type is not Reference or GetBase is not null + */ + +//CHECK#1 +if ((1 ^ 1) !== 0) { + $ERROR('#1: (1 ^ 1) === 0. Actual: ' + ((1 ^ 1))); +} + +//CHECK#2 +var x = 1; +if ((x ^ 1) !== 0) { + $ERROR('#2: var x = 1; (x ^ 1) === 0. Actual: ' + ((x ^ 1))); +} + +//CHECK#3 +var y = 1; +if ((1 ^ y) !== 0) { + $ERROR('#3: var y = 1; (1 ^ y) === 0. Actual: ' + ((1 ^ y))); +} + +//CHECK#4 +var x = 1; +var y = 1; +if ((x ^ y) !== 0) { + $ERROR('#4: var x = 1; var y = 1; (x ^ y) === 0. Actual: ' + ((x ^ y))); +} + +//CHECK#5 +var objectx = new Object(); +var objecty = new Object(); +objectx.prop = 1; +objecty.prop = 1; +if ((objectx.prop ^ objecty.prop) !== 0) { + $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; (objectx.prop ^ objecty.prop) === 0. Actual: ' + ((objectx.prop ^ objecty.prop))); +} + + diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.1_T2.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.1_T2.js new file mode 100644 index 000000000..503ac9678 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.1_T2.js @@ -0,0 +1,21 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x ^ y uses GetValue + * + * @path ch11/11.10/11.10.2/S11.10.2_A2.1_T2.js + * @description If GetBase(x) is null, throw ReferenceError + */ + +//CHECK#1 +try { + x ^ 1; + $ERROR('#1.1: x ^ 1 throw ReferenceError. Actual: ' + (x ^ 1)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: x ^ 1 throw ReferenceError. Actual: ' + (e)); + } +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.1_T3.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.1_T3.js new file mode 100644 index 000000000..6c5969614 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.1_T3.js @@ -0,0 +1,21 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x ^ y uses GetValue + * + * @path ch11/11.10/11.10.2/S11.10.2_A2.1_T3.js + * @description If GetBase(y) is null, throw ReferenceError + */ + +//CHECK#1 +try { + 1 ^ y; + $ERROR('#1.1: 1 ^ y throw ReferenceError. Actual: ' + (1 ^ y)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: 1 ^ y throw ReferenceError. Actual: ' + (e)); + } +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.2_T1.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.2_T1.js new file mode 100644 index 000000000..0a00ada6d --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.2_T1.js @@ -0,0 +1,71 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x ^ y uses [[Default Value]] + * + * @path ch11/11.10/11.10.2/S11.10.2_A2.2_T1.js + * @description If Type(value) is Object, evaluate ToPrimitive(value, Number) + */ + +//CHECK#1 +if (({valueOf: function() {return 1}} ^ 1) !== 0) { + $ERROR('#1: ({valueOf: function() {return 1}} ^ 1) === 0. Actual: ' + (({valueOf: function() {return 1}} ^ 1))); +} + +//CHECK#2 +if (({valueOf: function() {return 1}, toString: function() {return 0}} ^ 1) !== 0) { + $ERROR('#2: ({valueOf: function() {return 1}, toString: function() {return 0}} ^ 1) === 0. Actual: ' + (({valueOf: function() {return 1}, toString: function() {return 0}} ^ 1))); +} + +//CHECK#3 +if (({valueOf: function() {return 1}, toString: function() {return {}}} ^ 1) !== 0) { + $ERROR('#3: ({valueOf: function() {return 1}, toString: function() {return {}}} ^ 1) === 0. Actual: ' + (({valueOf: function() {return 1}, toString: function() {return {}}} ^ 1))); +} + +//CHECK#4 +try { + if (({valueOf: function() {return 1}, toString: function() {throw "error"}} ^ 1) !== 0) { + $ERROR('#4.1: ({valueOf: function() {return 1}, toString: function() {throw "error"}} ^ 1) === 0. Actual: ' + (({valueOf: function() {return 1}, toString: function() {throw "error"}} ^ 1))); + } +} +catch (e) { + if (e === "error") { + $ERROR('#4.2: ({valueOf: function() {return 1}, toString: function() {throw "error"}} ^ 1) not throw "error"'); + } else { + $ERROR('#4.3: ({valueOf: function() {return 1}, toString: function() {throw "error"}} ^ 1) not throw Error. Actual: ' + (e)); + } +} + +//CHECK#5 +if ((1 ^ {toString: function() {return 1}}) !== 0) { + $ERROR('#5: (1 ^ {toString: function() {return 1}}) === 0. Actual: ' + ((1 ^ {toString: function() {return 1}}))); +} + +//CHECK#6 +if ((1 ^ {valueOf: function() {return {}}, toString: function() {return 1}}) !== 0) { + $ERROR('#6: (1 ^ {valueOf: function() {return {}}, toString: function() {return 1}}) === 0. Actual: ' + ((1 ^ {valueOf: function() {return {}}, toString: function() {return 1}}))); +} + +//CHECK#7 +try { + 1 ^ {valueOf: function() {throw "error"}, toString: function() {return 1}}; + $ERROR('#7.1: 1 ^ {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (1 ^ {valueOf: function() {throw "error"}, toString: function() {return 1}})); +} +catch (e) { + if (e !== "error") { + $ERROR('#7.2: 1 ^ {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e)); + } +} + +//CHECK#8 +try { + 1 ^ {valueOf: function() {return {}}, toString: function() {return {}}}; + $ERROR('#8.1: 1 ^ {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 ^ {valueOf: function() {return {}}, toString: function() {return {}}})); +} +catch (e) { + if ((e instanceof TypeError) !== true) { + $ERROR('#8.2: 1 ^ {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e)); + } +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.3_T1.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.3_T1.js new file mode 100644 index 000000000..cbf3009a1 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.3_T1.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * ToInt32(first expression) is called first, and then ToInt32(second expression) + * + * @path ch11/11.10/11.10.2/S11.10.2_A2.3_T1.js + * @description Checking with "throw" + */ + +//CHECK#1 +var x = { valueOf: function () { throw "x"; } }; +var y = { valueOf: function () { throw "y"; } }; +try { + x ^ y; + $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x ^ y throw "x". Actual: ' + (x ^ y)); +} catch (e) { + if (e === "y") { + $ERROR('#1.2: ToInt32(first expression) is called first, and then ToInt32(second expression)'); + } else { + if (e !== "x") { + $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x ^ y throw "x". Actual: ' + (e)); + } + } +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.4_T1.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.4_T1.js new file mode 100644 index 000000000..e1af1b864 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.4_T1.js @@ -0,0 +1,24 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * First expression is evaluated first, and then second expression + * + * @path ch11/11.10/11.10.2/S11.10.2_A2.4_T1.js + * @description Checking with "=" + */ + +//CHECK#1 +var x = 1; +if (((x = 0) ^ x) !== 0) { + $ERROR('#1: var x = 0; ((x = 1) ^ x) === 0. Actual: ' + (((x = 1) ^ x))); +} + +//CHECK#2 +var x = 0; +if ((x ^ (x = 1)) !== 1) { + $ERROR('#2: var x = 0; (x ^ (x = 1)) === 1. Actual: ' + ((x ^ (x = 1)))); +} + + + diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.4_T2.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.4_T2.js new file mode 100644 index 000000000..5cc5a1540 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.4_T2.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * First expression is evaluated first, and then second expression + * + * @path ch11/11.10/11.10.2/S11.10.2_A2.4_T2.js + * @description Checking with "throw" + */ + +//CHECK#1 +var x = function () { throw "x"; }; +var y = function () { throw "y"; }; +try { + x() ^ y(); + $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() ^ y() throw "x". Actual: ' + (x() ^ y())); +} catch (e) { + if (e === "y") { + $ERROR('#1.2: First expression is evaluated first, and then second expression'); + } else { + if (e !== "x") { + $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() ^ y() throw "x". Actual: ' + (e)); + } + } +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.4_T3.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.4_T3.js new file mode 100644 index 000000000..5241ec557 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A2.4_T3.js @@ -0,0 +1,29 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * First expression is evaluated first, and then second expression + * + * @path ch11/11.10/11.10.2/S11.10.2_A2.4_T3.js + * @description Checking with undeclarated variables + * @noStrict + */ + +//CHECK#1 +try { + x ^ (x = 1); + $ERROR('#1.1: x ^ (x = 1) throw ReferenceError. Actual: ' + (x ^ (x = 1))); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: x ^ (x = 1) throw ReferenceError. Actual: ' + (e)); + } +} + +//CHECK#2 +if (((y = 1) ^ y) !== 0) { + $ERROR('#2: ((y = 1) ^ y) === 0. Actual: ' + (((y = 1) ^ y))); +} + + + diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.1.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.1.js new file mode 100644 index 000000000..e6466e784 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.1.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x ^ y returns ToNumber(x) ^ ToNumber(y) + * + * @path ch11/11.10/11.10.2/S11.10.2_A3_T1.1.js + * @description Type(x) and Type(y) are primitive boolean and Boolean object + */ + +//CHECK#1 +if ((true ^ true) !== 0) { + $ERROR('#1: (true ^ true) === 0. Actual: ' + ((true ^ true))); +} + +//CHECK#2 +if ((new Boolean(true) ^ true) !== 0) { + $ERROR('#2: (new Boolean(true) ^ true) === 0. Actual: ' + ((new Boolean(true) ^ true))); +} + +//CHECK#3 +if ((true ^ new Boolean(true)) !== 0) { + $ERROR('#3: (true ^ new Boolean(true)) === 0. Actual: ' + ((true ^ new Boolean(true)))); +} + +//CHECK#4 +if ((new Boolean(true) ^ new Boolean(true)) !== 0) { + $ERROR('#4: (new Boolean(true) ^ new Boolean(true)) === 0. Actual: ' + ((new Boolean(true) ^ new Boolean(true)))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.2.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.2.js new file mode 100644 index 000000000..9b997e82f --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.2.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x ^ y returns ToNumber(x) ^ ToNumber(y) + * + * @path ch11/11.10/11.10.2/S11.10.2_A3_T1.2.js + * @description Type(x) and Type(y) are primitive number and Number object + */ + +//CHECK#1 +if ((1 ^ 1) !== 0) { + $ERROR('#1: (1 ^ 1) === 0. Actual: ' + ((1 ^ 1))); +} + +//CHECK#2 +if ((new Number(1) ^ 1) !== 0) { + $ERROR('#2: (new Number(1) ^ 1) === 0. Actual: ' + ((new Number(1) ^ 1))); +} + +//CHECK#3 +if ((1 ^ new Number(1)) !== 0) { + $ERROR('#3: (1 ^ new Number(1)) === 0. Actual: ' + ((1 ^ new Number(1)))); +} + +//CHECK#4 +if ((new Number(1) ^ new Number(1)) !== 0) { + $ERROR('#4: (new Number(1) ^ new Number(1)) === 0. Actual: ' + ((new Number(1) ^ new Number(1)))); +} + + diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.3.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.3.js new file mode 100644 index 000000000..acd61cf11 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.3.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x ^ y returns ToNumber(x) ^ ToNumber(y) + * + * @path ch11/11.10/11.10.2/S11.10.2_A3_T1.3.js + * @description Type(x) and Type(y) are primitive string and String object + */ + +//CHECK#1 +if (("1" ^ "1") !== 0) { + $ERROR('#1: ("1" ^ "1") === 0. Actual: ' + (("1" ^ "1"))); +} + +//CHECK#2 +if ((new String("1") ^ "1") !== 0) { + $ERROR('#2: (new String("1") ^ "1") === 0. Actual: ' + ((new String("1") ^ "1"))); +} + +//CHECK#3 +if (("1" ^ new String("1")) !== 0) { + $ERROR('#3: ("1" ^ new String("1")) === 0. Actual: ' + (("1" ^ new String("1")))); +} + +//CHECK#4 +if ((new String("1") ^ new String("1")) !== 0) { + $ERROR('#4: (new String("1") ^ new String("1")) === 0. Actual: ' + ((new String("1") ^ new String("1")))); +} + +//CHECK#5 +if (("x" ^ "1") !== 1) { + $ERROR('#5: ("x" ^ "1") === 1. Actual: ' + (("x" ^ "1"))); +} + +//CHECK#6 +if (("1" ^ "x") !== 1) { + $ERROR('#6: ("1" ^ "x") === 1. Actual: ' + (("1" ^ "x"))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.4.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.4.js new file mode 100644 index 000000000..72698a656 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.4.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x ^ y returns ToNumber(x) ^ ToNumber(y) + * + * @path ch11/11.10/11.10.2/S11.10.2_A3_T1.4.js + * @description Type(x) and Type(y) are null and undefined + */ + +//CHECK#1 +if ((null ^ undefined) !== 0) { + $ERROR('#1: (null ^ undefined) === 0. Actual: ' + ((null ^ undefined))); +} + +//CHECK#2 +if ((undefined ^ null) !== 0) { + $ERROR('#2: (undefined ^ null) === 0. Actual: ' + ((undefined ^ null))); +} + +//CHECK#3 +if ((undefined ^ undefined) !== 0) { + $ERROR('#3: (undefined ^ undefined) === 0. Actual: ' + ((undefined ^ undefined))); +} + +//CHECK#4 +if ((null ^ null) !== 0) { + $ERROR('#4: (null ^ null) === 0. Actual: ' + ((null ^ null))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.5.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.5.js new file mode 100644 index 000000000..b415d1c75 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T1.5.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x ^ y returns ToNumber(x) ^ ToNumber(y) + * + * @path ch11/11.10/11.10.2/S11.10.2_A3_T1.5.js + * @description Type(x) and Type(y) are Object object and Function object + */ + +//CHECK#1 +if (({} ^ function(){return 1}) !== 0) { + $ERROR('#1: ({} ^ function(){return 1}) === 0. Actual: ' + (({} ^ function(){return 1}))); +} + +//CHECK#2 +if ((function(){return 1} ^ {}) !== 0) { + $ERROR('#2: (function(){return 1} ^ {}) === 0. Actual: ' + ((function(){return 1} ^ {}))); +} + +//CHECK#3 +if ((function(){return 1} ^ function(){return 1}) !== 0) { + $ERROR('#3: (function(){return 1} ^ function(){return 1}) === 0. Actual: ' + ((function(){return 1} ^ function(){return 1}))); +} + +//CHECK#4 +if (({} ^ {}) !== 0) { + $ERROR('#4: ({} ^ {}) === 0. Actual: ' + (({} ^ {}))); +} + + diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.1.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.1.js new file mode 100644 index 000000000..c32718b6e --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.1.js @@ -0,0 +1,50 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x ^ y returns ToNumber(x) ^ ToNumber(y) + * + * @path ch11/11.10/11.10.2/S11.10.2_A3_T2.1.js + * @description Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object) + */ + +//CHECK#1 +if ((true ^ 1) !== 0) { + $ERROR('#1: (true ^ 1) === 0. Actual: ' + ((true ^ 1))); +} + +//CHECK#2 +if ((1 ^ true) !== 0) { + $ERROR('#2: (1 ^ true) === 0. Actual: ' + ((1 ^ true))); +} + +//CHECK#3 +if ((new Boolean(true) ^ 1) !== 0) { + $ERROR('#3: (new Boolean(true) ^ 1) === 0. Actual: ' + ((new Boolean(true) ^ 1))); +} + +//CHECK#4 +if ((1 ^ new Boolean(true)) !== 0) { + $ERROR('#4: (1 ^ new Boolean(true)) === 0. Actual: ' + ((1 ^ new Boolean(true)))); +} + +//CHECK#5 +if ((true ^ new Number(1)) !== 0) { + $ERROR('#5: (true ^ new Number(1)) === 0. Actual: ' + ((true ^ new Number(1)))); +} + +//CHECK#6 +if ((new Number(1) ^ true) !== 0) { + $ERROR('#6: (new Number(1) ^ true) === 0. Actual: ' + ((new Number(1) ^ true))); +} + +//CHECK#7 +if ((new Boolean(true) ^ new Number(1)) !== 0) { + $ERROR('#7: (new Boolean(true) ^ new Number(1)) === 0. Actual: ' + ((new Boolean(true) ^ new Number(1)))); +} + +//CHECK#8 +if ((new Number(1) ^ new Boolean(true)) !== 0) { + $ERROR('#8: (new Number(1) ^ new Boolean(true)) === 0. Actual: ' + ((new Number(1) ^ new Boolean(true)))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.2.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.2.js new file mode 100644 index 000000000..1503fbaf5 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.2.js @@ -0,0 +1,60 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x ^ y returns ToNumber(x) ^ ToNumber(y) + * + * @path ch11/11.10/11.10.2/S11.10.2_A3_T2.2.js + * @description Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object) + */ + +//CHECK#1 +if (("1" ^ 1) !== 0) { + $ERROR('#1: ("1" ^ 1) === 0. Actual: ' + (("1" ^ 1))); +} + +//CHECK#2 +if ((1 ^ "1") !== 0) { + $ERROR('#2: (1 ^ "1") === 0. Actual: ' + ((1 ^ "1"))); +} + +//CHECK#3 +if ((new String("1") ^ 1) !== 0) { + $ERROR('#3: (new String("1") ^ 1) === 0. Actual: ' + ((new String("1") ^ 1))); +} + +//CHECK#4 +if ((1 ^ new String("1")) !== 0) { + $ERROR('#4: (1 ^ new String("1")) === 0. Actual: ' + ((1 ^ new String("1")))); +} + +//CHECK#5 +if (("1" ^ new Number(1)) !== 0) { + $ERROR('#5: ("1" ^ new Number(1)) === 0. Actual: ' + (("1" ^ new Number(1)))); +} + +//CHECK#6 +if ((new Number(1) ^ "1") !== 0) { + $ERROR('#6: (new Number(1) ^ "1") === 0. Actual: ' + ((new Number(1) ^ "1"))); +} + +//CHECK#7 +if ((new String("1") ^ new Number(1)) !== 0) { + $ERROR('#7: (new String("1") ^ new Number(1)) === 0. Actual: ' + ((new String("1") ^ new Number(1)))); +} + +//CHECK#8 +if ((new Number(1) ^ new String("1")) !== 0) { + $ERROR('#8: (new Number(1) ^ new String("1")) === 0. Actual: ' + ((new Number(1) ^ new String("1")))); +} + +//CHECK#9 +if (("x" ^ 1) !== 1) { + $ERROR('#9: ("x" ^ 1) === 1. Actual: ' + (("x" ^ 1))); +} + +//CHECK#10 +if ((1 ^ "x") !== 1) { + $ERROR('#10: (1 ^ "x") === 1. Actual: ' + ((1 ^ "x"))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.3.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.3.js new file mode 100644 index 000000000..7944312eb --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.3.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x ^ y returns ToNumber(x) ^ ToNumber(y) + * + * @path ch11/11.10/11.10.2/S11.10.2_A3_T2.3.js + * @description Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null + */ + +//CHECK#1 +if ((1 ^ null) !== 1) { + $ERROR('#1: (1 ^ null) === 1. Actual: ' + ((1 ^ null))); +} + +//CHECK#2 +if ((null ^ 1) !== 1) { + $ERROR('#2: (null ^ 1) === 1. Actual: ' + ((null ^ 1))); +} + +//CHECK#3 +if ((new Number(1) ^ null) !== 1) { + $ERROR('#3: (new Number(1) ^ null) === 1. Actual: ' + ((new Number(1) ^ null))); +} + +//CHECK#4 +if ((null ^ new Number(1)) !== 1) { + $ERROR('#4: (null ^ new Number(1)) === 1. Actual: ' + ((null ^ new Number(1)))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.4.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.4.js new file mode 100644 index 000000000..6578ce84d --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.4.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x ^ y returns ToNumber(x) ^ ToNumber(y) + * + * @path ch11/11.10/11.10.2/S11.10.2_A3_T2.4.js + * @description Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined + */ + +//CHECK#1 +if ((1 ^ undefined) !== 1) { + $ERROR('#1: (1 ^ undefined) === 1. Actual: ' + ((1 ^ undefined))); +} + +//CHECK#2 +if ((undefined ^ 1) !== 1) { + $ERROR('#2: (undefined ^ 1) === 1. Actual: ' + ((undefined ^ 1))); +} + +//CHECK#3 +if ((new Number(1) ^ undefined) !== 1) { + $ERROR('#3: (new Number(1) ^ undefined) === 1. Actual: ' + ((new Number(1) ^ undefined))); +} + +//CHECK#4 +if ((undefined ^ new Number(1)) !== 1) { + $ERROR('#4: (undefined ^ new Number(1)) === 1. Actual: ' + ((undefined ^ new Number(1)))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.5.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.5.js new file mode 100644 index 000000000..2e80dfef2 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.5.js @@ -0,0 +1,50 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x ^ y returns ToNumber(x) ^ ToNumber(y) + * + * @path ch11/11.10/11.10.2/S11.10.2_A3_T2.5.js + * @description Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object) + */ + +//CHECK#1 +if ((true ^ "1") !== 0) { + $ERROR('#1: (true ^ "1") === 0. Actual: ' + ((true ^ "1"))); +} + +//CHECK#2 +if (("1" ^ true) !== 0) { + $ERROR('#2: ("1" ^ true) === 0. Actual: ' + (("1" ^ true))); +} + +//CHECK#3 +if ((new Boolean(true) ^ "1") !== 0) { + $ERROR('#3: (new Boolean(true) ^ "1") === 0. Actual: ' + ((new Boolean(true) ^ "1"))); +} + +//CHECK#4 +if (("1" ^ new Boolean(true)) !== 0) { + $ERROR('#4: ("1" ^ new Boolean(true)) === 0. Actual: ' + (("1" ^ new Boolean(true)))); +} + +//CHECK#5 +if ((true ^ new String("1")) !== 0) { + $ERROR('#5: (true ^ new String("1")) === 0. Actual: ' + ((true ^ new String("1")))); +} + +//CHECK#6 +if ((new String("1") ^ true) !== 0) { + $ERROR('#6: (new String("1") ^ true) === 0. Actual: ' + ((new String("1") ^ true))); +} + +//CHECK#7 +if ((new Boolean(true) ^ new String("1")) !== 0) { + $ERROR('#7: (new Boolean(true) ^ new String("1")) === 0. Actual: ' + ((new Boolean(true) ^ new String("1")))); +} + +//CHECK#8 +if ((new String("1") ^ new Boolean(true)) !== 0) { + $ERROR('#8: (new String("1") ^ new Boolean(true)) === 0. Actual: ' + ((new String("1") ^ new Boolean(true)))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.6.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.6.js new file mode 100644 index 000000000..b433b597e --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.6.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x ^ y returns ToNumber(x) ^ ToNumber(y) + * + * @path ch11/11.10/11.10.2/S11.10.2_A3_T2.6.js + * @description Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined + */ + +//CHECK#1 +if (("1" ^ undefined) !== 1) { + $ERROR('#1: ("1" ^ undefined) === 1. Actual: ' + (("1" ^ undefined))); +} + +//CHECK#2 +if ((undefined ^ "1") !== 1) { + $ERROR('#2: (undefined ^ "1") === 1. Actual: ' + ((undefined ^ "1"))); +} + +//CHECK#3 +if ((new String("1") ^ undefined) !== 1) { + $ERROR('#3: (new String("1") ^ undefined) === 1. Actual: ' + ((new String("1") ^ undefined))); +} + +//CHECK#4 +if ((undefined ^ new String("1")) !== 1) { + $ERROR('#4: (undefined ^ new String("1")) === 1. Actual: ' + ((undefined ^ new String("1")))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.7.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.7.js new file mode 100644 index 000000000..17996c7b8 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.7.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x ^ y returns ToNumber(x) ^ ToNumber(y) + * + * @path ch11/11.10/11.10.2/S11.10.2_A3_T2.7.js + * @description Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null + */ + +//CHECK#1 +if (("1" ^ null) !== 1) { + $ERROR('#1: ("1" ^ null) === 1. Actual: ' + (("1" ^ null))); +} + +//CHECK#2 +if ((null ^ "1") !== 1) { + $ERROR('#2: (null ^ "1") === 1. Actual: ' + ((null ^ "1"))); +} + +//CHECK#3 +if ((new String("1") ^ null) !== 1) { + $ERROR('#3: (new String("1") ^ null) === 1. Actual: ' + ((new String("1") ^ null))); +} + +//CHECK#4 +if ((null ^ new String("1")) !== 1) { + $ERROR('#4: (null ^ new String("1")) === 1. Actual: ' + ((null ^ new String("1")))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.8.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.8.js new file mode 100644 index 000000000..36c1c1d23 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.8.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x ^ y returns ToNumber(x) ^ ToNumber(y) + * + * @path ch11/11.10/11.10.2/S11.10.2_A3_T2.8.js + * @description Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined + */ + +//CHECK#1 +if ((true ^ undefined) !== 1) { + $ERROR('#1: (true ^ undefined) === 1. Actual: ' + ((true ^ undefined))); +} + +//CHECK#2 +if ((undefined ^ true) !== 1) { + $ERROR('#2: (undefined ^ true) === 1. Actual: ' + ((undefined ^ true))); +} + +//CHECK#3 +if ((new Boolean(true) ^ undefined) !== 1) { + $ERROR('#3: (new Boolean(true) ^ undefined) === 1. Actual: ' + ((new Boolean(true) ^ undefined))); +} + +//CHECK#4 +if ((undefined ^ new Boolean(true)) !== 1) { + $ERROR('#4: (undefined ^ new Boolean(true)) === 1. Actual: ' + ((undefined ^ new Boolean(true)))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.9.js b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.9.js new file mode 100644 index 000000000..6a9d6cb0d --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/S11.10.2_A3_T2.9.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x ^ y returns ToNumber(x) ^ ToNumber(y) + * + * @path ch11/11.10/11.10.2/S11.10.2_A3_T2.9.js + * @description Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null + */ + +//CHECK#1 +if ((true ^ null) !== 1) { + $ERROR('#1: (true ^ null) === 1. Actual: ' + ((true ^ null))); +} + +//CHECK#2 +if ((null ^ true) !== 1) { + $ERROR('#2: (null ^ true) === 1. Actual: ' + ((null ^ true))); +} + +//CHECK#3 +if ((new Boolean(true) ^ null) !== 1) { + $ERROR('#3: (new Boolean(true) ^ null) === 1. Actual: ' + ((new Boolean(true) ^ null))); +} + +//CHECK#4 +if ((null ^ new Boolean(true)) !== 1) { + $ERROR('#4: (null ^ new Boolean(true)) === 1. Actual: ' + ((null ^ new Boolean(true)))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/browser.js b/js/src/tests/test262/ch11/11.10/11.10.2/browser.js new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/browser.js diff --git a/js/src/tests/test262/ch11/11.10/11.10.2/shell.js b/js/src/tests/test262/ch11/11.10/11.10.2/shell.js new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.2/shell.js diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A1.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A1.js new file mode 100644 index 000000000..193860824 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A1.js @@ -0,0 +1,61 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * White Space and Line Terminator between BitwiseORExpression and "|" or between "|" and BitwiseXORExpression are allowed + * + * @path ch11/11.10/11.10.3/S11.10.3_A1.js + * @description Checking by using eval + */ + +//CHECK#1 +if ((eval("0\u0009|\u00091")) !== 1) { + $ERROR('#1: (0\\u0009|\\u00091) === 1'); +} + +//CHECK#2 +if ((eval("0\u000B|\u000B1")) !== 1) { + $ERROR('#2: (0\\u000B|\\u000B1) === 1'); +} + +//CHECK#3 +if ((eval("0\u000C|\u000C1")) !== 1) { + $ERROR('#3: (0\\u000C|\\u000C1) === 1'); +} + +//CHECK#4 +if ((eval("0\u0020|\u00201")) !== 1) { + $ERROR('#4: (0\\u0020|\\u00201) === 1'); +} + +//CHECK#5 +if ((eval("0\u00A0|\u00A01")) !== 1) { + $ERROR('#5: (0\\u00A0|\\u00A01) === 1'); +} + +//CHECK#6 +if ((eval("0\u000A|\u000A1")) !== 1) { + $ERROR('#6: (0\\u000A|\\u000A1) === 1'); +} + +//CHECK#7 +if ((eval("0\u000D|\u000D1")) !== 1) { + $ERROR('#7: (0\\u000D|\\u000D1) === 1'); +} + +//CHECK#8 +if ((eval("0\u2028|\u20281")) !== 1) { + $ERROR('#8: (0\\u2028|\\u20281) === 1'); +} + +//CHECK#9 +if ((eval("0\u2029|\u20291")) !== 1) { + $ERROR('#9: (0\\u2029|\\u20291) === 1'); +} + + +//CHECK#10 +if ((eval("0\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029|\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) !== 1) { + $ERROR('#10: (0\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029|\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === 1'); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.1_T1.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.1_T1.js new file mode 100644 index 000000000..4c39440fe --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.1_T1.js @@ -0,0 +1,43 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x | y uses GetValue + * + * @path ch11/11.10/11.10.3/S11.10.3_A2.1_T1.js + * @description Either Type is not Reference or GetBase is not null + */ + +//CHECK#1 +if ((1 | 0) !== 1) { + $ERROR('#1: (1 | 0) === 1. Actual: ' + ((1 | 0))); +} + +//CHECK#2 +var x = 1; +if ((x | 0) !== 1) { + $ERROR('#2: var x = 1; (x | 0) === 1. Actual: ' + ((x | 0))); +} + +//CHECK#3 +var y = 0; +if ((1 | y) !== 1) { + $ERROR('#3: var y = 0; (1 | y) === 1. Actual: ' + ((1 | y))); +} + +//CHECK#4 +var x = 1; +var y = 0; +if ((x | y) !== 1) { + $ERROR('#4: var x = 1; var y = 0; (x | y) === 1. Actual: ' + ((x | y))); +} + +//CHECK#5 +var objectx = new Object(); +var objecty = new Object(); +objectx.prop = 1; +objecty.prop = 0; +if ((objectx.prop | objecty.prop) !== 1) { + $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 0; (objectx.prop | objecty.prop) === 1. Actual: ' + ((objectx.prop | objecty.prop))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.1_T2.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.1_T2.js new file mode 100644 index 000000000..38886529f --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.1_T2.js @@ -0,0 +1,21 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x | y uses GetValue + * + * @path ch11/11.10/11.10.3/S11.10.3_A2.1_T2.js + * @description If GetBase(x) is null, throw ReferenceError + */ + +//CHECK#1 +try { + x | 1; + $ERROR('#1.1: x | 1 throw ReferenceError. Actual: ' + (x | 1)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: x | 1 throw ReferenceError. Actual: ' + (e)); + } +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.1_T3.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.1_T3.js new file mode 100644 index 000000000..313ea9588 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.1_T3.js @@ -0,0 +1,21 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x | y uses GetValue + * + * @path ch11/11.10/11.10.3/S11.10.3_A2.1_T3.js + * @description If GetBase(y) is null, throw ReferenceError + */ + +//CHECK#1 +try { + 1 | y; + $ERROR('#1.1: 1 | y throw ReferenceError. Actual: ' + (1 | y)); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: 1 | y throw ReferenceError. Actual: ' + (e)); + } +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.2_T1.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.2_T1.js new file mode 100644 index 000000000..1c7331411 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.2_T1.js @@ -0,0 +1,71 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x | y uses [[Default Value]] + * + * @path ch11/11.10/11.10.3/S11.10.3_A2.2_T1.js + * @description If Type(value) is Object, evaluate ToPrimitive(value, Number) + */ + +//CHECK#1 +if (({valueOf: function() {return 1}} | 0) !== 1) { + $ERROR('#1: ({valueOf: function() {return 1}} | 0) === 1. Actual: ' + (({valueOf: function() {return 1}} | 0))); +} + +//CHECK#2 +if (({valueOf: function() {return 1}, toString: function() {return 0}} | 0) !== 1) { + $ERROR('#2: ({valueOf: function() {return 1}, toString: function() {return 0}} | 0) === 1. Actual: ' + (({valueOf: function() {return 1}, toString: function() {return 0}} | 0))); +} + +//CHECK#3 +if (({valueOf: function() {return 1}, toString: function() {return {}}} | 0) !== 1) { + $ERROR('#3: ({valueOf: function() {return 1}, toString: function() {return {}}} | 0) === 1. Actual: ' + (({valueOf: function() {return 1}, toString: function() {return {}}} | 0))); +} + +//CHECK#4 +try { + if (({valueOf: function() {return 1}, toString: function() {throw "error"}} | 0) !== 1) { + $ERROR('#4.1: ({valueOf: function() {return 1}, toString: function() {throw "error"}} | 0) === 1. Actual: ' + (({valueOf: function() {return 1}, toString: function() {throw "error"}} | 0))); + } +} +catch (e) { + if (e === "error") { + $ERROR('#4.2: ({valueOf: function() {return 1}, toString: function() {throw "error"}} | 0) not throw "error"'); + } else { + $ERROR('#4.3: ({valueOf: function() {return 1}, toString: function() {throw "error"}} | 0) not throw Error. Actual: ' + (e)); + } +} + +//CHECK#5 +if ((0 | {toString: function() {return 1}}) !== 1) { + $ERROR('#5: (0 | {toString: function() {return 1}}) === 1. Actual: ' + ((0 | {toString: function() {return 1}}))); +} + +//CHECK#6 +if ((0 | {valueOf: function() {return {}}, toString: function() {return 1}}) !== 1) { + $ERROR('#6: (0 | {valueOf: function() {return {}}, toString: function() {return 1}}) === 1. Actual: ' + ((0 | {valueOf: function() {return {}}, toString: function() {return 1}}))); +} + +//CHECK#7 +try { + 0 | {valueOf: function() {throw "error"}, toString: function() {return 1}}; + $ERROR('#7.1: 0 | {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (0 | {valueOf: function() {throw "error"}, toString: function() {return 1}})); +} +catch (e) { + if (e !== "error") { + $ERROR('#7.2: 0 | {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e)); + } +} + +//CHECK#8 +try { + 0 | {valueOf: function() {return {}}, toString: function() {return {}}}; + $ERROR('#8.1: 0 | {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (0 | {valueOf: function() {return {}}, toString: function() {return {}}})); +} +catch (e) { + if ((e instanceof TypeError) !== true) { + $ERROR('#8.2: 0 | {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e)); + } +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.3_T1.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.3_T1.js new file mode 100644 index 000000000..fe60b24d1 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.3_T1.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * ToInt32(first expression) is called first, and then ToInt32(second expression) + * + * @path ch11/11.10/11.10.3/S11.10.3_A2.3_T1.js + * @description Checking with "throw" + */ + +//CHECK#1 +var x = { valueOf: function () { throw "x"; } }; +var y = { valueOf: function () { throw "y"; } }; +try { + x | y; + $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x | y throw "x". Actual: ' + (x | y)); +} catch (e) { + if (e === "y") { + $ERROR('#1.2: ToInt32(first expression) is called first, and then ToInt32(second expression)'); + } else { + if (e !== "x") { + $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x | y throw "x". Actual: ' + (e)); + } + } +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.4_T1.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.4_T1.js new file mode 100644 index 000000000..4c5705d00 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.4_T1.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * First expression is evaluated first, and then second expression + * + * @path ch11/11.10/11.10.3/S11.10.3_A2.4_T1.js + * @description Checking with "=" + */ + +//CHECK#1 +var x = 1; +if (((x = 0) | x) !== 0) { + $ERROR('#1: var x = 1; ((x = 0) | x) === 0. Actual: ' + (((x = 0) | x))); +} + +//CHECK#2 +var x = 1; +if ((x | (x = 0)) !== 1) { + $ERROR('#2: var x = 1; (x | (x = 0)) === 1. Actual: ' + ((x | (x = 0)))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.4_T2.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.4_T2.js new file mode 100644 index 000000000..886ae2af5 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.4_T2.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * First expression is evaluated first, and then second expression + * + * @path ch11/11.10/11.10.3/S11.10.3_A2.4_T2.js + * @description Checking with "throw" + */ + +//CHECK#1 +var x = function () { throw "x"; }; +var y = function () { throw "y"; }; +try { + x() | y(); + $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() | y() throw "x". Actual: ' + (x() | y())); +} catch (e) { + if (e === "y") { + $ERROR('#1.2: First expression is evaluated first, and then second expression'); + } else { + if (e !== "x") { + $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() | y() throw "x". Actual: ' + (e)); + } + } +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.4_T3.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.4_T3.js new file mode 100644 index 000000000..975bba911 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A2.4_T3.js @@ -0,0 +1,27 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * First expression is evaluated first, and then second expression + * + * @path ch11/11.10/11.10.3/S11.10.3_A2.4_T3.js + * @description Checking with undeclarated variables + * @noStrict + */ + +//CHECK#1 +try { + x | (x = 1); + $ERROR('#1.1: x | (x = 1) throw ReferenceError. Actual: ' + (x | (x = 1))); +} +catch (e) { + if ((e instanceof ReferenceError) !== true) { + $ERROR('#1.2: x | (x = 1) throw ReferenceError. Actual: ' + (e)); + } +} + +//CHECK#2 +if (((y = 1) | y) !== 1) { + $ERROR('#2: ((y = 1) | y) === 1. Actual: ' + (((y = 1) | y))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.1.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.1.js new file mode 100644 index 000000000..bdf1dddd2 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.1.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x | y returns ToNumber(x) | ToNumber(y) + * + * @path ch11/11.10/11.10.3/S11.10.3_A3_T1.1.js + * @description Type(x) and Type(y) vary between primitive boolean and Boolean object + */ + +//CHECK#1 +if ((true | true) !== 1) { + $ERROR('#1: (true | true) === 1. Actual: ' + ((true | true))); +} + +//CHECK#2 +if ((new Boolean(true) | true) !== 1) { + $ERROR('#2: (new Boolean(true) | true) === 1. Actual: ' + ((new Boolean(true) | true))); +} + +//CHECK#3 +if ((true | new Boolean(true)) !== 1) { + $ERROR('#3: (true | new Boolean(true)) === 1. Actual: ' + ((true | new Boolean(true)))); +} + +//CHECK#4 +if ((new Boolean(true) | new Boolean(true)) !== 1) { + $ERROR('#4: (new Boolean(true) | new Boolean(true)) === 1. Actual: ' + ((new Boolean(true) | new Boolean(true)))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.2.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.2.js new file mode 100644 index 000000000..057a8fd55 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.2.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x | y returns ToNumber(x) | ToNumber(y) + * + * @path ch11/11.10/11.10.3/S11.10.3_A3_T1.2.js + * @description Type(x) and Type(y) vary between primitive number and Number object + */ + +//CHECK#1 +if ((1 | 1) !== 1) { + $ERROR('#1: (1 | 1) === 1. Actual: ' + ((1 | 1))); +} + +//CHECK#2 +if ((new Number(1) | 1) !== 1) { + $ERROR('#2: (new Number(1) | 1) === 1. Actual: ' + ((new Number(1) | 1))); +} + +//CHECK#3 +if ((1 | new Number(1)) !== 1) { + $ERROR('#3: (1 | new Number(1)) === 1. Actual: ' + ((1 | new Number(1)))); +} + +//CHECK#4 +if ((new Number(1) | new Number(1)) !== 1) { + $ERROR('#4: (new Number(1) | new Number(1)) === 1. Actual: ' + ((new Number(1) | new Number(1)))); +} + + diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.3.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.3.js new file mode 100644 index 000000000..f62798951 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.3.js @@ -0,0 +1,40 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x | y returns ToNumber(x) | ToNumber(y) + * + * @path ch11/11.10/11.10.3/S11.10.3_A3_T1.3.js + * @description Type(x) and Type(y) vary between primitive string and String object + */ + +//CHECK#1 +if (("1" | "1") !== 1) { + $ERROR('#1: ("1" | "1") === 1. Actual: ' + (("1" | "1"))); +} + +//CHECK#2 +if ((new String("1") | "1") !== 1) { + $ERROR('#2: (new String("1") | "1") === 1. Actual: ' + ((new String("1") | "1"))); +} + +//CHECK#3 +if (("1" | new String("1")) !== 1) { + $ERROR('#3: ("1" | new String("1")) === 1. Actual: ' + (("1" | new String("1")))); +} + +//CHECK#4 +if ((new String("1") | new String("1")) !== 1) { + $ERROR('#4: (new String("1") | new String("1")) === 1. Actual: ' + ((new String("1") | new String("1")))); +} + +//CHECK#5 +if (("x" | "1") !== 1) { + $ERROR('#5: ("x" | "1") === 1. Actual: ' + (("x" | "1"))); +} + +//CHECK#6 +if (("1" | "x") !== 1) { + $ERROR('#6: ("1" | "x") === 1. Actual: ' + (("1" | "x"))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.4.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.4.js new file mode 100644 index 000000000..1fcf3aea4 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.4.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x | y returns ToNumber(x) | ToNumber(y) + * + * @path ch11/11.10/11.10.3/S11.10.3_A3_T1.4.js + * @description Type(x) and Type(y) vary between Null and Undefined + */ + +//CHECK#1 +if ((null | undefined) !== 0) { + $ERROR('#1: (null | undefined) === 0. Actual: ' + ((null | undefined))); +} + +//CHECK#2 +if ((undefined | null) !== 0) { + $ERROR('#2: (undefined | null) === 0. Actual: ' + ((undefined | null))); +} + +//CHECK#3 +if ((undefined | undefined) !== 0) { + $ERROR('#3: (undefined | undefined) === 0. Actual: ' + ((undefined | undefined))); +} + +//CHECK#4 +if ((null | null) !== 0) { + $ERROR('#4: (null | null) === 0. Actual: ' + ((null | null))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.5.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.5.js new file mode 100644 index 000000000..c3df41a2c --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T1.5.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x | y returns ToNumber(x) | ToNumber(y) + * + * @path ch11/11.10/11.10.3/S11.10.3_A3_T1.5.js + * @description Type(x) and Type(y) vary between Object object and Function object + */ + +//CHECK#1 +if (({} | function(){return 1}) !== 0) { + $ERROR('#1: ({} | function(){return 1}) === 0. Actual: ' + (({} | function(){return 1}))); +} + +//CHECK#2 +if ((function(){return 1} | {}) !== 0) { + $ERROR('#2: (function(){return 1} | {}) === 0. Actual: ' + ((function(){return 1} | {}))); +} + +//CHECK#3 +if ((function(){return 1} | function(){return 1}) !== 0) { + $ERROR('#3: (function(){return 1} | function(){return 1}) === 0. Actual: ' + ((function(){return 1} | function(){return 1}))); +} + +//CHECK#4 +if (({} | {}) !== 0) { + $ERROR('#4: ({} | {}) === 0. Actual: ' + (({} | {}))); +} + + diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.1.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.1.js new file mode 100644 index 000000000..a54f2dbdf --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.1.js @@ -0,0 +1,50 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x | y returns ToNumber(x) | ToNumber(y) + * + * @path ch11/11.10/11.10.3/S11.10.3_A3_T2.1.js + * @description Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object) + */ + +//CHECK#1 +if ((true | 1) !== 1) { + $ERROR('#1: (true | 1) === 1. Actual: ' + ((true | 1))); +} + +//CHECK#2 +if ((1 | true) !== 1) { + $ERROR('#2: (1 | true) === 1. Actual: ' + ((1 | true))); +} + +//CHECK#3 +if ((new Boolean(true) | 1) !== 1) { + $ERROR('#3: (new Boolean(true) | 1) === 1. Actual: ' + ((new Boolean(true) | 1))); +} + +//CHECK#4 +if ((1 | new Boolean(true)) !== 1) { + $ERROR('#4: (1 | new Boolean(true)) === 1. Actual: ' + ((1 | new Boolean(true)))); +} + +//CHECK#5 +if ((true | new Number(1)) !== 1) { + $ERROR('#5: (true | new Number(1)) === 1. Actual: ' + ((true | new Number(1)))); +} + +//CHECK#6 +if ((new Number(1) | true) !== 1) { + $ERROR('#6: (new Number(1) | true) === 1. Actual: ' + ((new Number(1) | true))); +} + +//CHECK#7 +if ((new Boolean(true) | new Number(1)) !== 1) { + $ERROR('#7: (new Boolean(true) | new Number(1)) === 1. Actual: ' + ((new Boolean(true) | new Number(1)))); +} + +//CHECK#8 +if ((new Number(1) | new Boolean(true)) !== 1) { + $ERROR('#8: (new Number(1) | new Boolean(true)) === 1. Actual: ' + ((new Number(1) | new Boolean(true)))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.2.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.2.js new file mode 100644 index 000000000..78795a543 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.2.js @@ -0,0 +1,60 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x | y returns ToNumber(x) | ToNumber(y) + * + * @path ch11/11.10/11.10.3/S11.10.3_A3_T2.2.js + * @description Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object) + */ + +//CHECK#1 +if (("1" | 1) !== 1) { + $ERROR('#1: ("1" | 1) === 1. Actual: ' + (("1" | 1))); +} + +//CHECK#2 +if ((1 | "1") !== 1) { + $ERROR('#2: (1 | "1") === 1. Actual: ' + ((1 | "1"))); +} + +//CHECK#3 +if ((new String("1") | 1) !== 1) { + $ERROR('#3: (new String("1") | 1) === 1. Actual: ' + ((new String("1") | 1))); +} + +//CHECK#4 +if ((1 | new String("1")) !== 1) { + $ERROR('#4: (1 | new String("1")) === 1. Actual: ' + ((1 | new String("1")))); +} + +//CHECK#5 +if (("1" | new Number(1)) !== 1) { + $ERROR('#5: ("1" | new Number(1)) === 1. Actual: ' + (("1" | new Number(1)))); +} + +//CHECK#6 +if ((new Number(1) | "1") !== 1) { + $ERROR('#6: (new Number(1) | "1") === 1. Actual: ' + ((new Number(1) | "1"))); +} + +//CHECK#7 +if ((new String("1") | new Number(1)) !== 1) { + $ERROR('#7: (new String("1") | new Number(1)) === 1. Actual: ' + ((new String("1") | new Number(1)))); +} + +//CHECK#8 +if ((new Number(1) | new String("1")) !== 1) { + $ERROR('#8: (new Number(1) | new String("1")) === 1. Actual: ' + ((new Number(1) | new String("1")))); +} + +//CHECK#9 +if (("x" | 1) !== 1) { + $ERROR('#9: ("x" | 1) === 1. Actual: ' + (("x" | 1))); +} + +//CHECK#10 +if ((1 | "x") !== 1) { + $ERROR('#10: (1 | "x") === 1. Actual: ' + ((1 | "x"))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.3.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.3.js new file mode 100644 index 000000000..c01d6e726 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.3.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x | y returns ToNumber(x) | ToNumber(y) + * + * @path ch11/11.10/11.10.3/S11.10.3_A3_T2.3.js + * @description Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null + */ + +//CHECK#1 +if ((1 | null) !== 1) { + $ERROR('#1: (1 | null) === 1. Actual: ' + ((1 | null))); +} + +//CHECK#2 +if ((null | 1) !== 1) { + $ERROR('#2: (null | 1) === 1. Actual: ' + ((null | 1))); +} + +//CHECK#3 +if ((new Number(1) | null) !== 1) { + $ERROR('#3: (new Number(1) | null) === 1. Actual: ' + ((new Number(1) | null))); +} + +//CHECK#4 +if ((null | new Number(1)) !== 1) { + $ERROR('#4: (null | new Number(1)) === 1. Actual: ' + ((null | new Number(1)))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.4.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.4.js new file mode 100644 index 000000000..eb7d1432a --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.4.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x | y returns ToNumber(x) | ToNumber(y) + * + * @path ch11/11.10/11.10.3/S11.10.3_A3_T2.4.js + * @description Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined + */ + +//CHECK#1 +if ((1 | undefined) !== 1) { + $ERROR('#1: (1 | undefined) === 1. Actual: ' + ((1 | undefined))); +} + +//CHECK#2 +if ((undefined | 1) !== 1) { + $ERROR('#2: (undefined | 1) === 1. Actual: ' + ((undefined | 1))); +} + +//CHECK#3 +if ((new Number(1) | undefined) !== 1) { + $ERROR('#3: (new Number(1) | undefined) === 1. Actual: ' + ((new Number(1) | undefined))); +} + +//CHECK#4 +if ((undefined | new Number(1)) !== 1) { + $ERROR('#4: (undefined | new Number(1)) === 1. Actual: ' + ((undefined | new Number(1)))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.5.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.5.js new file mode 100644 index 000000000..3195c149d --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.5.js @@ -0,0 +1,50 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x | y returns ToNumber(x) | ToNumber(y) + * + * @path ch11/11.10/11.10.3/S11.10.3_A3_T2.5.js + * @description Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object) + */ + +//CHECK#1 +if ((true | "1") !== 1) { + $ERROR('#1: (true | "1") === 1. Actual: ' + ((true | "1"))); +} + +//CHECK#2 +if (("1" | true) !== 1) { + $ERROR('#2: ("1" | true) === 1. Actual: ' + (("1" | true))); +} + +//CHECK#3 +if ((new Boolean(true) | "1") !== 1) { + $ERROR('#3: (new Boolean(true) | "1") === 1. Actual: ' + ((new Boolean(true) | "1"))); +} + +//CHECK#4 +if (("1" | new Boolean(true)) !== 1) { + $ERROR('#4: ("1" | new Boolean(true)) === 1. Actual: ' + (("1" | new Boolean(true)))); +} + +//CHECK#5 +if ((true | new String("1")) !== 1) { + $ERROR('#5: (true | new String("1")) === 1. Actual: ' + ((true | new String("1")))); +} + +//CHECK#6 +if ((new String("1") | true) !== 1) { + $ERROR('#6: (new String("1") | true) === 1. Actual: ' + ((new String("1") | true))); +} + +//CHECK#7 +if ((new Boolean(true) | new String("1")) !== 1) { + $ERROR('#7: (new Boolean(true) | new String("1")) === 1. Actual: ' + ((new Boolean(true) | new String("1")))); +} + +//CHECK#8 +if ((new String("1") | new Boolean(true)) !== 1) { + $ERROR('#8: (new String("1") | new Boolean(true)) === 1. Actual: ' + ((new String("1") | new Boolean(true)))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.6.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.6.js new file mode 100644 index 000000000..c6aeffafd --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.6.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x | y returns ToNumber(x) | ToNumber(y) + * + * @path ch11/11.10/11.10.3/S11.10.3_A3_T2.6.js + * @description Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined + */ + +//CHECK#1 +if (("1" | undefined) !== 1) { + $ERROR('#1: ("1" | undefined) === 1. Actual: ' + (("1" | undefined))); +} + +//CHECK#2 +if ((undefined | "1") !== 1) { + $ERROR('#2: (undefined | "1") === 1. Actual: ' + ((undefined | "1"))); +} + +//CHECK#3 +if ((new String("1") | undefined) !== 1) { + $ERROR('#3: (new String("1") | undefined) === 1. Actual: ' + ((new String("1") | undefined))); +} + +//CHECK#4 +if ((undefined | new String("1")) !== 1) { + $ERROR('#4: (undefined | new String("1")) === 1. Actual: ' + ((undefined | new String("1")))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.7.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.7.js new file mode 100644 index 000000000..fc0e39bb9 --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.7.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x | y returns ToNumber(x) | ToNumber(y) + * + * @path ch11/11.10/11.10.3/S11.10.3_A3_T2.7.js + * @description Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null + */ + +//CHECK#1 +if (("1" | null) !== 1) { + $ERROR('#1: ("1" | null) === 1. Actual: ' + (("1" | null))); +} + +//CHECK#2 +if ((null | "1") !== 1) { + $ERROR('#2: (null | "1") === 1. Actual: ' + ((null | "1"))); +} + +//CHECK#3 +if ((new String("1") | null) !== 1) { + $ERROR('#3: (new String("1") | null) === 1. Actual: ' + ((new String("1") | null))); +} + +//CHECK#4 +if ((null | new String("1")) !== 1) { + $ERROR('#4: (null | new String("1")) === 1. Actual: ' + ((null | new String("1")))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.8.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.8.js new file mode 100644 index 000000000..4208476dd --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.8.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x | y returns ToNumber(x) | ToNumber(y) + * + * @path ch11/11.10/11.10.3/S11.10.3_A3_T2.8.js + * @description Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined + */ + +//CHECK#1 +if ((true | undefined) !== 1) { + $ERROR('#1: (true | undefined) === 1. Actual: ' + ((true | undefined))); +} + +//CHECK#2 +if ((undefined | true) !== 1) { + $ERROR('#2: (undefined | true) === 1. Actual: ' + ((undefined | true))); +} + +//CHECK#3 +if ((new Boolean(true) | undefined) !== 1) { + $ERROR('#3: (new Boolean(true) | undefined) === 1. Actual: ' + ((new Boolean(true) | undefined))); +} + +//CHECK#4 +if ((undefined | new Boolean(true)) !== 1) { + $ERROR('#4: (undefined | new Boolean(true)) === 1. Actual: ' + ((undefined | new Boolean(true)))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.9.js b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.9.js new file mode 100644 index 000000000..2c892773b --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/S11.10.3_A3_T2.9.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x | y returns ToNumber(x) | ToNumber(y) + * + * @path ch11/11.10/11.10.3/S11.10.3_A3_T2.9.js + * @description Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null + */ + +//CHECK#1 +if ((true | null) !== 1) { + $ERROR('#1: (true | null) === 1. Actual: ' + ((true | null))); +} + +//CHECK#2 +if ((null | true) !== 1) { + $ERROR('#2: (null | true) === 1. Actual: ' + ((null | true))); +} + +//CHECK#3 +if ((new Boolean(true) | null) !== 1) { + $ERROR('#3: (new Boolean(true) | null) === 1. Actual: ' + ((new Boolean(true) | null))); +} + +//CHECK#4 +if ((null | new Boolean(true)) !== 1) { + $ERROR('#4: (null | new Boolean(true)) === 1. Actual: ' + ((null | new Boolean(true)))); +} + diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/browser.js b/js/src/tests/test262/ch11/11.10/11.10.3/browser.js new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/browser.js diff --git a/js/src/tests/test262/ch11/11.10/11.10.3/shell.js b/js/src/tests/test262/ch11/11.10/11.10.3/shell.js new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/11.10.3/shell.js diff --git a/js/src/tests/test262/ch11/11.10/browser.js b/js/src/tests/test262/ch11/11.10/browser.js new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/browser.js diff --git a/js/src/tests/test262/ch11/11.10/shell.js b/js/src/tests/test262/ch11/11.10/shell.js new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/js/src/tests/test262/ch11/11.10/shell.js |