aboutsummaryrefslogtreecommitdiffstats
path: root/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator
diff options
context:
space:
mode:
Diffstat (limited to 'external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator')
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.5.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.2.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T2.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T3.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T7.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T8.js19
32 files changed, 1193 insertions, 0 deletions
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A1.js
new file mode 100644
index 000000000..00f5b1da0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_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.5.1_A1;
+* @section: 11.5.1, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between MultiplicativeExpression and "*" or between "*" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("1\u0009*\u00091") !== 1) {
+ $ERROR('#1: 1\\u0009*\\u00091 === 1');
+}
+
+//CHECK#2
+if (eval("1\u000B*\u000B1") !== 1) {
+ $ERROR('#2: 1\\u000B*\\u000B1 === 1');
+}
+
+//CHECK#3
+if (eval("1\u000C*\u000C1") !== 1) {
+ $ERROR('#3: 1\\u000C*\\u000C1 === 1');
+}
+
+//CHECK#4
+if (eval("1\u0020*\u00201") !== 1) {
+ $ERROR('#4: 1\\u0020*\\u00201 === 1');
+}
+
+//CHECK#5
+if (eval("1\u00A0*\u00A01") !== 1) {
+ $ERROR('#5: 1\\u00A0*\\u00A01 === 1');
+}
+
+//CHECK#6
+if (eval("1\u000A*\u000A1") !== 1) {
+ $ERROR('#6: 1\\u000A*\\u000A1 === 1');
+}
+
+//CHECK#7
+if (eval("1\u000D*\u000D1") !== 1) {
+ $ERROR('#7: 1\\u000D*\\u000D1 === 1');
+}
+
+//CHECK#8
+if (eval("1\u2028*\u20281") !== 1) {
+ $ERROR('#8: 1\\u2028*\\u20281 === 1');
+}
+
+//CHECK#9
+if (eval("1\u2029*\u20291") !== 1) {
+ $ERROR('#9: 1\\u2029*\\u20291 === 1');
+}
+
+//CHECK#10
+if (eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029*\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== 1) {
+ $ERROR('#10: 1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029*\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291 === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T1.js
new file mode 100644
index 000000000..0077525bd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_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.5.1_A2.1_T1;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (1 * 1 !== 1) {
+ $ERROR('#1: 1 * 1 === 1. Actual: ' + (1 * 1));
+}
+
+//CHECK#2
+var x = 1;
+if (x * 1 !== 1) {
+ $ERROR('#2: var x = 1; x * 1 === 1. Actual: ' + (x * 1));
+}
+
+//CHECK#3
+var y = 1;
+if (1 * y !== 1) {
+ $ERROR('#3: var y = 1; 1 * y === 1. Actual: ' + (1 * y));
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if (x * y !== 1) {
+ $ERROR('#4: var x = 1; var y = 1; x * y === 1. Actual: ' + (x * y));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if (objectx.prop * objecty.prop !== 1) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; objectx.prop * objecty.prop === 1. Actual: ' + (objectx.prop * objecty.prop));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T2.js
new file mode 100644
index 000000000..f7b55cafd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A2.1_T2;
+ * @section: 11.5.1;
+ * @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.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T3.js
new file mode 100644
index 000000000..57b3d049c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_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.
+
+/**
+ * @name: S11.5.1_A2.1_T3;
+ * @section: 11.5.1;
+ * @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.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.2_T1.js
new file mode 100644
index 000000000..712271524
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_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.5.1_A2.2_T1;
+ * @section: 11.5.1, 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 !== 1) {
+ $ERROR('#1: {valueOf: function() {return 1}} * 1 === 1. Actual: ' + ({valueOf: function() {return 1}} * 1));
+}
+
+//CHECK#2
+if ({valueOf: function() {return 1}, toString: function() {return 0}} * 1 !== 1) {
+ $ERROR('#2: {valueOf: function() {return 1}, toString: function() {return 0}} * 1 === 1. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return 0}} * 1));
+}
+
+//CHECK#3
+if ({valueOf: function() {return 1}, toString: function() {return {}}} * 1 !== 1) {
+ $ERROR('#3: {valueOf: function() {return 1}, toString: function() {return {}}} * 1 === 1. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return {}}} * 1));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return 1}, toString: function() {throw "error"}} * 1 !== 1) {
+ $ERROR('#4.1: {valueOf: function() {return 1}, toString: function() {throw "error"}} * 1 === 1. Actual: ' + ({valueOf: function() {return 1}, toString: function() {throw "error"}} * 1));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return 1}, toString: function() {throw "error"}} * 1 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return 1}, toString: function() {throw "error"}} * 1 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (1 * {toString: function() {return 1}} !== 1) {
+ $ERROR('#5: 1 * {toString: function() {return 1}} === 1. Actual: ' + (1 * {toString: function() {return 1}}));
+}
+
+//CHECK#6
+if (1 * {valueOf: function() {return {}}, toString: function() {return 1}} !== 1) {
+ $ERROR('#6: 1 * {valueOf: function() {return {}}, toString: function() {return 1}} === 1. Actual: ' + (1 * {valueOf: function() {return {}}, toString: function() {return 1}}));
+}
+
+//CHECK#7
+try {
+ 1 * {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ $ERROR('#7.1: 1 * {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (1 * {valueOf: function() {throw "error"}, toString: function() {return 1}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 * {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 * {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 * {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 * {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 * {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.3_T1.js
new file mode 100644
index 000000000..c9a13f709
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_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.5.1_A2.3_T1;
+ * @section: 11.5.1;
+ * @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.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T1.js
new file mode 100644
index 000000000..541da82f8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_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.5.1_A2.4_T1;
+ * @section: 11.5.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) * x !== 1) {
+ $ERROR('#1: var x = 0; (x = 1) * x === 1. Actual: ' + ((x = 1) * x));
+}
+
+//CHECK#2
+var x = 0;
+if (x * (x = 1) !== 0) {
+ $ERROR('#2: var x = 0; x * (x = 1) === 0. Actual: ' + (x * (x = 1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T2.js
new file mode 100644
index 000000000..7a4a9c244
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_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.5.1_A2.4_T2;
+ * @section: 11.5.1;
+ * @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.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T3.js
new file mode 100644
index 000000000..d7c618341
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_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.5.1_A2.4_T3;
+ * @section: 11.5.1;
+ * @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 !== 1) {
+ $ERROR('#2: (y = 1) * y === 1. Actual: ' + ((y = 1) * y));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.1.js
new file mode 100644
index 000000000..8b4fffb14
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_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.5.1_A3_T1.1;
+ * @section: 11.5.1;
+ * @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 !== 1) {
+ $ERROR('#1: true * true === 1. Actual: ' + (true * true));
+}
+
+//CHECK#2
+if (new Boolean(true) * true !== 1) {
+ $ERROR('#2: new Boolean(true) * true === 1. Actual: ' + (new Boolean(true) * true));
+}
+
+//CHECK#3
+if (true * new Boolean(true) !== 1) {
+ $ERROR('#3: true * new Boolean(true) === 1. Actual: ' + (true * new Boolean(true)));
+}
+
+//CHECK#4
+if (new Boolean(true) * new Boolean(true) !== 1) {
+ $ERROR('#4: new Boolean(true) * new Boolean(true) === 1. Actual: ' + (new Boolean(true) * new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.2.js
new file mode 100644
index 000000000..4c37922a0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_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.5.1_A3_T1.2;
+ * @section: 11.5.1;
+ * @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 !== 1) {
+ $ERROR('#1: 1 * 1 === 1. Actual: ' + (1 * 1));
+}
+
+//CHECK#2
+if (new Number(1) * 1 !== 1) {
+ $ERROR('#2: new Number(1) * 1 === 1. Actual: ' + (new Number(1) * 1));
+}
+
+//CHECK#3
+if (1 * new Number(1) !== 1) {
+ $ERROR('#3: 1 * new Number(1) === 1. Actual: ' + (1 * new Number(1)));
+}
+
+//CHECK#4
+if (new Number(1) * new Number(1) !== 1) {
+ $ERROR('#4: new Number(1) * new Number(1) === 1. Actual: ' + (new Number(1) * new Number(1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.3.js
new file mode 100644
index 000000000..e74258361
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_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.5.1_A3_T1.3;
+ * @section: 11.5.1;
+ * @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" !== 1) {
+ $ERROR('#1: "1" * "1" === 1. Actual: ' + ("1" * "1"));
+}
+
+//CHECK#2
+if (new String("1") * "1" !== 1) {
+ $ERROR('#2: new String("1") * "1" === 1. Actual: ' + (new String("1") * "1"));
+}
+
+//CHECK#3
+if ("1" * new String("1") !== 1) {
+ $ERROR('#3: "1" * new String("1") === 1. Actual: ' + ("1" * new String("1")));
+}
+
+//CHECK#4
+if (new String("1") * new String("1") !== 1) {
+ $ERROR('#4: new String("1") * new String("1") === 1. Actual: ' + (new String("1") * new String("1")));
+}
+
+//CHECK#5
+if (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.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.4.js
new file mode 100644
index 000000000..d014c08b9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_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.5.1_A3_T1.4;
+ * @section: 11.5.1;
+ * @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.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.5.js
new file mode 100644
index 000000000..4f7b7271d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_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.5.1_A3_T1.5;
+ * @section: 11.5.1;
+ * @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.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.1.js
new file mode 100644
index 000000000..566f5d9c4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_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.5.1_A3_T2.1;
+ * @section: 11.5.1;
+ * @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 Number (primitive and object);
+ */
+
+//CHECK#1
+if (true * 1 !== 1) {
+ $ERROR('#1: true * 1 === 1. Actual: ' + (true * 1));
+}
+
+//CHECK#2
+if (1 * true !== 1) {
+ $ERROR('#2: 1 * true === 1. Actual: ' + (1 * true));
+}
+
+//CHECK#3
+if (new Boolean(true) * 1 !== 1) {
+ $ERROR('#3: new Boolean(true) * 1 === 1. Actual: ' + (new Boolean(true) * 1));
+}
+
+//CHECK#4
+if (1 * new Boolean(true) !== 1) {
+ $ERROR('#4: 1 * new Boolean(true) === 1. Actual: ' + (1 * new Boolean(true)));
+}
+
+//CHECK#5
+if (true * new Number(1) !== 1) {
+ $ERROR('#5: true * new Number(1) === 1. Actual: ' + (true * new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) * true !== 1) {
+ $ERROR('#6: new Number(1) * true === 1. Actual: ' + (new Number(1) * true));
+}
+
+//CHECK#7
+if (new Boolean(true) * new Number(1) !== 1) {
+ $ERROR('#7: new Boolean(true) * new Number(1) === 1. Actual: ' + (new Boolean(true) * new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) * new Boolean(true) !== 1) {
+ $ERROR('#8: new Number(1) * new Boolean(true) === 1. Actual: ' + (new Number(1) * new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.2.js
new file mode 100644
index 000000000..ed949b587
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_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.5.1_A3_T2.2;
+ * @section: 11.5.1;
+ * @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 !== 1) {
+ $ERROR('#1: "1" * 1 === 1. Actual: ' + ("1" * 1));
+}
+
+//CHECK#2
+if (1 * "1" !== 1) {
+ $ERROR('#2: 1 * "1" === 1. Actual: ' + (1 * "1"));
+}
+
+//CHECK#3
+if (new String("1") * 1 !== 1) {
+ $ERROR('#3: new String("1") * 1 === 1. Actual: ' + (new String("1") * 1));
+}
+
+//CHECK#4
+if (1 * new String("1") !== 1) {
+ $ERROR('#4: 1 * new String("1") === 1. Actual: ' + (1 * new String("1")));
+}
+
+//CHECK#5
+if ("1" * new Number(1) !== 1) {
+ $ERROR('#5: "1" * new Number(1) === 1. Actual: ' + ("1" * new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) * "1" !== 1) {
+ $ERROR('#6: new Number(1) * "1" === 1. Actual: ' + (new Number(1) * "1"));
+}
+
+//CHECK#7
+if (new String("1") * new Number(1) !== 1) {
+ $ERROR('#7: new String("1") * new Number(1) === 1. Actual: ' + (new String("1") * new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) * new String("1") !== 1) {
+ $ERROR('#8: new Number(1) * new String("1") === 1. Actual: ' + (new Number(1) * new String("1")));
+}
+
+//CHECK#9
+if (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.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.3.js
new file mode 100644
index 000000000..8c3d32145
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_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.5.1_A3_T2.3;
+ * @section: 11.5.1;
+ * @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 !== 0) {
+ $ERROR('#1: 1 * null === 0. Actual: ' + (1 * null));
+}
+
+//CHECK#2
+if (null * 1 !== 0) {
+ $ERROR('#2: null * 1 === 0. Actual: ' + (null * 1));
+}
+
+//CHECK#3
+if (new Number(1) * null !== 0) {
+ $ERROR('#3: new Number(1) * null === 0. Actual: ' + (new Number(1) * null));
+}
+
+//CHECK#4
+if (null * new Number(1) !== 0) {
+ $ERROR('#4: null * new Number(1) === 0. Actual: ' + (null * new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.4.js
new file mode 100644
index 000000000..919fa516f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_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.5.1_A3_T2.4;
+ * @section: 11.5.1;
+ * @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.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.5.js
new file mode 100644
index 000000000..b15f68b35
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_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.5.1_A3_T2.5;
+ * @section: 11.5.1;
+ * @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" !== 1) {
+ $ERROR('#1: true * "1" === 1. Actual: ' + (true * "1"));
+}
+
+//CHECK#2
+if ("1" * true !== 1) {
+ $ERROR('#2: "1" * true === 1. Actual: ' + ("1" * true));
+}
+
+//CHECK#3
+if (new Boolean(true) * "1" !== 1) {
+ $ERROR('#3: new Boolean(true) * "1" === 1. Actual: ' + (new Boolean(true) * "1"));
+}
+
+//CHECK#4
+if ("1" * new Boolean(true) !== 1) {
+ $ERROR('#4: "1" * new Boolean(true) === 1. Actual: ' + ("1" * new Boolean(true)));
+}
+
+//CHECK#5
+if (true * new String("1") !== 1) {
+ $ERROR('#5: true * new String("1") === 1. Actual: ' + (true * new String("1")));
+}
+
+//CHECK#6
+if (new String("1") * true !== 1) {
+ $ERROR('#6: new String("1") * true === 1. Actual: ' + (new String("1") * true));
+}
+
+//CHECK#7
+if (new Boolean(true) * new String("1") !== 1) {
+ $ERROR('#7: new Boolean(true) * new String("1") === 1. Actual: ' + (new Boolean(true) * new String("1")));
+}
+
+//CHECK#8
+if (new String("1") * new Boolean(true) !== 1) {
+ $ERROR('#8: new String("1") * new Boolean(true) === 1. Actual: ' + (new String("1") * new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.6.js
new file mode 100644
index 000000000..94d03ece2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_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.5.1_A3_T2.6;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between primitive 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.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.7.js
new file mode 100644
index 000000000..d7df94cb7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_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.5.1_A3_T2.7;
+ * @section: 11.5.1;
+ * @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 !== 0) {
+ $ERROR('#1: "1" * null === 0. Actual: ' + ("1" * null));
+}
+
+//CHECK#2
+if (null * "1" !== 0) {
+ $ERROR('#2: null * "1" === 0. Actual: ' + (null * "1"));
+}
+
+//CHECK#3
+if (new String("1") * null !== 0) {
+ $ERROR('#3: new String("1") * null === 0. Actual: ' + (new String("1") * null));
+}
+
+//CHECK#4
+if (null * new String("1") !== 0) {
+ $ERROR('#4: null * new String("1") === 0. Actual: ' + (null * new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.8.js
new file mode 100644
index 000000000..11b1f6caf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_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.5.1_A3_T2.8;
+ * @section: 11.5.1;
+ * @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.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.9.js
new file mode 100644
index 000000000..481aa0bd2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_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.5.1_A3_T2.9;
+ * @section: 11.5.1;
+ * @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 !== 0) {
+ $ERROR('#1: true * null === 0. Actual: ' + (true * null));
+}
+
+//CHECK#2
+if (null * true !== 0) {
+ $ERROR('#2: null * true === 0. Actual: ' + (null * true));
+}
+
+//CHECK#3
+if (new Boolean(true) * null !== 0) {
+ $ERROR('#3: new Boolean(true) * null === 0. Actual: ' + (new Boolean(true) * null));
+}
+
+//CHECK#4
+if (null * new Boolean(true) !== 0) {
+ $ERROR('#4: null * new Boolean(true) === 0. Actual: ' + (null * new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.1.js
new file mode 100644
index 000000000..ad51bea98
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.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.5.1_A4_T1.1;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: If left operand is NaN, the result is NaN;
+ */
+
+//CHECK#1
+if (isNaN(Number.NaN * Number.NaN) !== true) {
+ $ERROR('#1: NaN * NaN === Not-a-Number. Actual: ' + (NaN * NaN));
+}
+
+//CHECK#2
+if (isNaN(Number.NaN * +0) !== true) {
+ $ERROR('#2: NaN * +0 === Not-a-Number. Actual: ' + (NaN * +0));
+}
+
+//CHECK#3
+if (isNaN(Number.NaN * -0) !== true) {
+ $ERROR('#3: NaN * -0 === Not-a-Number. Actual: ' + (NaN * -0));
+}
+
+//CHECK#4
+if (isNaN(Number.NaN * Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#4: NaN * Infinity === Not-a-Number. Actual: ' + (NaN * Infinity));
+}
+
+//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.NaN * Number.MAX_VALUE) !== true) {
+ $ERROR('#6: NaN * Number.MAX_VALUE === Not-a-Number. Actual: ' + (NaN * Number.MAX_VALUE));
+}
+
+//CHECK#7
+if (isNaN(Number.NaN * Number.MIN_VALUE) !== true) {
+ $ERROR('#7: NaN * Number.MIN_VALUE === Not-a-Number. Actual: ' + (NaN * Number.MIN_VALUE));
+}
+
+//CHECK#8
+if (isNaN(Number.NaN * 1) !== true) {
+ $ERROR('#8: NaN * 1 === Not-a-Number. Actual: ' + (NaN * 1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.2.js
new file mode 100644
index 000000000..4c902c305
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.2.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.5.1_A4_T1.2;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: If right operand is NaN, the result is NaN;
+ */
+
+//CHECK#1
+if (isNaN(Number.NaN * Number.NaN) !== true) {
+ $ERROR('#1: NaN * NaN === Not-a-Number. Actual: ' + (NaN * NaN));
+}
+
+//CHECK#2
+if (isNaN(+0 * Number.NaN) !== true) {
+ $ERROR('#2: +0 * NaN === Not-a-Number. Actual: ' + (+0 * NaN));
+}
+
+//CHECK#3
+if (isNaN(-0 * Number.NaN) !== true) {
+ $ERROR('#3: -0 * NaN === Not-a-Number. Actual: ' + (-0 * NaN));
+}
+
+//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.NEGATIVE_INFINITY * Number.NaN) !== true) {
+ $ERROR('#5: -Infinity * NaN === Not-a-Number. Actual: ' + ( -Infinity * NaN));
+}
+
+//CHECK#6
+if (isNaN(Number.MAX_VALUE * Number.NaN) !== true) {
+ $ERROR('#6: Number.MAX_VALUE * NaN === Not-a-Number. Actual: ' + (Number.MAX_VALUE * NaN));
+}
+
+//CHECK#7
+if (isNaN(Number.MIN_VALUE * Number.NaN) !== true) {
+ $ERROR('#7: Number.MIN_VALUE * NaN === Not-a-Number. Actual: ' + (Number.MIN_VALUE * NaN));
+}
+
+//CHECK#8
+if (isNaN(1 * Number.NaN) !== true) {
+ $ERROR('#8: 1 * NaN === Not-a-Number. Actual: ' + (1 * NaN));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T2.js
new file mode 100644
index 000000000..744ccb269
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T2.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A4_T2;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: The sign of the result is positive if both operands have the same sign, negative if the operands have different signs;
+ */
+
+//CHECK#1
+if (1 * 1 !== 1) {
+ $ERROR('#1: 1 * 1 === 1. Actual: ' + (1 * 1));
+}
+
+//CHECK#2
+if (1 * -1 !== -1) {
+ $ERROR('#2: 1 * -1 === -1. Actual: ' + (1 * -1));
+}
+
+//CHECK#3
+if (-1 * 1 !== -1) {
+ $ERROR('#3: -1 * 1 === -1. Actual: ' + (-1 * 1));
+}
+
+//CHECK#4
+if (-1 * -1 !== 1) {
+ $ERROR('#4: -1 * -1 === 1. Actual: ' + (-1 * -1));
+}
+
+//CHECK#5
+if (0 * 0 !== 0) {
+ $ERROR('#5.1: 0 * 0 === 0. Actual: ' + (0 * 0));
+} else {
+ if (1 / (0 * 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5.2: 0 * 0 === + 0. Actual: -0');
+ }
+}
+
+//CHECK#6
+if (0 * -0 !== -0) {
+ $ERROR('#6.1: 0 * -0 === 0. Actual: ' + (0 * -0));
+} else {
+ if (1 / (0 * -0) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#6.2: 0 * -0 === - 0. Actual: +0');
+ }
+}
+
+//CHECK#7
+if (-0 * 0 !== -0) {
+ $ERROR('#7.1: -0 * 0 === 0. Actual: ' + (-0 * 0));
+} else {
+ if (1 / (-0 * 0) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#7.2: -0 * 0 === - 0. Actual: +0');
+ }
+}
+
+//CHECK#8
+if (-0 * -0 !== 0) {
+ $ERROR('#8.1: -0 * -0 === 0. Actual: ' + (-0 * -0));
+} else {
+ if (1 / (-0 * -0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#8.2: 0 * -0 === - 0. Actual: +0');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T3.js
new file mode 100644
index 000000000..0d21ca573
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T3.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.5.1_A4_T3;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: Multiplication of an infinity by a zero results in NaN;
+ */
+
+//CHECK#1
+if (isNaN(Number.NEGATIVE_INFINITY * 0) !== true) {
+ $ERROR('#1: Infinity * 0 === Not-a-Number. Actual: ' + (Infinity * 0));
+}
+
+//CHECK#2
+if (isNaN(-0 * Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#2: -0 * -Infinity === Not-a-Number. Actual: ' + (-0 * -Infinity));
+}
+
+//CHECK#3
+if (isNaN(Number.POSITIVE_INFINITY * -0) !== true) {
+ $ERROR('#3: Infinity * -0 === Not-a-Number. Actual: ' + (Infinity * -0));
+}
+
+//CHECK#4
+if (isNaN(0 * Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#4: 0 * Infinity === Not-a-Number. Actual: ' + (0 * Infinity));
+}
+
+//CHECK#5
+if (isNaN(Number.NEGATIVE_INFINITY * -0) !== true) {
+ $ERROR('#5: Infinity * -0 === Not-a-Number. Actual: ' + (Infinity * -0));
+}
+
+//CHECK#6
+if (isNaN(0 * Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#6: 0 * -Infinity === Not-a-Number. Actual: ' + (0 * -Infinity));
+}
+
+//CHECK#7
+if (isNaN(Number.POSITIVE_INFINITY * 0) !== true) {
+ $ERROR('#7: Infinity * 0 === Not-a-Number. Actual: ' + (Infinity * 0));
+}
+
+//CHECK#8
+if (isNaN(-0 * Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#8: -0 * Infinity === Not-a-Number. Actual: ' + (-0 * Infinity));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T4.js
new file mode 100644
index 000000000..cc7ddb81e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T4.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.5.1_A4_T4;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: Multiplication of an infinity by an infinity results in an infinity of appropriate sign;
+ */
+
+//CHECK#1
+if (Number.NEGATIVE_INFINITY * Number.NEGATIVE_INFINITY !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: -Infinity * -Infinity === Infinity. Actual: ' + (-Infinity * -Infinity));
+}
+
+//CHECK#2
+if (Number.POSITIVE_INFINITY * Number.POSITIVE_INFINITY !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2: Infinity * Infinity === Infinity. Actual: ' + (Infinity * Infinity));
+}
+
+//CHECK#3
+if (Number.NEGATIVE_INFINITY * Number.POSITIVE_INFINITY !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#3: -Infinity * Infinity === -Infinity. Actual: ' + (-Infinity * Infinity));
+}
+
+//CHECK#4
+if (Number.POSITIVE_INFINITY * Number.NEGATIVE_INFINITY !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4: Infinity * -Infinity === -Infinity. Actual: ' + (Infinity * -Infinity));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T5.js
new file mode 100644
index 000000000..0e2017d47
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T5.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.5.1_A4_T5;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: Multiplication of an infinity by a finite non-zero value results in a signed infinity;
+ */
+
+//CHECK#1
+if (Number.NEGATIVE_INFINITY * -1 !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: -Infinity * -1 === Infinity. Actual: ' + (-Infinity * -1));
+}
+
+//CHECK#2
+if (-1 * Number.NEGATIVE_INFINITY !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2: -1 * -Infinity === Infinity. Actual: ' + (-1 * -Infinity));
+}
+
+//CHECK#3
+if (Number.POSITIVE_INFINITY * -1 !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#3: Infinity * -1 === -Infinity. Actual: ' + (Infinity * -1));
+}
+
+//CHECK#4
+if (-1 * Number.POSITIVE_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.POSITIVE_INFINITY * Number.MAX_VALUE !== Number.MAX_VALUE * Number.POSITIVE_INFINITY) {
+ $ERROR('#6: Infinity * Number.MAX_VALUE === Number.MAX_VALUE * Infinity. Actual: ' + (Infinity * Number.MAX_VALUE));
+}
+
+//CHECK#7
+if (Number.NEGATIVE_INFINITY * Number.MIN_VALUE !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#7: -Infinity * Number.MIN_VALUE === -Infinity. Actual: ' + (-Infinity * Number.MIN_VALUE));
+}
+
+//CHECK#8
+if (Number.NEGATIVE_INFINITY * Number.MIN_VALUE !== Number.MIN_VALUE * Number.NEGATIVE_INFINITY) {
+ $ERROR('#8: -Infinity * Number.MIN_VALUE === Number.MIN_VALUE * -Infinity. Actual: ' + (-Infinity * Number.MIN_VALUE));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T6.js
new file mode 100644
index 000000000..a314b80fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T6.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.5.1_A4_T6;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: If the magnitude is too large to represent, the result is then an infinity of appropriate sign;
+ */
+
+//CHECK#1
+if (Number.MAX_VALUE * 1.1 !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: Number.MAX_VALUE * 1.1 === Number.POSITIVE_INFINITY. Actual: ' + (Number.MAX_VALUE * 1.1));
+}
+
+//CHECK#2
+if (-1.1 * Number.MAX_VALUE !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#2: -1.1 * Number.MAX_VALUE === Number.NEGATIVE_INFINITY. Actual: ' + (-1.1 * Number.MAX_VALUE));
+}
+
+//CHECK#3
+if (Number.MAX_VALUE * 1 !== Number.MAX_VALUE) {
+ $ERROR('#3: Number.MAX_VALUE * 1 === Number.MAX_VALUE. Actual: ' + (Number.MAX_VALUE * 1));
+}
+
+//CHECK#4
+if (-1 * Number.MAX_VALUE !== -Number.MAX_VALUE) {
+ $ERROR('#4: -1 * Number.MAX_VALUE === -Number.MAX_VALUE. Actual: ' + (-1 * Number.MAX_VALUE));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T7.js
new file mode 100644
index 000000000..4f517eaf2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T7.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A4_T7;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: If the magnitude is too small to represent, the result is then a zero of appropriate sign;
+ */
+
+//CHECK#1
+if (Number.MIN_VALUE * 0.1 !== 0) {
+ $ERROR('#1: Number.MIN_VALUE * 0.1 === 0. Actual: ' + (Number.MIN_VALUE * 0.1));
+}
+
+//CHECK#2
+if (-0.1 * Number.MIN_VALUE !== -0) {
+ $ERROR('#2.1: -0.1 * Number.MIN_VALUE === -0. Actual: ' + (-0.1 * Number.MIN_VALUE));
+} else {
+ if (1 / (-0.1 * Number.MIN_VALUE) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#2.2: -0.1 * Number.MIN_VALUE === -0. Actual: +0');
+ }
+}
+
+//CHECK#3
+if (Number.MIN_VALUE * 0.5 !== 0) {
+ $ERROR('#3: Number.MIN_VALUE * 0.5 === 0. Actual: ' + (Number.MIN_VALUE * 0.5));
+}
+
+//CHECK#4
+if (-0.5 * Number.MIN_VALUE !== -0) {
+ $ERROR('#4.1: -0.5 * Number.MIN_VALUE === -0. Actual: ' + (-0.5 * Number.MIN_VALUE));
+} else {
+ if (1 / (-0.5 * Number.MIN_VALUE) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4.2: -0.5 * Number.MIN_VALUE === -0. Actual: +0');
+ }
+}
+
+//CHECK#5
+if (Number.MIN_VALUE * 0.51 !== Number.MIN_VALUE) {
+ $ERROR('#5: Number.MIN_VALUE * 0.51 === Number.MIN_VALUE. Actual: ' + (Number.MIN_VALUE * 0.51));
+}
+
+//CHECK#6
+if (-0.51 * Number.MIN_VALUE !== -Number.MIN_VALUE) {
+ $ERROR('#6: -0.51 * Number.MIN_VALUE === -Number.MIN_VALUE. Actual: ' + (-0.51 * Number.MIN_VALUE));
+}
+
+//CHECK#7
+if (Number.MIN_VALUE * 0.9 !== Number.MIN_VALUE) {
+ $ERROR('#7: Number.MIN_VALUE * 0.9 === Number.MIN_VALUE. Actual: ' + (Number.MIN_VALUE * 0.9));
+}
+
+//CHECK#8
+if (-0.9 * Number.MIN_VALUE !== -Number.MIN_VALUE) {
+ $ERROR('#8: -0.9 * Number.MIN_VALUE === -Number.MIN_VALUE. Actual: ' + (-0.9 * Number.MIN_VALUE));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T8.js
new file mode 100644
index 000000000..d3e466b7b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T8.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A4_T8;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: Multiplication is not always associative (x * y * z is the same as (x * y) * z, not x * (y * z));
+*/
+
+//CHECK#1
+if (Number.MAX_VALUE * 1.1 * 0.9 !== (Number.MAX_VALUE * 1.1) * 0.9) {
+ $ERROR('#1: Number.MAX_VALUE * 1.1 * 0.9 === (Number.MAX_VALUE * 1.1) * 0.9. Actual: ' + (Number.MAX_VALUE * 1.1 * 0.9));
+}
+
+//CHECK#2
+if ((Number.MAX_VALUE * 1.1) * 0.9 === Number.MAX_VALUE * (1.1 * 0.9)) {
+ $ERROR('#2: (Number.MAX_VALUE * 1.1) * 0.9 !== Number.MAX_VALUE * (1.1 * 0.9)');
+}