diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /js/src/tests/test262/ch11/11.6 | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'js/src/tests/test262/ch11/11.6')
71 files changed, 2358 insertions, 0 deletions
diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A1.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A1.js new file mode 100644 index 000000000..6e4793095 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A1.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. + +/** + * White Space and Line Terminator between AdditiveExpression and "+" or between "+" and MultiplicativeExpression are allowed + * + * @path ch11/11.6/11.6.1/S11.6.1_A1.js + * @description Checking by using eval + */ + +//CHECK#1 +if (eval("1\u0009+\u00091") !== 2) { + $ERROR('#1: 1\\u0009+\\u00091 === 2'); +} + +//CHECK#2 +if (eval("1\u000B+\u000B1") !== 2) { + $ERROR('#2: 1\\u000B+\\u000B1 === 2'); +} + +//CHECK#3 +if (eval("1\u000C+\u000C1") !== 2) { + $ERROR('#3: 1\\u000C+\\u000C1 === 2'); +} + +//CHECK#4 +if (eval("1\u0020+\u00201") !== 2) { + $ERROR('#4: 1\\u0020+\\u00201 === 2'); +} + +//CHECK#5 +if (eval("1\u00A0+\u00A01") !== 2) { + $ERROR('#5: 1\\u00A0+\\u00A01 === 2'); +} + +//CHECK#6 +if (eval("1\u000A+\u000A1") !== 2) { + $ERROR('#6: 1\\u000A+\\u000A1 === 2'); +} + +//CHECK#7 +if (eval("1\u000D+\u000D1") !== 2) { + $ERROR('#7: 1\\u000D+\\u000D1 === 2'); +} + +//CHECK#8 +if (eval("1\u2028+\u20281") !== 2) { + $ERROR('#8: 1\\u2028+\\u20281 === 2'); +} + +//CHECK#9 +if (eval("1\u2029+\u20291") !== 2) { + $ERROR('#9: 1\\u2029+\\u20291 === 2'); +} + +//CHECK#10 +if (eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029+\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== 2) { + $ERROR('#10: 1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029+\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291 === 2'); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.1_T1.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.1_T1.js new file mode 100644 index 000000000..748f791fa --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.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.6/11.6.1/S11.6.1_A2.1_T1.js + * @description Either Type is not Reference or GetBase is not null + */ + +//CHECK#1 +if (1 + 1 !== 2) { + $ERROR('#1: 1 + 1 === 2. Actual: ' + (1 + 1)); +} + +//CHECK#2 +var x = 1; +if (x + 1 !== 2) { + $ERROR('#2: var x = 1; x + 1 === 2. Actual: ' + (x + 1)); +} + +//CHECK#3 +var y = 1; +if (1 + y !== 2) { + $ERROR('#3: var y = 1; 1 + y === 2. Actual: ' + (1 + y)); +} + +//CHECK#4 +var x = 1; +var y = 1; +if (x + y !== 2) { + $ERROR('#4: var x = 1; var y = 1; x + y === 2. Actual: ' + (x + y)); +} + +//CHECK#5 +var objectx = new Object(); +var objecty = new Object(); +objectx.prop = 1; +objecty.prop = 1; +if (objectx.prop + objecty.prop !== 2) { + $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; objectx.prop + objecty.prop === 2. Actual: ' + (objectx.prop + objecty.prop)); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.1_T2.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.1_T2.js new file mode 100644 index 000000000..8a790be9f --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.1_T2.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.6/11.6.1/S11.6.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.6/11.6.1/S11.6.1_A2.1_T3.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.1_T3.js new file mode 100644 index 000000000..6609a5593 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.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.6/11.6.1/S11.6.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.6/11.6.1/S11.6.1_A2.2_T1.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.2_T1.js new file mode 100644 index 000000000..debdcd883 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.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.6/11.6.1/S11.6.1_A2.2_T1.js + * @description If Type(value) is Object, evaluate ToPrimitive(value, Number) + */ + +//CHECK#1 +if ({valueOf: function() {return 1}} + 1 !== 2) { + $ERROR('#1: {valueOf: function() {return 1}} + 1 === 2. Actual: ' + ({valueOf: function() {return 1}} + 1)); +} + +//CHECK#2 +if ({valueOf: function() {return 1}, toString: function() {return 0}} + 1 !== 2) { + $ERROR('#2: {valueOf: function() {return 1}, toString: function() {return 0}} + 1 === 2. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return 0}} + 1)); +} + +//CHECK#3 +if ({valueOf: function() {return 1}, toString: function() {return {}}} + 1 !== 2) { + $ERROR('#3: {valueOf: function() {return 1}, toString: function() {return {}}} + 1 === 2. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return {}}} + 1)); +} + +//CHECK#4 +try { + if ({valueOf: function() {return 1}, toString: function() {throw "error"}} + 1 !== 2) { + $ERROR('#4.1: {valueOf: function() {return 1}, toString: function() {throw "error"}} + 1 === 2. 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}} !== 2) { + $ERROR('#5: 1 + {toString: function() {return 1}} === 2. Actual: ' + (1 + {toString: function() {return 1}})); +} + +//CHECK#6 +if (1 + {valueOf: function() {return {}}, toString: function() {return 1}} !== 2) { + $ERROR('#6: 1 + {valueOf: function() {return {}}, toString: function() {return 1}} === 2. 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.6/11.6.1/S11.6.1_A2.2_T2.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.2_T2.js new file mode 100644 index 000000000..732c32cc8 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.2_T2.js @@ -0,0 +1,35 @@ +// 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.6/11.6.1/S11.6.1_A2.2_T2.js + * @description If Type(value) is Date object, evaluate ToPrimitive(value, String) + */ + +//CHECK#1 +var date = new Date(); +if (date + date !== date.toString() + date.toString()) { + $ERROR('#1: var date = new Date(); date + date === date.toString() + date.toString(). Actual: ' + (date + date)); +} + +//CHECK#2 +var date = new Date(); +if (date + 0 !== date.toString() + "0") { + $ERROR('#2: var date = new Date(); date + 0 === date.toString() + "0". Actual: ' + (date + 0)); +} + +//CHECK#3 +var date = new Date(); +if (date + true !== date.toString() + "true") { + $ERROR('#3: var date = new Date(); date + true === date.toString() + "true". Actual: ' + (date + true)); +} + +//CHECK#4 +var date = new Date(); +if (date + new Object() !== date.toString() + "[object Object]") { + $ERROR('#4: var date = new Date(); date + new Object() === date.toString() + "[object Object]". Actual: ' + (date + new Object())); +} + + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.2_T3.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.2_T3.js new file mode 100644 index 000000000..965c53d4d --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.2_T3.js @@ -0,0 +1,46 @@ +// 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.6/11.6.1/S11.6.1_A2.2_T3.js + * @description If Type(value) is Function, evaluate ToPrimitive(value, Number) + */ + +//CHECK#1 +function f1(){ + return 0; +} +if (f1 + 1 !== f1.toString() + 1) { + $ERROR('#1: function f1() {return 0;}; f1 + 1 === f1.toString() + 1'); +} + +//CHECK#2 +function f2(){ + return 0; +} +f2.valueOf = function() {return 1;}; +if (1 + f2 !== 1 + 1) { + $ERROR('#2: f1unction f2() {return 0;} f2.valueOf = function() {return 1;}; 1 + f2 === 1 + 1. Actual: ' + (1 + f2)); +} + +//CHECK#3 +function f3(){ + return 0; +} +f3.toString = function() {return 1;}; +if (1 + f3 !== 1 + 1) { + $ERROR('#3: f1unction f3() {return 0;} f3.toString() = function() {return 1;}; 1 + f3 === 1 + 1. Actual: ' + (1 + f3)); +} + +//CHECK#4 +function f4(){ + return 0; +} +f4.valueOf = function() {return -1;}; +f4.toString = function() {return 1;}; +if (f4 + 1 !== 1 - 1) { + $ERROR('#4: f1unction f4() {return 0;}; f2.valueOf = function() {return -1;}; f4.toString() = function() {return 1;}; f4 + 1 === 1 - 1. Actual: ' + (f4 + 1)); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.3_T1.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.3_T1.js new file mode 100644 index 000000000..07f11d4a1 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.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. + +/** + * ToNumber(first expression) is called first, and then ToNumber(second expression) + * + * @path ch11/11.6/11.6.1/S11.6.1_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: ToNumber(first expression) is called first, and then ToNumber(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.6/11.6.1/S11.6.1_A2.4_T1.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.4_T1.js new file mode 100644 index 000000000..ad6f74b40 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.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.6/11.6.1/S11.6.1_A2.4_T1.js + * @description Checking with "=" + */ + +//CHECK#1 +var x = 0; +if ((x = 1) + x !== 2) { + $ERROR('#1: var x = 0; (x = 1) + x === 2. 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.6/11.6.1/S11.6.1_A2.4_T2.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.4_T2.js new file mode 100644 index 000000000..349041ed4 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.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.6/11.6.1/S11.6.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.6/11.6.1/S11.6.1_A2.4_T3.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A2.4_T3.js new file mode 100644 index 000000000..60d89e506 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_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.6/11.6.1/S11.6.1_A2.4_T3.js + * @description Checking with undeclarated variables + */ + +//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 !== 2) { + $ERROR('#2: (y = 1) + y === 2. Actual: ' + ((y = 1) + y)); +} + + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T1.1.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T1.1.js new file mode 100644 index 000000000..e0f9656dd --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_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. + +/** + * If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y) + * + * @path ch11/11.6/11.6.1/S11.6.1_A3.1_T1.1.js + * @description Type(Primitive(x)) and Type(Primitive(y)) vary between primitive boolean and Boolean object + */ + +//CHECK#1 +if (true + true !== 2) { + $ERROR('#1: true + true === 2. Actual: ' + (true + true)); +} + +//CHECK#2 +if (new Boolean(true) + true !== 2) { + $ERROR('#2: new Boolean(true) + true === 2. Actual: ' + (new Boolean(true) + true)); +} + +//CHECK#3 +if (true + new Boolean(true) !== 2) { + $ERROR('#3: true + new Boolean(true) === 2. Actual: ' + (true + new Boolean(true))); +} + +//CHECK#4 +if (new Boolean(true) + new Boolean(true) !== 2) { + $ERROR('#4: new Boolean(true) + new Boolean(true) === 2. Actual: ' + (new Boolean(true) + new Boolean(true))); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T1.2.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T1.2.js new file mode 100644 index 000000000..f5fccb105 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_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. + +/** + * If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y) + * + * @path ch11/11.6/11.6.1/S11.6.1_A3.1_T1.2.js + * @description Type(Primitive(x)) and Type(Primitive(y)) vary between primitive number and Number object + */ + +//CHECK#1 +if (1 + 1 !== 2) { + $ERROR('#1: 1 + 1 === 2. Actual: ' + (1 + 1)); +} + +//CHECK#2 +if (new Number(1) + 1 !== 2) { + $ERROR('#2: new Number(1) + 1 === 2. Actual: ' + (new Number(1) + 1)); +} + +//CHECK#3 +if (1 + new Number(1) !== 2) { + $ERROR('#3: 1 + new Number(1) === 2. Actual: ' + (1 + new Number(1))); +} + +//CHECK#4 +if (new Number(1) + new Number(1) !== 2) { + $ERROR('#4: new Number(1) + new Number(1) === 2. Actual: ' + (new Number(1) + new Number(1))); +} + + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T1.3.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T1.3.js new file mode 100644 index 000000000..c9d52e593 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T1.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. + +/** + * If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y) + * + * @path ch11/11.6/11.6.1/S11.6.1_A3.1_T1.3.js + * @description Type(Primitive(x)) and Type(Primitive(y)) vary between Null and Undefined + */ + +//CHECK#1 +if (isNaN(null + undefined) !== true) { + $ERROR('#1: null + undefined === Not-a-Number. Actual: ' + (null + undefined)); +} + +//CHECK#2 +if (isNaN(undefined + null) !== true) { + $ERROR('#2: undefined + null === Not-a-Number. Actual: ' + (undefined + null)); +} + +//CHECK#3 +if (isNaN(undefined + undefined) !== true) { + $ERROR('#3: undefined + undefined === Not-a-Number. 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.6/11.6.1/S11.6.1_A3.1_T2.1.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.1.js new file mode 100644 index 000000000..e5e3ee261 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_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. + +/** + * If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y) + * + * @path ch11/11.6/11.6.1/S11.6.1_A3.1_T2.1.js + * @description Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) or Boolean (primitive and object) + */ + +//CHECK#1 +if (true + 1 !== 2) { + $ERROR('#1: true + 1 === 2. Actual: ' + (true + 1)); +} + +//CHECK#2 +if (1 + true !== 2) { + $ERROR('#2: 1 + true === 2. Actual: ' + (1 + true)); +} + +//CHECK#3 +if (new Boolean(true) + 1 !== 2) { + $ERROR('#3: new Boolean(true) + 1 === 2. Actual: ' + (new Boolean(true) + 1)); +} + +//CHECK#4 +if (1 + new Boolean(true) !== 2) { + $ERROR('#4: 1 + new Boolean(true) === 2. Actual: ' + (1 + new Boolean(true))); +} + +//CHECK#5 +if (true + new Number(1) !== 2) { + $ERROR('#5: true + new Number(1) === 2. Actual: ' + (true + new Number(1))); +} + +//CHECK#6 +if (new Number(1) + true !== 2) { + $ERROR('#6: new Number(1) + true === 2. Actual: ' + (new Number(1) + true)); +} + +//CHECK#7 +if (new Boolean(true) + new Number(1) !== 2) { + $ERROR('#7: new Boolean(true) + new Number(1) === 2. Actual: ' + (new Boolean(true) + new Number(1))); +} + +//CHECK#8 +if (new Number(1) + new Boolean(true) !== 2) { + $ERROR('#8: new Number(1) + new Boolean(true) === 2. Actual: ' + (new Number(1) + new Boolean(true))); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.2.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.2.js new file mode 100644 index 000000000..ec9dff926 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.2.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. + +/** + * If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y) + * + * @path ch11/11.6/11.6.1/S11.6.1_A3.1_T2.2.js + * @description Type(Primitive(x)) is different from Type(Primitive(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.6/11.6.1/S11.6.1_A3.1_T2.3.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.3.js new file mode 100644 index 000000000..dac10c083 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_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. + +/** + * If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y) + * + * @path ch11/11.6/11.6.1/S11.6.1_A3.1_T2.3.js + * @description Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Undefined + */ + +//CHECK#1 +if (isNaN(1 + undefined) !== true) { + $ERROR('#1: 1 + undefined === Not-a-Number. Actual: ' + (1 + undefined)); +} + +//CHECK#2 +if (isNaN(undefined + 1) !== true) { + $ERROR('#2: undefined + 1 === Not-a-Number. Actual: ' + (undefined + 1)); +} + +//CHECK#3 +if (isNaN(new Number(1) + undefined) !== true) { + $ERROR('#3: new Number(1) + undefined === Not-a-Number. Actual: ' + (new Number(1) + undefined)); +} + +//CHECK#4 +if (isNaN(undefined + new Number(1)) !== true) { + $ERROR('#4: undefined + new Number(1) === Not-a-Number. Actual: ' + (undefined + new Number(1))); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.4.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.4.js new file mode 100644 index 000000000..a2d56e2f7 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_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. + +/** + * If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y) + * + * @path ch11/11.6/11.6.1/S11.6.1_A3.1_T2.4.js + * @description Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Boolean (primitive or object) and Undefined + */ + +//CHECK#1 +if (isNaN(true + undefined) !== true) { + $ERROR('#1: true + undefined === Not-a-Number. Actual: ' + (true + undefined)); +} + +//CHECK#2 +if (isNaN(undefined + true) !== true) { + $ERROR('#2: undefined + true === Not-a-Number. Actual: ' + (undefined + true)); +} + +//CHECK#3 +if (isNaN(new Boolean(true) + undefined) !== true) { + $ERROR('#3: new Boolean(true) + undefined === Not-a-Number. Actual: ' + (new Boolean(true) + undefined)); +} + +//CHECK#4 +if (isNaN(undefined + new Boolean(true)) !== true) { + $ERROR('#4: undefined + new Boolean(true) === Not-a-Number. Actual: ' + (undefined + new Boolean(true))); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.5.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.5.js new file mode 100644 index 000000000..a3cfe0523 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.1_T2.5.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. + +/** + * If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y) + * + * @path ch11/11.6/11.6.1/S11.6.1_A3.1_T2.5.js + * @description Type(Primitive(x)) is different from Type(Primitive(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.6/11.6.1/S11.6.1_A3.2_T1.1.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T1.1.js new file mode 100644 index 000000000..f2f1f8724 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T1.1.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. + +/** + * If Type(Primitive(x)) is String or Type(Primitive(y)) is String, then operator x + y returns the result of concatenating ToString(x) followed by ToString(y) + * + * @path ch11/11.6/11.6.1/S11.6.1_A3.2_T1.1.js + * @description Type(Primitive(x)) and Type(Primitive(y)) vary between primitive string and String object + */ + +//CHECK#1 +if ("1" + "1" !== "11") { + $ERROR('#1: "1" + "1" === "11". Actual: ' + ("1" + "1")); +} + +//CHECK#2 +if (new String("1") + "1" !== "11") { + $ERROR('#2: new String("1") + "1" === "11". Actual: ' + (new String("1") + "1")); +} + +//CHECK#3 +if ("1" + new String("1") !== "11") { + $ERROR('#3: "1" + new String("1") === "11". Actual: ' + ("1" + new String("1"))); +} + +//CHECK#4 +if (new String("1") + new String("1") !== "11") { + $ERROR('#4: new String("1") + new String("1") === "11". Actual: ' + (new String("1") + new String("1"))); +} + +//CHECK#5 +if ("x" + "1" !=="x1") { + $ERROR('#5: "x" + "1" === "x1". Actual: ' + ("x" + "1")); +} + +//CHECK#6 +if ("1" + "x" !== "1x") { + $ERROR('#6: "1" + "x" === "1x". Actual: ' + ("1" + "x")); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T1.2.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T1.2.js new file mode 100644 index 000000000..422ed6b53 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T1.2.js @@ -0,0 +1,32 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * If Type(Primitive(x)) is String or Type(Primitive(y)) is String, then operator x + y returns the result of concatenating ToString(x) followed by ToString(y) + * + * @path ch11/11.6/11.6.1/S11.6.1_A3.2_T1.2.js + * @description Type(Primitive(x)) and Type(Primitive(y)) vary between Object object and Function object + */ + +//CHECK#1 +if (({} + function(){return 1}) !== ({}.toString() + function(){return 1}.toString())) { + $ERROR('#1: ({} + function(){return 1}) === ({}.toString() + function(){return 1}.toString()). Actual: ' + (({} + function(){return 1}))); +} + +//CHECK#2 +if ((function(){return 1} + {}) !== (function(){return 1}.toString() + {}.toString())) { + $ERROR('#2: (function(){return 1} + {}) === (function(){return 1}.toString() + {}.toString()). Actual: ' + ((function(){return 1} + {}))); +} + +//CHECK#3 +if ((function(){return 1} + function(){return 1}) !== (function(){return 1}.toString() + function(){return 1}.toString())) { + $ERROR('#3: (function(){return 1} + function(){return 1}) === (function(){return 1}.toString() + function(){return 1}.toString()). Actual: ' + ((function(){return 1} + function(){return 1}))); +} + +//CHECK#4 +if (({} + {}) !== ({}.toString() + {}.toString())) { + $ERROR('#4: ({} + {}) === ({}.toString() + {}.toString()). Actual: ' + (({} + {}))); +} + + + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.1.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.1.js new file mode 100644 index 000000000..461a14c1a --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.1.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. + +/** + * If Type(Primitive(x)) is String or Type(Primitive(y)) is String, then operator x + y returns the result of concatenating ToString(x) followed by ToString(y) + * + * @path ch11/11.6/11.6.1/S11.6.1_A3.2_T2.1.js + * @description Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and String (primitive and object) + */ + +//CHECK#1 +if ("1" + 1 !== "11") { + $ERROR('#1: "1" + 1 === "11". Actual: ' + ("1" + 1)); +} + +//CHECK#2 +if (1 + "1" !== "11") { + $ERROR('#2: 1 + "1" === "11". Actual: ' + (1 + "1")); +} + +//CHECK#3 +if (new String("1") + 1 !== "11") { + $ERROR('#3: new String("1") + 1 === "11". Actual: ' + (new String("1") + 1)); +} + +//CHECK#4 +if (1 + new String("1") !== "11") { + $ERROR('#4: 1 + new String("1") === "11". Actual: ' + (1 + new String("1"))); +} + +//CHECK#5 +if ("1" + new Number(1) !== "11") { + $ERROR('#5: "1" + new Number(1) === "11". Actual: ' + ("1" + new Number(1))); +} + +//CHECK#6 +if (new Number(1) + "1" !== "11") { + $ERROR('#6: new Number(1) + "1" === "11". Actual: ' + (new Number(1) + "1")); +} + +//CHECK#7 +if (new String("1") + new Number(1) !== "11") { + $ERROR('#7: new String("1") + new Number(1) === "11". Actual: ' + (new String("1") + new Number(1))); +} + +//CHECK#8 +if (new Number(1) + new String("1") !== "11") { + $ERROR('#8: new Number(1) + new String("1") === "11". Actual: ' + (new Number(1) + new String("1"))); +} + +//CHECK#9 +if ("x" + 1 !=="x1") { + $ERROR('#9: "x" + 1 === "x1". Actual: ' + ("x" + 1)); +} + +//CHECK#10 +if (1 + "x" !== "1x") { + $ERROR('#10: 1 + "x" === "1x". Actual: ' + (1 + "x")); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.2.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.2.js new file mode 100644 index 000000000..5f4a4075a --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.2.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. + +/** + * If Type(Primitive(x)) is String or Type(Primitive(y)) is String, then operator x + y returns the result of concatenating ToString(x) followed by ToString(y) + * + * @path ch11/11.6/11.6.1/S11.6.1_A3.2_T2.2.js + * @description Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Boolean (primitive and object) + */ + +//CHECK#1 +if (true + "1" !== "true1") { + $ERROR('#1: true + "1" === "true1". Actual: ' + (true + "1")); +} + +//CHECK#2 +if ("1" + true !== "1true") { + $ERROR('#2: "1" + true === "1true". Actual: ' + ("1" + true)); +} + +//CHECK#3 +if (new Boolean(true) + "1" !== "true1") { + $ERROR('#3: new Boolean(true) + "1" === "true1". Actual: ' + (new Boolean(true) + "1")); +} + +//CHECK#4 +if ("1" + new Boolean(true) !== "1true") { + $ERROR('#4: "1" + new Boolean(true) === "1true". Actual: ' + ("1" + new Boolean(true))); +} + +//CHECK#5 +if (true + new String("1") !== "true1") { + $ERROR('#5: true + new String("1") === "true1". Actual: ' + (true + new String("1"))); +} + +//CHECK#6 +if (new String("1") + true !== "1true") { + $ERROR('#6: new String("1") + true === "1true". Actual: ' + (new String("1") + true)); +} + +//CHECK#7 +if (new Boolean(true) + new String("1") !== "true1") { + $ERROR('#7: new Boolean(true) + new String("1") === "true1". Actual: ' + (new Boolean(true) + new String("1"))); +} + +//CHECK#8 +if (new String("1") + new Boolean(true) !== "1true") { + $ERROR('#8: new String("1") + new Boolean(true) === "1true". Actual: ' + (new String("1") + new Boolean(true))); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.3.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.3.js new file mode 100644 index 000000000..a097ed83b --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_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. + +/** + * If Type(Primitive(x)) is String or Type(Primitive(y)) is String, then operator x + y returns the result of concatenating ToString(x) followed by ToString(y) + * + * @path ch11/11.6/11.6.1/S11.6.1_A3.2_T2.3.js + * @description Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Undefined + */ + +//CHECK#1 +if ("1" + undefined !== "1undefined") { + $ERROR('#1: "1" + undefined === "1undefined". Actual: ' + ("1" + undefined)); +} + +//CHECK#2 +if (undefined + "1" !== "undefined1") { + $ERROR('#2: undefined + "1" === "undefined1". Actual: ' + (undefined + "1")); +} + +//CHECK#3 +if (new String("1") + undefined !== "1undefined") { + $ERROR('#3: new String("1") + undefined === "1undefined". Actual: ' + (new String("1") + undefined)); +} + +//CHECK#4 +if (undefined + new String("1") !== "undefined1") { + $ERROR('#4: undefined + new String("1") === "undefined1". Actual: ' + (undefined + new String("1"))); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.4.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_T2.4.js new file mode 100644 index 000000000..a957677b7 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A3.2_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. + +/** + * If Type(Primitive(x)) is String or Type(Primitive(y)) is String, then operator x + y returns the result of concatenating ToString(x) followed by ToString(y) + * + * @path ch11/11.6/11.6.1/S11.6.1_A3.2_T2.4.js + * @description Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Null + */ + +//CHECK#1 +if ("1" + null !== "1null") { + $ERROR('#1: "1" + null === "1null". Actual: ' + ("1" + null)); +} + +//CHECK#2 +if (null + "1" !== "null1") { + $ERROR('#2: null + "1" === "null1". Actual: ' + (null + "1")); +} + +//CHECK#3 +if (new String("1") + null !== "1null") { + $ERROR('#3: new String("1") + null === "1null". Actual: ' + (new String("1") + null)); +} + +//CHECK#4 +if (null + new String("1") !== "null1") { + $ERROR('#4: null + new String("1") === "null1". Actual: ' + (null + new String("1"))); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T1.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T1.js new file mode 100644 index 000000000..8a8ac37da --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T1.js @@ -0,0 +1,41 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics + * + * @path ch11/11.6/11.6.1/S11.6.1_A4_T1.js + * @description If either operand is NaN, the result is NaN + */ + +//CHECK#1 +if (isNaN(Number.NaN + 1) !== true ) { + $ERROR('#1: NaN + 1 === Not-a-Number. Actual: ' + (NaN + 1)); +} + +//CHECK#2 +if (isNaN(1 + Number.NaN) !== true ) { + $ERROR('#2: 1 + NaN === Not-a-Number. Actual: ' + (1 + NaN)); +} + +//CHECK#3 +if (isNaN(Number.NaN + Number.POSITIVE_INFINITY) !== true ) { + $ERROR('#3: NaN + Infinity === Not-a-Number. Actual: ' + (NaN + Infinity)); +} + +//CHECK#4 +if (isNaN(Number.POSITIVE_INFINITY + Number.NaN) !== true ) { + $ERROR('#4: Infinity + NaN === Not-a-Number. Actual: ' + (Infinity + NaN)); +} + +//CHECK#5 +if (isNaN(Number.NaN + Number.NEGATIVE_INFINITY) !== true ) { + $ERROR('#5: NaN + Infinity === Not-a-Number. Actual: ' + (NaN + Infinity)); +} + +//CHECK#6 +if (isNaN(Number.NEGATIVE_INFINITY + Number.NaN) !== true ) { + $ERROR('#6: Infinity + NaN === Not-a-Number. Actual: ' + (Infinity + NaN)); +} + + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T2.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T2.js new file mode 100644 index 000000000..6e6452567 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T2.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. + +/** + * The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics + * + * @path ch11/11.6/11.6.1/S11.6.1_A4_T2.js + * @description The sum of two infinities of opposite sign is NaN + */ + +//CHECK#1 +if (isNaN(Number.POSITIVE_INFINITY + Number.NEGATIVE_INFINITY) !== true ) { + $ERROR('#1: Infinity + -Infinity === Not-a-Number. Actual: ' + (Infinity + -Infinity)); +} + +//CHECK#2 +if (isNaN(Number.NEGATIVE_INFINITY + Number.POSITIVE_INFINITY) !== true ) { + $ERROR('#2: -Infinity + Infinity === Not-a-Number. Actual: ' + (-Infinity + Infinity)); +} + + + + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T3.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T3.js new file mode 100644 index 000000000..d434e6c23 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T3.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. + +/** + * The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics + * + * @path ch11/11.6/11.6.1/S11.6.1_A4_T3.js + * @description The sum of two infinities of the same sign is the infinity of that sign + */ + +//CHECK#1 +if (Number.POSITIVE_INFINITY + Number.POSITIVE_INFINITY !== Number.POSITIVE_INFINITY ) { + $ERROR('#1: Infinity + Infinity === Infinity. Actual: ' + (Infinity + Infinity)); +} + +//CHECK#2 +if (Number.NEGATIVE_INFINITY + Number.NEGATIVE_INFINITY !== Number.NEGATIVE_INFINITY ) { + $ERROR('#2: -Infinity + -Infinity === -Infinity. Actual: ' + (-Infinity + -Infinity)); +} + + + + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T4.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T4.js new file mode 100644 index 000000000..4fd4a6f56 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T4.js @@ -0,0 +1,53 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics + * + * @path ch11/11.6/11.6.1/S11.6.1_A4_T4.js + * @description The sum of an infinity and a finite value is equal to the infinite operand + */ + +//CHECK#1 +if (Number.POSITIVE_INFINITY + 1 !== Number.POSITIVE_INFINITY ) { + $ERROR('#1: Infinity + 1 === Infinity. Actual: ' + (Infinity + 1)); +} + +//CHECK#2 +if (-1 + Number.POSITIVE_INFINITY !== Number.POSITIVE_INFINITY ) { + $ERROR('#2: -1 + Infinity === Infinity. Actual: ' + (-1 + Infinity)); +} + +//CHECK#3 +if (Number.NEGATIVE_INFINITY + 1 !== Number.NEGATIVE_INFINITY ) { + $ERROR('#3: -Infinity + 1 === -Infinity. Actual: ' + (-Infinity + 1)); +} + +//CHECK#4 +if (-1 + Number.NEGATIVE_INFINITY !== Number.NEGATIVE_INFINITY ) { + $ERROR('#4: -1 + -Infinity === -Infinity. Actual: ' + (-1 + -Infinity)); +} + +//CHECK#5 +if (Number.POSITIVE_INFINITY + Number.MAX_VALUE !== Number.POSITIVE_INFINITY ) { + $ERROR('#5: Infinity + Number.MAX_VALUE === Infinity. Actual: ' + (Infinity + Number.MAX_VALUE)); +} + +//CHECK#6 +if (-Number.MAX_VALUE + Number.POSITIVE_INFINITY !== Number.POSITIVE_INFINITY ) { + $ERROR('#6: -Number.MAX_VALUE + Infinity === Infinity. Actual: ' + (-Number.MAX_VALUE + Infinity)); +} + +//CHECK#7 +if (Number.NEGATIVE_INFINITY + Number.MAX_VALUE !== Number.NEGATIVE_INFINITY ) { + $ERROR('#7: -Infinity + Number.MAX_VALUE === -Infinity. Actual: ' + (-Infinity + Number.MAX_VALUE)); +} + +//CHECK#8 +if (-Number.MAX_VALUE + Number.NEGATIVE_INFINITY !== Number.NEGATIVE_INFINITY ) { + $ERROR('#8: -Number.MAX_VALUE + -Infinity === -Infinity. Actual: ' + (-Number.MAX_VALUE + -Infinity)); +} + + + + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T5.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T5.js new file mode 100644 index 000000000..3ae18550a --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T5.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics + * + * @path ch11/11.6/11.6.1/S11.6.1_A4_T5.js + * @description The sum of two negative zeros is -0. The sum of two positive zeros, or of two zeros of opposite sign is +0 + */ + +//CHECK#1 +if (-0 + -0 !== -0 ) { + $ERROR('#1.1: -0 + -0 === 0. Actual: ' + (-0 + -0)); +} else { + if (1 / (-0 + -0) !== Number.NEGATIVE_INFINITY) { + $ERROR('#1.1: -0 + -0 === - 0. Actual: +0'); + } +} + +//CHECK#2 +if (0 + -0 !== 0 ) { + $ERROR('#2.1: 0 + -0 === 0. Actual: ' + (0 + -0)); +} else { + if (1 / (0 + -0) !== Number.POSITIVE_INFINITY) { + $ERROR('#2.2: 0 + -0 === + 0. Actual: -0'); + } +} + +//CHECK#3 +if (-0 + 0 !== 0 ) { + $ERROR('#3.1: -0 + 0 === 0. Actual: ' + (-0 + 0)); +} else { + if (1 / (-0 + 0) !== Number.POSITIVE_INFINITY) { + $ERROR('#3.2: -0 + 0 === + 0. Actual: -0'); + } +} + +//CHECK#4 +if (0 + 0 !== 0 ) { + $ERROR('#4.1: 0 + 0 === 0. Actual: ' + (0 + 0)); +} else { + if (1 / (0 + 0) !== Number.POSITIVE_INFINITY) { + $ERROR('#4.2: 0 + 0 === + 0. Actual: -0'); + } +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T6.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T6.js new file mode 100644 index 000000000..b25a8fbae --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T6.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. + +/** + * The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics + * + * @path ch11/11.6/11.6.1/S11.6.1_A4_T6.js + * @description The sum of a zero and a nonzero finite value is equal to the nonzero operand + */ + +//CHECK#1 +if (1 + -0 !== 1 ) { + $ERROR('#1: 1 + -0 === 1. Actual: ' + (1 + -0)); +} + +//CHECK#2 +if (1 + 0 !== 1 ) { + $ERROR('#2: 1 + 0 === 1. Actual: ' + (1 + 0)); +} + +//CHECK#3 +if (-0 + 1 !== 1 ) { + $ERROR('#3: -0 + 1 === 1. Actual: ' + (-0 + 1)); +} + +//CHECK#4 +if (0 + 1 !== 1 ) { + $ERROR('#4: 0 + 1 === 1. Actual: ' + (0 + 1)); +} + +//CHECK#5 +if (Number.MAX_VALUE + -0 !== Number.MAX_VALUE ) { + $ERROR('#5: Number.MAX_VALUE + -0 === Number.MAX_VALUE. Actual: ' + (Number.MAX_VALUE + -0)); +} + +//CHECK#6 +if (Number.MAX_VALUE + 0 !== Number.MAX_VALUE ) { + $ERROR('#6: Number.MAX_VALUE + 0 === Number.MAX_VALUE. Actual: ' + (Number.MAX_VALUE + 0)); +} + +//CHECK#7 +if (-0 + Number.MIN_VALUE !== Number.MIN_VALUE ) { + $ERROR('#7: -0 + Number.MIN_VALUE === Number.MIN_VALUE. Actual: ' + (-0 + Number.MIN_VALUE)); +} + +//CHECK#8 +if (0 + Number.MIN_VALUE !== Number.MIN_VALUE ) { + $ERROR('#8: 0 + Number.MIN_VALUE === Number.MIN_VALUE. Actual: ' + (0 + Number.MIN_VALUE)); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T7.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T7.js new file mode 100644 index 000000000..c8af57916 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T7.js @@ -0,0 +1,37 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics + * + * @path ch11/11.6/11.6.1/S11.6.1_A4_T7.js + * @description The sum of two nonzero finite values of the same magnitude and opposite sign is +0 + */ + +//CHECK#1 +if (-Number.MIN_VALUE + Number.MIN_VALUE !== +0) { + $ERROR('#1.1: -Number.MIN_VALUE + Number.MIN_VALUE === 0. Actual: ' + (-Number.MIN_VALUE + Number.MIN_VALUE)); +} else { + if (1 / (-Number.MIN_VALUE + Number.MIN_VALUE) !== Number.POSITIVE_INFINITY) { + $ERROR('#1.2: -Number.MIN_VALUE + Number.MIN_VALUE === + 0. Actual: -0'); + } +} + +//CHECK#2 +if (-Number.MAX_VALUE + Number.MAX_VALUE !== +0) { + $ERROR('#2.1: -Number.MAX_VALUE + Number.MAX_VALUE === 0. Actual: ' + (-Number.MAX_VALUE + Number.MAX_VALUE)); +} else { + if (1 / (-Number.MAX_VALUE + Number.MAX_VALUE) !== Number.POSITIVE_INFINITY) { + $ERROR('#2.2: -Number.MAX_VALUE + Number.MAX_VALUE === + 0. Actual: -0'); + } +} + +//CHECK#3 +if (-1 / Number.MAX_VALUE + 1 / Number.MAX_VALUE !== +0) { + $ERROR('#3.1: -1 / Number.MAX_VALUE + 1 / Number.MAX_VALUE === 0. Actual: ' + (-1 / Number.MAX_VALUE + 1 / Number.MAX_VALUE)); +} else { + if (1 / (-1 / Number.MAX_VALUE + 1 / Number.MAX_VALUE) !== Number.POSITIVE_INFINITY) { + $ERROR('#3.2: -1 / Number.MAX_VALUE + 1 / Number.MAX_VALUE === + 0. Actual: -0'); + } +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T8.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T8.js new file mode 100644 index 000000000..ec90d44e5 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T8.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. + +/** + * The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics + * + * @path ch11/11.6/11.6.1/S11.6.1_A4_T8.js + * @description If the magnitude is too large to represent, the operation overflows and the result is then an infinity of appropriate sign + */ + +//CHECK#1 +if (Number.MAX_VALUE + Number.MAX_VALUE !== Number.POSITIVE_INFINITY) { + $ERROR('#1: Number.MAX_VALUE + Number.MAX_VALUE === Number.POSITIVE_INFINITY. Actual: ' + (Number.MAX_VALUE + Number.MAX_VALUE)); +} + +//CHECK#2 +if (-Number.MAX_VALUE - Number.MAX_VALUE !== Number.NEGATIVE_INFINITY) { + $ERROR('#2: -Number.MAX_VALUE - Number.MAX_VALUE === Number.NEGATIVE_INFINITY. Actual: ' + (-Number.MAX_VALUE - Number.MAX_VALUE)); +} + +//CHECK#3 +if (1e+308 + 1e+308 !== Number.POSITIVE_INFINITY) { + $ERROR('#3: 1e+308 + 1e+308 === Number.POSITIVE_INFINITY. Actual: ' + (1e+308 + 1e+308)); +} + +//CHECK#4 +if (-8.99e+307 - 8.99e+307 !== Number.NEGATIVE_INFINITY) { + $ERROR('#4: -8.99e+307 - 8.99e+307 === Number.NEGATIVE_INFINITY. Actual: ' + (-8.99e+307 - 8.99e+307)); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T9.js b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T9.js new file mode 100644 index 000000000..bc082438a --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/S11.6.1_A4_T9.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. + +/** + * The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics + * + * @path ch11/11.6/11.6.1/S11.6.1_A4_T9.js + * @description The addition operator is not always associative ( x + y + z is the same (x + y) + z, not x + (y + z)) + */ + +//CHECK#1 +if (-Number.MAX_VALUE + Number.MAX_VALUE + Number.MAX_VALUE !== (-Number.MAX_VALUE + Number.MAX_VALUE) + Number.MAX_VALUE) { + $ERROR('#1: -Number.MAX_VALUE + Number.MAX_VALUE + Number.MAX_VALUE === (-Number.MAX_VALUE + Number.MAX_VALUE) + Number.MAX_VALUE. Actual: ' + (-Number.MAX_VALUE + Number.MAX_VALUE + Number.MAX_VALUE)); +} + +//CHECK#2 +if ((-Number.MAX_VALUE + Number.MAX_VALUE) + Number.MAX_VALUE === -Number.MAX_VALUE + (Number.MAX_VALUE + Number.MAX_VALUE)) { + $ERROR('#2: (-Number.MAX_VALUE + Number.MAX_VALUE) + Number.MAX_VALUE === -Number.MAX_VALUE + (Number.MAX_VALUE + Number.MAX_VALUE). Actual: ' + ((-Number.MAX_VALUE + Number.MAX_VALUE) + Number.MAX_VALUE)); +} + +//CHECK#3 +if ("1" + 1 + 1 !== ("1" + 1) + 1) { + $ERROR('#3: "1" + 1 + 1 === ("1" + 1) + 1. Actual: ' + ("1" + 1 + 1)); +} + +//CHECK#4 +if (("1" + 1) + 1 === "1" + (1 + 1)) { + $ERROR('#4: ("1" + 1) + 1 !== "1" + (1 + 1)'); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/browser.js b/js/src/tests/test262/ch11/11.6/11.6.1/browser.js new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/browser.js diff --git a/js/src/tests/test262/ch11/11.6/11.6.1/shell.js b/js/src/tests/test262/ch11/11.6/11.6.1/shell.js new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.1/shell.js diff --git a/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A1.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A1.js new file mode 100644 index 000000000..c3c08a221 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A1.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. + +/** + * White Space and Line Terminator between AdditiveExpression and "-" or between "-" and MultiplicativeExpression are allowed + * + * @path ch11/11.6/11.6.2/S11.6.2_A1.js + * @description Checking by using 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.6/11.6.2/S11.6.2_A2.1_T1.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.1_T1.js new file mode 100644 index 000000000..8d85c8233 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_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.6/11.6.2/S11.6.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.6/11.6.2/S11.6.2_A2.1_T2.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.1_T2.js new file mode 100644 index 000000000..34bcafc2b --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.6/11.6.2/S11.6.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.6/11.6.2/S11.6.2_A2.1_T3.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.1_T3.js new file mode 100644 index 000000000..e5ef600f8 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.6/11.6.2/S11.6.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.6/11.6.2/S11.6.2_A2.2_T1.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.2_T1.js new file mode 100644 index 000000000..3f24d4c13 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.6/11.6.2/S11.6.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.6/11.6.2/S11.6.2_A2.3_T1.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.3_T1.js new file mode 100644 index 000000000..b54588088 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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. + +/** + * ToNumber(first expression) is called first, and then ToNumber(second expression) + * + * @path ch11/11.6/11.6.2/S11.6.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: ToNumber(first expression) is called first, and then ToNumber(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.6/11.6.2/S11.6.2_A2.4_T1.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.4_T1.js new file mode 100644 index 000000000..09b0a7184 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_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.6/11.6.2/S11.6.2_A2.4_T1.js + * @description Checking with "=" + */ + +//CHECK#1 +var x = 0; +if ((x = 1) - 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.6/11.6.2/S11.6.2_A2.4_T2.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.4_T2.js new file mode 100644 index 000000000..ef853e38f --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.6/11.6.2/S11.6.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.6/11.6.2/S11.6.2_A2.4_T3.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A2.4_T3.js new file mode 100644 index 000000000..ace9f2e95 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_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.6/11.6.2/S11.6.2_A2.4_T3.js + * @description Checking with undeclarated variables + */ + +//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.6/11.6.2/S11.6.2_A3_T1.1.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.1.js new file mode 100644 index 000000000..732297bf4 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.6/11.6.2/S11.6.2_A3_T1.1.js + * @description Type(x) and Type(y) vary between 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.6/11.6.2/S11.6.2_A3_T1.2.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.2.js new file mode 100644 index 000000000..4a19423a0 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.6/11.6.2/S11.6.2_A3_T1.2.js + * @description Type(x) and Type(y) vary between 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.6/11.6.2/S11.6.2_A3_T1.3.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.3.js new file mode 100644 index 000000000..5e2f31a80 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.6/11.6.2/S11.6.2_A3_T1.3.js + * @description Type(x) and Type(y) vary between 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 (isNaN("x" - "1") !== true) { + $ERROR('#5: "x" - "1" === Not-a-Number. Actual: ' + ("x" - "1")); +} + +//CHECK#6 +if (isNaN("1" - "x") !== true) { + $ERROR('#6: "1" - "x" === Not-a-Number. Actual: ' + ("1" - "x")); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.4.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.4.js new file mode 100644 index 000000000..a76eb6628 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.6/11.6.2/S11.6.2_A3_T1.4.js + * @description Type(x) and Type(y) vary between Null and Undefined + */ + +//CHECK#1 +if (isNaN(null - undefined) !== true) { + $ERROR('#1: null - undefined === Not-a-Number. Actual: ' + (null - undefined)); +} + +//CHECK#2 +if (isNaN(undefined - null) !== true) { + $ERROR('#2: undefined - null === Not-a-Number. Actual: ' + (undefined - null)); +} + +//CHECK#3 +if (isNaN(undefined - undefined) !== true) { + $ERROR('#3: undefined - undefined === Not-a-Number. 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.6/11.6.2/S11.6.2_A3_T1.5.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.5.js new file mode 100644 index 000000000..21bc87c78 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T1.5.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.6/11.6.2/S11.6.2_A3_T1.5.js + * @description Type(x) and Type(y) vary between Object object and Function object + */ + +//CHECK#1 +if (isNaN({} - function(){return 1}) !== true) { + $ERROR('#1: {} - function(){return 1} === Not-a-Number. Actual: ' + ({} - function(){return 1})); +} + +//CHECK#2 +if (isNaN(function(){return 1} - {}) !== true) { + $ERROR('#2: function(){return 1} - {} === Not-a-Number. Actual: ' + (function(){return 1} - {})); +} + +//CHECK#3 +if (isNaN(function(){return 1} - function(){return 1}) !== true) { + $ERROR('#3: function(){return 1} - function(){return 1} === Not-a-Number. Actual: ' + (function(){return 1} - function(){return 1})); +} + +//CHECK#4 +if (isNaN({} - {}) !== true) { + $ERROR('#4: {} - {} === Not-a-Number. Actual: ' + ({} - {})); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.1.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.1.js new file mode 100644 index 000000000..8682a7154 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.6/11.6.2/S11.6.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.6/11.6.2/S11.6.2_A3_T2.2.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.2.js new file mode 100644 index 000000000..2c98620cc --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.6/11.6.2/S11.6.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 (isNaN("x" - 1) !== true) { + $ERROR('#9: "x" - 1 === Not-a-Number. Actual: ' + ("x" - 1)); +} + +//CHECK#10 +if (isNaN(1 - "x") !== true) { + $ERROR('#10: 1 - "x" === Not-a-Number. Actual: ' + (1 - "x")); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.3.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.3.js new file mode 100644 index 000000000..9edba35ba --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.6/11.6.2/S11.6.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.6/11.6.2/S11.6.2_A3_T2.4.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.4.js new file mode 100644 index 000000000..9169bacdd --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.6/11.6.2/S11.6.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 (isNaN(1 - undefined) !== true) { + $ERROR('#1: 1 - undefined === Not-a-Number. Actual: ' + (1 - undefined)); +} + +//CHECK#2 +if (isNaN(undefined - 1) !== true) { + $ERROR('#2: undefined - 1 === Not-a-Number. Actual: ' + (undefined - 1)); +} + +//CHECK#3 +if (isNaN(new Number(1) - undefined) !== true) { + $ERROR('#3: new Number(1) - undefined === Not-a-Number. Actual: ' + (new Number(1) - undefined)); +} + +//CHECK#4 +if (isNaN(undefined - new Number(1)) !== true) { + $ERROR('#4: undefined - new Number(1) === Not-a-Number. Actual: ' + (undefined - new Number(1))); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.5.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.5.js new file mode 100644 index 000000000..953fb4088 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.6/11.6.2/S11.6.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.6/11.6.2/S11.6.2_A3_T2.6.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.6.js new file mode 100644 index 000000000..34fdcb385 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.6/11.6.2/S11.6.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 (isNaN("1" - undefined) !== true) { + $ERROR('#1: "1" - undefined === Not-a-Number. Actual: ' + ("1" - undefined)); +} + +//CHECK#2 +if (isNaN(undefined - "1") !== true) { + $ERROR('#2: undefined - "1" === Not-a-Number. Actual: ' + (undefined - "1")); +} + +//CHECK#3 +if (isNaN(new String("1") - undefined) !== true) { + $ERROR('#3: new String("1") - undefined === Not-a-Number. Actual: ' + (new String("1") - undefined)); +} + +//CHECK#4 +if (isNaN(undefined - new String("1")) !== true) { + $ERROR('#4: undefined - new String("1") === Not-a-Number. Actual: ' + (undefined - new String("1"))); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.7.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.7.js new file mode 100644 index 000000000..3e467ed63 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.6/11.6.2/S11.6.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.6/11.6.2/S11.6.2_A3_T2.8.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.8.js new file mode 100644 index 000000000..92704df1d --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.6/11.6.2/S11.6.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 (isNaN(true - undefined) !== true) { + $ERROR('#1: true - undefined === Not-a-Number. Actual: ' + (true - undefined)); +} + +//CHECK#2 +if (isNaN(undefined - true) !== true) { + $ERROR('#2: undefined - true === Not-a-Number. Actual: ' + (undefined - true)); +} + +//CHECK#3 +if (isNaN(new Boolean(true) - undefined) !== true) { + $ERROR('#3: new Boolean(true) - undefined === Not-a-Number. Actual: ' + (new Boolean(true) - undefined)); +} + +//CHECK#4 +if (isNaN(undefined - new Boolean(true)) !== true) { + $ERROR('#4: undefined - new Boolean(true) === Not-a-Number. Actual: ' + (undefined - new Boolean(true))); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.9.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A3_T2.9.js new file mode 100644 index 000000000..22bbe59e5 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.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.6/11.6.2/S11.6.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.6/11.6.2/S11.6.2_A4_T1.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T1.js new file mode 100644 index 000000000..2ea5c563c --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T1.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 produces the same result as x + (-y) + * + * @path ch11/11.6/11.6.2/S11.6.2_A4_T1.js + * @description If either operand is NaN, the result is NaN + */ + +//CHECK#1 +if (isNaN(Number.NaN - 1) !== true ) { + $ERROR('#1: NaN - 1 === Not-a-Number. Actual: ' + (NaN - 1)); +} + +//CHECK#2 +if (isNaN(1 - Number.NaN) !== true ) { + $ERROR('#2: 1 - NaN === Not-a-Number. Actual: ' + (1 - NaN)); +} + +//CHECK#3 +if (isNaN(Number.NaN - Number.POSITIVE_INFINITY) !== true ) { + $ERROR('#3: NaN - Infinity === Not-a-Number. Actual: ' + (NaN - Infinity)); +} + +//CHECK#4 +if (isNaN(Number.POSITIVE_INFINITY - Number.NaN) !== true ) { + $ERROR('#4: Infinity - NaN === Not-a-Number. Actual: ' + (Infinity - NaN)); +} + +//CHECK#5 +if (isNaN(Number.NaN - Number.NEGATIVE_INFINITY) !== true ) { + $ERROR('#5: NaN - Infinity === Not-a-Number. Actual: ' + (NaN - Infinity)); +} + +//CHECK#6 +if (isNaN(Number.NEGATIVE_INFINITY - Number.NaN) !== true ) { + $ERROR('#6: Infinity - NaN === Not-a-Number. Actual: ' + (Infinity - NaN)); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T2.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T2.js new file mode 100644 index 000000000..3853092ca --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T2.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. + +/** + * Operator x - y produces the same result as x + (-y) + * + * @path ch11/11.6/11.6.2/S11.6.2_A4_T2.js + * @description The difference of two infinities of opposite sign is the infinity of minuend sign + */ + +//CHECK#1 +if (Number.POSITIVE_INFINITY - Number.NEGATIVE_INFINITY !== Number.POSITIVE_INFINITY ) { + $ERROR('#1: Infinity - -Infinity === Infinity. Actual: ' + (Infinity - -Infinity)); +} + +//CHECK#2 +if (Number.NEGATIVE_INFINITY - Number.POSITIVE_INFINITY !== Number.NEGATIVE_INFINITY ) { + $ERROR('#2: -Infinity - Infinity === -Infinity. Actual: ' + (-Infinity - Infinity)); +} + + + + diff --git a/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T3.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T3.js new file mode 100644 index 000000000..e1c18e1cb --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T3.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. + +/** + * Operator x - y produces the same result as x + (-y) + * + * @path ch11/11.6/11.6.2/S11.6.2_A4_T3.js + * @description The difference of two infinities of the same sign is NaN + */ + +//CHECK#1 +if (isNaN(Number.POSITIVE_INFINITY - Number.POSITIVE_INFINITY) !== true ) { + $ERROR('#1: Infinity - Infinity === Not-a-Number. Actual: ' + (Infinity - Infinity)); +} + +//CHECK#2 +if (isNaN(Number.NEGATIVE_INFINITY - Number.NEGATIVE_INFINITY) !== true ) { + $ERROR('#2: -Infinity - -Infinity === Not-a-Number. Actual: ' + (-Infinity - -Infinity)); +} + + + + diff --git a/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T4.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T4.js new file mode 100644 index 000000000..2a0ddf37b --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T4.js @@ -0,0 +1,53 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x - y produces the same result as x + (-y) + * + * @path ch11/11.6/11.6.2/S11.6.2_A4_T4.js + * @description The difference of an infinity and a finite value is equal to infinity of appropriate sign + */ + +//CHECK#1 +if (Number.POSITIVE_INFINITY - 1 !== Number.POSITIVE_INFINITY ) { + $ERROR('#1: Infinity - 1 === Infinity. Actual: ' + (Infinity - 1)); +} + +//CHECK#2 +if (-1 - Number.POSITIVE_INFINITY !== Number.NEGATIVE_INFINITY ) { + $ERROR('#2: -1 - Infinity === -Infinity. Actual: ' + (-1 - Infinity)); +} + +//CHECK#3 +if (Number.NEGATIVE_INFINITY - 1 !== Number.NEGATIVE_INFINITY ) { + $ERROR('#3: -Infinity - 1 === -Infinity. Actual: ' + (-Infinity - 1)); +} + +//CHECK#4 +if (-1 - Number.NEGATIVE_INFINITY !== Number.POSITIVE_INFINITY ) { + $ERROR('#4: -1 - -Infinity === Infinity. Actual: ' + (-1 - -Infinity)); +} + +//CHECK#5 +if (Number.POSITIVE_INFINITY - Number.MAX_VALUE !== Number.POSITIVE_INFINITY ) { + $ERROR('#5: Infinity - Number.MAX_VALUE === Infinity. Actual: ' + (Infinity - Number.MAX_VALUE)); +} + +//CHECK#6 +if (-Number.MAX_VALUE - Number.POSITIVE_INFINITY !== Number.NEGATIVE_INFINITY ) { + $ERROR('#6: -Number.MAX_VALUE - Infinity === I-nfinity. Actual: ' + (-Number.MAX_VALUE - Infinity)); +} + +//CHECK#7 +if (Number.NEGATIVE_INFINITY - Number.MAX_VALUE !== Number.NEGATIVE_INFINITY ) { + $ERROR('#7: -Infinity - Number.MAX_VALUE === -Infinity. Actual: ' + (-Infinity - Number.MAX_VALUE)); +} + +//CHECK#8 +if (-Number.MAX_VALUE - Number.NEGATIVE_INFINITY !== Number.POSITIVE_INFINITY ) { + $ERROR('#8: -Number.MAX_VALUE - -Infinity === Infinity. Actual: ' + (-Number.MAX_VALUE - -Infinity)); +} + + + + diff --git a/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T5.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T5.js new file mode 100644 index 000000000..bcc6ac258 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T5.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x - y produces the same result as x + (-y) + * + * @path ch11/11.6/11.6.2/S11.6.2_A4_T5.js + * @description Using the rule of sum of two zeroes and the fact that a - b = a + (-b) + */ + +//CHECK#1 +if (-0 - -0 !== 0 ) { + $ERROR('#1.1: -0 - -0 === 0. Actual: ' + (-0 - -0)); +} else { + if (1 / (-0 - -0) !== Number.POSITIVE_INFINITY) { + $ERROR('#1.2: -0 - -0 === + 0. Actual: -0'); + } +} + +//CHECK#2 +if (0 - -0 !== 0 ) { + $ERROR('#2.1: 0 - -0 === 0. Actual: ' + (0 - -0)); +} else { + if (1 / (0 - -0) !== Number.POSITIVE_INFINITY) { + $ERROR('#2.2: 0 - -0 === + 0. Actual: -0'); + } +} + +//CHECK#3 +if (-0 - 0 !== -0 ) { + $ERROR('#3.1: -0 - 0 === 0. Actual: ' + (-0 - 0)); +} else { + if (1 / (-0 - 0) !== Number.NEGATIVE_INFINITY) { + $ERROR('#3.2: -0 - 0 === - 0. Actual: +0'); + } +} + +//CHECK#4 +if (0 - 0 !== 0 ) { + $ERROR('#4.1: 0 - 0 === 0. Actual: ' + (0 - 0)); +} else { + if (1 / (0 - 0) !== Number.POSITIVE_INFINITY) { + $ERROR('#4.2: 0 - 0 === + 0. Actual: -0'); + } +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T6.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T6.js new file mode 100644 index 000000000..a71e3068f --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T6.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 produces the same result as x + (-y) + * + * @path ch11/11.6/11.6.2/S11.6.2_A4_T6.js + * @description Using the rule of sum of a zero and a nonzero finite value and the fact that a - b = a + (-b) + */ + +//CHECK#1 +if (1 - -0 !== 1 ) { + $ERROR('#1: 1 - -0 === 1. Actual: ' + (1 - -0)); +} + +//CHECK#2 +if (1 - 0 !== 1 ) { + $ERROR('#2: 1 - 0 === 1. Actual: ' + (1 - 0)); +} + +//CHECK#3 +if (-0 - 1 !== -1 ) { + $ERROR('#3: -0 - 1 === -1. Actual: ' + (-0 - 1)); +} + +//CHECK#4 +if (0 - 1 !== -1 ) { + $ERROR('#4: 0 - 1 === -1. Actual: ' + (0 - 1)); +} + +//CHECK#5 +if (Number.MAX_VALUE - -0 !== Number.MAX_VALUE ) { + $ERROR('#5: Number.MAX_VALUE - -0 === Number.MAX_VALUE. Actual: ' + (Number.MAX_VALUE - -0)); +} + +//CHECK#6 +if (Number.MAX_VALUE - 0 !== Number.MAX_VALUE ) { + $ERROR('#6: Number.MAX_VALUE - 0 === Number.MAX_VALUE. Actual: ' + (Number.MAX_VALUE - 0)); +} + +//CHECK#7 +if (-0 - Number.MIN_VALUE !== -Number.MIN_VALUE ) { + $ERROR('#7: -0 - Number.MIN_VALUE === -Number.MIN_VALUE. Actual: ' + (-0 - Number.MIN_VALUE)); +} + +//CHECK#8 +if (0 - Number.MIN_VALUE !== -Number.MIN_VALUE ) { + $ERROR('#8: 0 - Number.MIN_VALUE === -Number.MIN_VALUE. Actual: ' + (0 - Number.MIN_VALUE)); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T7.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T7.js new file mode 100644 index 000000000..8f810cb46 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T7.js @@ -0,0 +1,37 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/** + * Operator x - y produces the same result as x + (-y) + * + * @path ch11/11.6/11.6.2/S11.6.2_A4_T7.js + * @description The mathematical difference of two nonzero finite values of the same magnitude and same sign is +0 + */ + +//CHECK#1 +if (Number.MIN_VALUE - Number.MIN_VALUE !== +0) { + $ERROR('#1.1: Number.MIN_VALUE - Number.MIN_VALUE === 0. Actual: ' + (Number.MIN_VALUE - Number.MIN_VALUE)); +} else { + if (1 / (Number.MIN_VALUE - Number.MIN_VALUE) !== Number.POSITIVE_INFINITY) { + $ERROR('#1.2: Number.MIN_VALUE - Number.MIN_VALUE === + 0. Actual: -0'); + } +} + +//CHECK#2 +if (-Number.MAX_VALUE - -Number.MAX_VALUE !== +0) { + $ERROR('#2.2: -Number.MAX_VALUE - -Number.MAX_VALUE === 0. Actual: ' + (-Number.MAX_VALUE - -Number.MAX_VALUE)); +} else { + if (1 / (-Number.MAX_VALUE - -Number.MAX_VALUE) !== Number.POSITIVE_INFINITY) { + $ERROR('#2.1: -Number.MAX_VALUE - -Number.MAX_VALUE === + 0. Actual: -0'); + } +} + +//CHECK#3 +if (1 / Number.MAX_VALUE - 1 / Number.MAX_VALUE !== +0) { + $ERROR('#3.1: 1 / Number.MAX_VALUE - 1 / Number.MAX_VALUE === 0. Actual: ' + (1 / Number.MAX_VALUE - 1 / Number.MAX_VALUE)); +} else { + if (1 / (1 / Number.MAX_VALUE - 1 / Number.MAX_VALUE) !== Number.POSITIVE_INFINITY) { + $ERROR('#3.2: 1 / Number.MAX_VALUE - 1 / Number.MAX_VALUE === + 0. Actual: -0'); + } +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T8.js b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T8.js new file mode 100644 index 000000000..b8a5cd4e8 --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/S11.6.2_A4_T8.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 produces the same result as x + (-y) + * + * @path ch11/11.6/11.6.2/S11.6.2_A4_T8.js + * @description If the magnitude is too large to represent, the operation overflows and the result is then an infinity of appropriate sign + */ + +//CHECK#1 +if (Number.MAX_VALUE - -Number.MAX_VALUE !== Number.POSITIVE_INFINITY) { + $ERROR('#1: Number.MAX_VALUE - -Number.MAX_VALUE === Number.POSITIVE_INFINITY. Actual: ' + (Number.MAX_VALUE - -Number.MAX_VALUE)); +} + +//CHECK#2 +if (-Number.MAX_VALUE - Number.MAX_VALUE !== Number.NEGATIVE_INFINITY) { + $ERROR('#2: -Number.MAX_VALUE - umber.MAX_VALUE === Number.NEGATIVE_INFINITY. Actual: ' + (-Number.MAX_VALUE - umber.MAX_VALUE)); +} + +//CHECK#3 +if (1e+308 - -1e+308 !== Number.POSITIVE_INFINITY) { + $ERROR('#3: 1e+308 - -1e+308 === Number.POSITIVE_INFINITY. Actual: ' + (1e+308 - -1e+308)); +} + +//CHECK#4 +if (-8.99e+307 - 8.99e+307 !== Number.NEGATIVE_INFINITY) { + $ERROR('#4: -8.99e+307 - 8.99e+307 === Number.NEGATIVE_INFINITY. Actual: ' + (-8.99e+307 - 8.99e+307)); +} + diff --git a/js/src/tests/test262/ch11/11.6/11.6.2/browser.js b/js/src/tests/test262/ch11/11.6/11.6.2/browser.js new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/browser.js diff --git a/js/src/tests/test262/ch11/11.6/11.6.2/shell.js b/js/src/tests/test262/ch11/11.6/11.6.2/shell.js new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/11.6.2/shell.js diff --git a/js/src/tests/test262/ch11/11.6/browser.js b/js/src/tests/test262/ch11/11.6/browser.js new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/browser.js diff --git a/js/src/tests/test262/ch11/11.6/shell.js b/js/src/tests/test262/ch11/11.6/shell.js new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/js/src/tests/test262/ch11/11.6/shell.js |