aboutsummaryrefslogtreecommitdiffstats
path: root/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator
diff options
context:
space:
mode:
Diffstat (limited to 'external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator')
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.5.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T2.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T3.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T4.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T5.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T6.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T7.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T8.js29
31 files changed, 1090 insertions, 0 deletions
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A1.js
new file mode 100644
index 000000000..944a09d1a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A1;
+* @section: 11.6.2, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between AdditiveExpression and "-" or between "-" and MultiplicativeExpression are allowed;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T1.js
new file mode 100644
index 000000000..a8ea8e7b6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A2.1_T1;
+* @section: 11.6.2;
+* @assertion: Operator x - y uses GetValue;
+* @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T2.js
new file mode 100644
index 000000000..de0dad9e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A2.1_T2;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y uses GetValue;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T3.js
new file mode 100644
index 000000000..3e92c1cb4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A2.1_T3;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y uses GetValue;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.2_T1.js
new file mode 100644
index 000000000..4119ce6f3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A2.2_T1;
+ * @section: 11.6.2, 8.6.2.6;
+ * @assertion: Operator x - y uses [[Default Value]];
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.3_T1.js
new file mode 100644
index 000000000..f54f5dd55
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A2.3_T1;
+ * @section: 11.6.2;
+ * @assertion: ToNumber(first expression) is called first, and then ToNumber(second expression);
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T1.js
new file mode 100644
index 000000000..fc4671655
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A2.4_T1;
+ * @section: 11.6.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T2.js
new file mode 100644
index 000000000..985a2b555
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A2.4_T2;
+ * @section: 11.6.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T3.js
new file mode 100644
index 000000000..bf6f225c6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T3.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.
+
+/**
+ * @name: S11.6.2_A2.4_T3;
+ * @section: 11.6.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.1.js
new file mode 100644
index 000000000..b85066541
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T1.1;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.2.js
new file mode 100644
index 000000000..7977c03db
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.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.
+
+/**
+ * @name: S11.6.2_A3_T1.2;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.3.js
new file mode 100644
index 000000000..0b62c8f7f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T1.3;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.4.js
new file mode 100644
index 000000000..7236464c2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T1.4;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.5.js
new file mode 100644
index 000000000..e8d040b7b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.5.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T1.5;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.1.js
new file mode 100644
index 000000000..624e1a7ce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.1;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.2.js
new file mode 100644
index 000000000..d5a026d37
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.2;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.3.js
new file mode 100644
index 000000000..a1685d0d8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.3;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.4.js
new file mode 100644
index 000000000..52cde424a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.4;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.5.js
new file mode 100644
index 000000000..15020de67
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.5;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.6.js
new file mode 100644
index 000000000..95230265a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.6;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.7.js
new file mode 100644
index 000000000..9810bdf00
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.7;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.8.js
new file mode 100644
index 000000000..a21ef92c9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.8;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.9.js
new file mode 100644
index 000000000..4a26e959c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.9;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T1.js
new file mode 100644
index 000000000..9f0118c11
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A4_T1;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T2.js
new file mode 100644
index 000000000..ca62b01e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_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.
+
+/**
+* @name: S11.6.2_A4_T2;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T3.js
new file mode 100644
index 000000000..968c3f290
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_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.
+
+/**
+* @name: S11.6.2_A4_T3;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T4.js
new file mode 100644
index 000000000..16fe4b375
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T4.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A4_T4;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T5.js
new file mode 100644
index 000000000..322cec98e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T5.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A4_T5;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T6.js
new file mode 100644
index 000000000..63a31c2b1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T6.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A4_T6;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T7.js
new file mode 100644
index 000000000..274474cc7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T7.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A4_T7;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @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/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T8.js
new file mode 100644
index 000000000..e25ae9409
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A4_T8;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @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));
+}