aboutsummaryrefslogtreecommitdiffstats
path: root/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI
diff options
context:
space:
mode:
Diffstat (limited to 'external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI')
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.1_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.1_T2.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.2_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.2_T2.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.3_T1.js85
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.1_T1.js86
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.2_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.3_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.4_T1.js88
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.4_T2.js88
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.5_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.1_T1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T2.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T3.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.3_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.1.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.3.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.4.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.5.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.6.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A6_T1.js78
28 files changed, 1307 insertions, 0 deletions
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.1_T1.js
new file mode 100644
index 000000000..241ea9366
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.1_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A1.1_T1;
+ * @section: 15.1.3.3;
+ * @assertion: If string.charAt(k) in [0xDC00 - 0xDFFF], throw URIError;
+ * @description: Complex tests;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xDC00; index <= 0xDFFF; index++) {
+ count++;
+ hex = decimalToHexString(index);
+ try {
+ encodeURI(String.fromCharCode(index));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.1_T2.js
new file mode 100644
index 000000000..0480311c5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.1_T2.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A1.1_T2;
+ * @section: 15.1.3.3;
+ * @assertion: If string.charAt(k) in [0xDC00 - 0xDFFF], throw URIError;
+ * @description: Complex tests;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xDC00; index <= 0xDFFF; index++) {
+ count++;
+ hex = decimalToHexString(index);
+ try {
+ encodeURI(String.fromCharCode(index, 0x0041));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.2_T1.js
new file mode 100644
index 000000000..2fe4d8a3f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.2_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A1.2_T1;
+ * @section: 15.1.3.3;
+ * @assertion: If string.charAt(k) in [0xD800 - 0xDBFF] and string.length = k + 1, throw URIError;
+ * @description: Complex tests;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xD800; index <= 0xDBFF; index++) {
+ count++;
+ hex = decimalToHexString(index);
+ try {
+ encodeURI(String.fromCharCode(index));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.2_T2.js
new file mode 100644
index 000000000..93484b815
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.2_T2.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A1.2_T2;
+ * @section: 15.1.3.3;
+ * @assertion: If string.charAt(k) in [0xD800 - 0xDBFF] and string.length = k + 1, throw URIError;
+ * @description: Complex tests;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xD800; index <= 0xDBFF; index++) {
+ count++;
+ hex = decimalToHexString(index);
+ try {
+ encodeURI(String.fromCharCode(0x0041, index));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.3_T1.js
new file mode 100644
index 000000000..e933a9b7a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A1.3_T1.js
@@ -0,0 +1,85 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A1.3_T1;
+ * @section: 15.1.3.3;
+ * @assertion: If string.charAt(k) in [0xD800 - 0xDBFF] and string.charAt(k+1) not in [0xDC00 - 0xDFFF], throw URIError;
+ * @description: Complex tests, string.charAt(k+1) in [0x0000, 0xD7FF, 0xD800, 0xDBFE, 0xDBFF, 0xE000, 0xFFFF];
+*/
+
+chars = [0x0000, 0xD7FF, 0xD800, 0xDBFE, 0xDBFF, 0xE000, 0xFFFF];
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+for (index = 0xD800; index <= 0xDBFF; index++) {
+ count++;
+ res = true;
+ for (indexC = 0; indexC < chars.length; indexC++) {
+ hex = decimalToHexString(index);
+ try {
+ encodeURI(String.fromCharCode(index, chars[indexC]));
+ } catch (e) {
+ if ((e instanceof URIError) === true) continue;
+ }
+ res = false;
+ }
+ if (res !== true) {
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ }
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.1_T1.js
new file mode 100644
index 000000000..77f76d078
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.1_T1.js
@@ -0,0 +1,86 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A2.1_T1;
+ * @section: 15.1.3.3;
+ * @assertion: If string.charAt(k) in [0x0000 - 0x007F]\[uriReserved, uriUnescaped, #], return 1 octet (00000000 0zzzzzzz -> 0zzzzzzz);
+ * @description: Complex tests, use RFC 3629;
+*/
+
+uriReserved = [";", "/", "?", ":", "@", "&", "=", "+", "$", ","];
+uriUnescaped = ["-", "_", ".", "!", "~", "*", "'", "(", ")", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+
+l :
+for (index = 0x0000; index <= 0x007F; index++) {
+ count++;
+ str = String.fromCharCode(index);
+ for (indexC = 0; indexC < uriReserved.length; indexC++) {
+ if (uriReserved[indexC] === str) continue l;
+ }
+ for (indexC = 0; indexC < uriUnescaped.length; indexC++) {
+ if (uriUnescaped[indexC] === str) continue l;
+ }
+ if ("#" === str) continue l;
+ try {
+ if (encodeURI(str).toUpperCase() === "%" + decimalToHexString(index).substring(2)) continue l;
+ } catch(e) {}
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.2_T1.js
new file mode 100644
index 000000000..319e5ae36
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.2_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A2.2_T1;
+ * @section: 15.1.3.3;
+ * @assertion: If string.charAt(k) in [0x0080 - 0x07FF], return 2 octets (00000yyy yyzzzzzz -> 110yyyyy 10zzzzzz);
+ * @description: Complex tests, use RFC 3629;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+l:
+for (index = 0x0080; index <= 0x07FF; index++) {
+ count++;
+ hex1 = decimalToHexString(0x0080 + (index & 0x003F)).substring(2);
+ hex2 = decimalToHexString(0x00C0 + (index & 0x07C0) / 0x0040).substring(2);
+ str = String.fromCharCode(index);
+ try {
+ if (encodeURI(str).toUpperCase() === "%" + hex2 + "%" + hex1) continue;
+ } catch(e) {}
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.3_T1.js
new file mode 100644
index 000000000..353ca1479
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.3_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A2.3_T1;
+ * @section: 15.1.3.3;
+ * @assertion: If string.charAt(k) in [0x0800 - 0xD7FF], return 3 octets (xxxxyyyy yyzzzzzz -> 1110xxxx 10yyyyyy 10zzzzzz);
+ * @description: Complex tests, use RFC 3629;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0x0800; index <= 0xD7FF; index++) {
+ count++;
+ hex1 = decimalToHexString(0x0080 + (index & 0x003F)).substring(2);
+ hex2 = decimalToHexString(0x0080 + (index & 0x0FC0) / 0x0040).substring(2);
+ hex3 = decimalToHexString(0x00E0 + (index & 0xF000) / 0x1000).substring(2);
+ str = String.fromCharCode(index);
+ try {
+ if (encodeURI(str).toUpperCase() === "%" + hex3 + "%" + hex2 + "%" + hex1) continue;
+ } catch(e) {}
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.4_T1.js
new file mode 100644
index 000000000..e8e10bbae
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.4_T1.js
@@ -0,0 +1,88 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A2.4_T1;
+ * @section: 15.1.3.3;
+ * @assertion: If string.charAt(k) in [0xD800 - 0xDBFF] and string.charAt(k+1) in [0xDC00 � 0xDFFF], return 4 octets (000wwwxx xxxxyyyy yyzzzzzz -> 11110www 10xxxxxx 10yyyyyy 10zzzzzz);
+ * @description: Complex tests, use RFC 3629, string.charAt(k+1) in [0xDC00, 0xDDFF, 0xDFFF];
+*/
+
+chars = [0xDC00, 0xDDFF, 0xDFFF];
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0xD800; index <= 0xDBFF; index++) {
+ res = true;
+ for (indexC = 0; indexC < chars.length; indexC++) {
+ index1 = (index - 0xD800) * 0x400 + (chars[indexC] - 0xDC00) + 0x10000;
+ hex1 = decimalToHexString(0x0080 + (index1 & 0x003F)).substring(2);
+ hex2 = decimalToHexString(0x0080 + (index1 & 0x0FC0) / 0x0040).substring(2);
+ hex3 = decimalToHexString(0x0080 + (index1 & 0x3F000) / 0x1000).substring(2);
+ hex4 = decimalToHexString(0x00F0 + (index1 & 0x1C0000) / 0x40000).substring(2);
+ str = String.fromCharCode(index, chars[indexC]);
+ try {
+ if (encodeURI(str).toUpperCase() !== "%" + hex4 + "%" + hex3 + "%" + hex2 + "%" + hex1) {
+ res = false;
+ }
+ } catch(e) {res = false}
+ }
+ if (res !== true) {
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.4_T2.js
new file mode 100644
index 000000000..d078b069b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.4_T2.js
@@ -0,0 +1,88 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A2.4_T2;
+ * @section: 15.1.3.3;
+ * @assertion: If string.charAt(k) in [0xD800 - 0xDBFF] and string.charAt(k+1) in [0xDC00 � 0xDFFF], return 4 octets (000wwwxx xxxxyyyy yyzzzzzz -> 11110www 10xxxxxx 10yyyyyy 10zzzzzz);
+ * @description: Complex tests, use RFC 3629, string.charAt(k) in [0xD800, 0xDBFF, 0xD9FF];
+*/
+
+chars = [0xD800, 0xDBFF, 0xD9FF];
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0xDC00; index <= 0xDFFF; index++) {
+ res = true;
+ for (indexC = 0; indexC < chars.length; indexC++) {
+ index1 = (chars[indexC] - 0xD800) * 0x400 + (index - 0xDC00) + 0x10000;
+ hex1 = decimalToHexString(0x0080 + (index1 & 0x003F)).substring(2);
+ hex2 = decimalToHexString(0x0080 + (index1 & 0x0FC0) / 0x0040).substring(2);
+ hex3 = decimalToHexString(0x0080 + (index1 & 0x3F000) / 0x1000).substring(2);
+ hex4 = decimalToHexString(0x00F0 + (index1 & 0x1C0000) / 0x40000).substring(2);
+ str = String.fromCharCode(chars[indexC], index);
+ try {
+ if (encodeURI(str).toUpperCase() !== "%" + hex4 + "%" + hex3 + "%" + hex2 + "%" + hex1) {
+ res = false;
+ }
+ } catch(e) {res = false}
+ }
+ if (res !== true) {
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+ }
+ count++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.5_T1.js
new file mode 100644
index 000000000..9ec1a2b2a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A2.5_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A2.5_T1;
+ * @section: 15.1.3.3;
+ * @assertion: If string.charAt(k) in [0xE000 - 0xFFFF], return 3 octets (xxxxyyyy yyzzzzzz -> 1110xxxx 10yyyyyy 10zzzzzz);
+ * @description: Complex tests, use RFC 3629;
+*/
+
+errorCount = 0;
+count = 0;
+var indexP;
+var indexO = 0;
+for (index = 0xE000; index <= 0xFFFF; index++) {
+ count++;
+ hex1 = decimalToHexString(0x0080 + (index & 0x003F)).substring(2);
+ hex2 = decimalToHexString(0x0080 + (index & 0x0FC0) / 0x0040).substring(2);
+ hex3 = decimalToHexString(0x00E0 + (index & 0xF000) / 0x1000).substring(2);
+ str = String.fromCharCode(index);
+ try {
+ if (encodeURI(str).toUpperCase() === "%" + hex3 + "%" + hex2 + "%" + hex1) continue;
+ } catch(e) {}
+ if (indexO === 0) {
+ indexO = index;
+ } else {
+ if ((index - indexP) !== 1) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ }
+ else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ indexO = index;
+ }
+ }
+ indexP = index;
+ errorCount++;
+}
+
+if (errorCount > 0) {
+ if ((indexP - indexO) !== 0) {
+ var hexP = decimalToHexString(indexP);
+ var hexO = decimalToHexString(indexO);
+ $ERROR('#' + hexO + '-' + hexP + ' ');
+ } else {
+ var hexP = decimalToHexString(indexP);
+ $ERROR('#' + hexP + ' ');
+ }
+ $ERROR('Total error: ' + errorCount + ' bad Unicode character in ' + count + ' ');
+}
+
+function decimalToHexString(n) {
+ n = Number(n);
+ var h = "";
+ for (var i = 3; i >= 0; i--) {
+ if (n >= Math.pow(16, i)) {
+ var t = Math.floor(n / Math.pow(16, i));
+ n -= t * Math.pow(16, i);
+ if ( t >= 10 ) {
+ if ( t == 10 ) { h += "A"; }
+ if ( t == 11 ) { h += "B"; }
+ if ( t == 12 ) { h += "C"; }
+ if ( t == 13 ) { h += "D"; }
+ if ( t == 14 ) { h += "E"; }
+ if ( t == 15 ) { h += "F"; }
+ } else {
+ h += String(t);
+ }
+ } else {
+ h += "0";
+ }
+ }
+ return h;
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.1_T1.js
new file mode 100644
index 000000000..b3119441f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.1_T1.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A3.1_T1;
+ * @section: 15.1.3.3;
+ * @assertion: unescapedURISet containing one instance of each character valid in uriReserved;
+ * @description: Complex tests;
+*/
+
+uriReserved = [";", "/", "?", ":", "@", "&", "=", "+", "$", ","];
+for (indexC = 0; indexC < uriReserved.length; indexC++) {
+ var str = uriReserved[indexC];
+ if (encodeURI(str) !== str) {
+ $ERROR('#' + (indexC + 1) + ': unescapedURISet containing' + str);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T1.js
new file mode 100644
index 000000000..f2d16c1e7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T1.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A3.2_T1;
+ * @section: 15.1.3.3;
+ * @assertion: unescapedURISet containing one instance of each character valid in uriUnescaped;
+ * @description: Complex tests, uriUnescaped :: uriAlpha;
+*/
+
+uriAlpha = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
+for (indexC = 0; indexC < uriAlpha.length; indexC++) {
+ var str = uriAlpha[indexC];
+ if (encodeURI(str) !== str) {
+ $ERROR('#' + (indexC + 1) + ': unescapedURISet containing ' + str);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T2.js
new file mode 100644
index 000000000..802b73d46
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T2.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A3.2_T2;
+ * @section: 15.1.3.3;
+ * @assertion: unescapedURISet containing one instance of each character valid in uriUnescaped;
+ * @description: Complex tests, uriUnescaped :: DecimalDigit;
+*/
+
+DecimalDigit = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
+for (indexC = 0; indexC < DecimalDigit.length; indexC++) {
+ var str = DecimalDigit[indexC];
+ if (encodeURI(str) !== str) {
+ $ERROR('#' + (indexC + 1) + ': unescapedURISet containing' + str);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T3.js
new file mode 100644
index 000000000..5c64bb272
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.2_T3.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A3.2_T3;
+ * @section: 15.1.3.3;
+ * @assertion: unescapedURISet containing one instance of each character valid in uriUnescaped;
+ * @description: Complex tests, uriUnescaped :: uriMark;
+*/
+
+uriMark = ["-", "_", ".", "!", "~", "*", "'", "(", ")"];
+for (indexC = 0; indexC < uriMark.length; indexC++) {
+ var str = uriMark[indexC];
+ if (encodeURI(str) !== str) {
+ $ERROR('#' + (indexC + 1) + ': unescapedURISet containing' + str);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.3_T1.js
new file mode 100644
index 000000000..8be71a67d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A3.3_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A3.3_T1;
+ * @section: 15.1.3.3;
+ * @assertion: unescapedURISet containing "#";
+ * @description: encodeURI("#") === "#";
+*/
+
+if (encodeURI("#") !== "#") {
+ $ERROR('#1: unescapedURISet containing "#"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T1.js
new file mode 100644
index 000000000..2f297e5a3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A4_T1;
+ * @section: 15.1.3.3;
+ * @assertion: URI tests;
+ * @description: Checking ENGLISH ALPHABET;
+*/
+
+//CHECK#1
+if (encodeURI("http://unipro.ru/0123456789") !== "http://unipro.ru/0123456789") {
+ $ERROR('#1: http://unipro.ru/0123456789');
+}
+
+//CHECK#2
+if (encodeURI("aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ") !== "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ") {
+ $ERROR('#2: aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ');
+}
+
+//CHECK#3
+if (encodeURI("aA_bB-cC.dD!eE~fF*gG'hH(iI)jJ;kK/lL?mM:nN@oO&pP=qQ+rR$sS,tT9uU8vV7wW6xX5yY4zZ") !== "aA_bB-cC.dD!eE~fF*gG'hH(iI)jJ;kK/lL?mM:nN@oO&pP=qQ+rR$sS,tT9uU8vV7wW6xX5yY4zZ") {
+ $ERROR('#3: ');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T2.js
new file mode 100644
index 000000000..4aec4212a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A4_T2;
+ * @section: 15.1.3.3;
+ * @assertion: URI tests;
+ * @description: Checking RUSSIAN ALPHABET;
+*/
+
+//CHECK#1
+if ((encodeURI("http://ru.wikipedia.org/wiki/Юникод") !== "http://ru.wikipedia.org/wiki/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4") && (encodeURI("http://ru.wikipedia.org/wiki/Юникод") !== "http://ru.wikipedia.org/wiki/" + "%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4".toLowerCase())) {
+ $ERROR('#1: http://ru.wikipedia.org/wiki/Юникод');
+}
+
+//CHECK#2
+if ((encodeURI("http://ru.wikipedia.org/wiki/Юникод#Ссылки") !== "http://ru.wikipedia.org/wiki/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4#%D0%A1%D1%81%D1%8B%D0%BB%D0%BA%D0%B8") && (encodeURI("http://ru.wikipedia.org/wiki/Юникод#Ссылки") !== "http://ru.wikipedia.org/wiki/" + "%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4#%D0%A1%D1%81%D1%8B%D0%BB%D0%BA%D0%B8".toLowerCase())) {
+ $ERROR('#2: http://ru.wikipedia.org/wiki/Юникод#Ссылки');
+}
+
+//CHECK#3
+if ((encodeURI("http://ru.wikipedia.org/wiki/Юникод#Версии Юникода") !== "http://ru.wikipedia.org/wiki/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4#%D0%92%D0%B5%D1%80%D1%81%D0%B8%D0%B8%20%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4%D0%B0") && ((encodeURI("http://ru.wikipedia.org/wiki/Юникод#Версии Юникода") !== "http://ru.wikipedia.org/wiki/" + "%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4#%D0%92%D0%B5%D1%80%D1%81%D0%B8%D0%B8%20%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4%D0%B0".toLowerCase()))) {
+ $ERROR('#3: http://ru.wikipedia.org/wiki/Юникод#Версии Юникода');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T3.js
new file mode 100644
index 000000000..c28ecf983
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A4_T3;
+ * @section: 15.1.3.3;
+ * @assertion: URI tests;
+ * @description: Checking URL with Line Terminator;
+*/
+
+//CHECK#1
+if ((encodeURI("http://unipro.ru/\nabout") !== "http://unipro.ru/%0Aabout") && encodeURI("http://unipro.ru/\nabout") !== "http://unipro.ru/%0aabout") {
+ $ERROR('#1: http://unipro.ru/\\nabout');
+}
+
+//CHECK#2
+if ((encodeURI("http://unipro.ru/\vabout") !== "http://unipro.ru/%0Babout") && encodeURI("http://unipro.ru/\vabout") !== "http://unipro.ru/%0babout") {
+ $ERROR('#2: http://unipro.ru/\\vabout');
+}
+
+//CHECK#3
+if ((encodeURI("http://unipro.ru/\fabout") !== "http://unipro.ru/%0Cabout") && encodeURI("http://unipro.ru/\fabout") !== "http://unipro.ru/%0cabout") {
+ $ERROR('#3: http://unipro.ru/\\fabout');
+}
+
+//CHECK#4
+if ((encodeURI("http://unipro.ru/\rabout") !== "http://unipro.ru/%0Dabout") && encodeURI("http://unipro.ru/\rabout") !== "http://unipro.ru/%0dabout") {
+ $ERROR('#4: http://unipro.ru/\\rabout');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A4_T4.js
new file mode 100644
index 000000000..eea709e8f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_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: S15.1.3.3_A4_T4;
+ * @section: 15.1.3.3;
+ * @assertion: URI tests;
+ * @description: Test some url;
+*/
+
+//CHECK#1
+if (encodeURI("") !== "") {
+ $ERROR('#1: ""');
+}
+
+//CHECK#2
+if (encodeURI("http://unipro.ru") !== "http://unipro.ru") {
+ $ERROR('#2: http://unipro.ru');
+}
+
+//CHECK#3
+if (encodeURI("http://www.google.ru/support/jobs/bin/static.py?page=why-ru.html&sid=liveandwork") !== "http://www.google.ru/support/jobs/bin/static.py?page=why-ru.html&sid=liveandwork") {
+ $ERROR('#3: http://www.google.ru/support/jobs/bin/static.py?page=why-ru.html&sid=liveandwork"');
+}
+
+//CHECK#4
+if (encodeURI("http://en.wikipedia.org/wiki/UTF-8#Description") !== "http://en.wikipedia.org/wiki/UTF-8#Description") {
+ $ERROR('#4: http://en.wikipedia.org/wiki/UTF-8#Description');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.1.js
new file mode 100644
index 000000000..a61d56844
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.1.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A5.1;
+ * @section: 15.1.3.3, 15.2.4.7, 12.6.4;
+ * @assertion: The length property of encodeURI has the attribute DontEnum;
+ * @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (encodeURI.propertyIsEnumerable('length') !== false) {
+ $ERROR('#1: encodeURI.propertyIsEnumerable(\'length\') === false. Actual: ' + (encodeURI.propertyIsEnumerable('length')));
+}
+
+//CHECK#2
+result = true;
+for (p in encodeURI){
+ if (p === "length") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in encodeURI) { if (p === "length") result = false; } result === true;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.2.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.2.js
new file mode 100644
index 000000000..11ac65b35
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.2.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: S15.1.3.3_A5.2;
+ * @section: 15.1.3.3, 15.2.4.5, 11.4.1;
+ * @assertion: The length property of encodeURI has the attribute DontDelete;
+ * @description: Checking use hasOwnProperty, delete;
+*/
+
+//CHECK#1
+if (encodeURI.hasOwnProperty('length') !== true) {
+ $FAIL('#1: encodeURI.hasOwnProperty(\'length\') === true. Actual: ' + (encodeURI.hasOwnProperty('length')));
+}
+
+delete encodeURI.length;
+
+//CHECK#2
+if (encodeURI.hasOwnProperty('length') !== true) {
+ $ERROR('#2: delete encodeURI.length; encodeURI.hasOwnProperty(\'length\') === true. Actual: ' + (encodeURI.hasOwnProperty('length')));
+}
+
+//CHECK#3
+if (encodeURI.length === undefined) {
+ $ERROR('#3: delete encodeURI.length; encodeURI.length !== undefined');
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.3.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.3.js
new file mode 100644
index 000000000..deed6373f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.3.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A5.3;
+ * @section: 15.1.3.3;
+ * @assertion: The length property of encodeURI has the attribute ReadOnly;
+ * @description: Checking if varying the length property fails;
+*/
+
+//CHECK#1
+x = encodeURI.length;
+encodeURI.length = Infinity;
+if (encodeURI.length !== x) {
+ $ERROR('#1: x = encodeURI.length; encodeURI.length = Infinity; encodeURI.length === x. Actual: ' + (encodeURI.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.4.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.4.js
new file mode 100644
index 000000000..601127fb2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A5.4;
+ * @section: 15.1.3.3;
+ * @assertion: The length property of encodeURI is 1;
+ * @description: encodeURI.length === 1;
+*/
+
+//CHECK#1
+if (encodeURI.length !== 1) {
+ $ERROR('#1: encodeURI.length === 1. Actual: ' + (encodeURI.length));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.5.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.5.js
new file mode 100644
index 000000000..ee1baf518
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.5.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A5.5;
+ * @section: 15.1.3.3, 15.2.4.7, 12.6.4;
+ * @assertion: The encodeURI property has the attribute DontEnum;
+ * @description: Checking use propertyIsEnumerable, for-in;
+*/
+
+
+//CHECK#1
+if (this.propertyIsEnumerable('encodeURI') !== false) {
+ $ERROR('#1: this.propertyIsEnumerable(\'encodeURI\') === false. Actual: ' + (this.propertyIsEnumerable('encodeURI')));
+}
+
+//CHECK#2
+result = true;
+for (p in this){
+ if (p === "encodeURI") {
+ result = false;
+ }
+}
+
+if (result !== true) {
+ $ERROR('#2: result = true; for (p in this) { if (p === "encodeURI") result = false; } result === true;');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.6.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.6.js
new file mode 100644
index 000000000..ae32b30bc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.6.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S15.1.3.3_A5.6;
+* @section: 15.1.3.3;
+* @assertion: The encodeURI property has not prototype property;
+* @description: Checking encodeURI.prototype;
+*/
+
+//CHECK#1
+if (encodeURI.prototype !== undefined) {
+ $ERROR('#1: encodeURI.prototype === undefined. Actual: ' + (encodeURI.prototype));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.7.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.7.js
new file mode 100644
index 000000000..0ab9b8c9f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A5.7.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: S15.1.3.3_A5.7;
+* @section: 15.1.3.3, 11.2.2;
+* @assertion: The encodeURI property can't be used as constructor;
+* @description: If property does not implement the internal [[Construct]] method, throw a TypeError exception;
+*/
+
+//CHECK#1
+
+try {
+ new encodeURI();
+ $ERROR('#1.1: new encodeURI() throw TypeError. Actual: ' + (new encodeURI()));
+} catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new encodeURI() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A6_T1.js
new file mode 100644
index 000000000..6cae662d6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/15_Native_ECMA_Script_Objects/15.1_The_Global_Object/15.1.3_URI_Handling_Function_Properties/15.1.3.3_encodeURI/S15.1.3.3_A6_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S15.1.3.3_A6_T1;
+ * @section: 15.1.3.3, 9.8, 8.6.2.6;
+ * @assertion: Operator use ToString;
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, String);
+*/
+
+//CHECK#1
+var object = {valueOf: function() {return "^"}};
+if (encodeURI(object) !== "%5Bobject%20Object%5D") {
+ $ERROR('#1: var object = {valueOf: function() {return "^"}}; encodeURI(object) === %5Bobject%20Object%5D. Actual: ' + (encodeURI(object)));
+}
+
+//CHECK#2
+var object = {valueOf: function() {return ""}, toString: function() {return "^"}};
+if (encodeURI(object) !== "%5E") {
+ $ERROR('#2: var object = {valueOf: function() {return ""}, toString: function() {return "^"}}; encodeURI(object) === "%5E". Actual: ' + (encodeURI(object)));
+}
+
+//CHECK#3
+var object = {valueOf: function() {return "^"}, toString: function() {return {}}};
+if (encodeURI(object) !== "%5E") {
+ $ERROR('#3: var object = {valueOf: function() {return "^"}, toString: function() {return {}}}; encodeURI(object) === "%5E". Actual: ' + (encodeURI(object)));
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return "^"}};
+ if (encodeURI(object) !== "%5E") {
+ $ERROR('#4.1: var object = {valueOf: function() {throw "error"}, toString: function() {return "^"}}; encodeURI(object) === "%5E". Actual: ' + (encodeURI(object)));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: var object = {valueOf: function() {throw "error"}, toString: function() {return "^"}}; encodeURI(object) not throw "error"');
+ } else {
+ $ERROR('#4.3: var object = {valueOf: function() {throw "error"}, toString: function() {return "^"}}; encodeURI(object) not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return "^"}};
+if (encodeURI(object) !== "%5E") {
+ $ERROR('#5: var object = {toString: function() {return "^"}}; encodeURI(object) === "%5E". Actual: ' + (encodeURI(object)));
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return "^"}}
+if (encodeURI(object) !== "%5E") {
+ $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return "^"}}; encodeURI(object) === "%5E". Actual: ' + (encodeURI(object)));
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {return "^"}, toString: function() {throw "error"}};
+ encodeURI(object);
+ $ERROR('#7.1: var object = {valueOf: function() {return "^"}, toString: function() {throw "error"}}; encodeURI(object) throw "error". Actual: ' + (encodeURI(object)));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {return "^"}, toString: function() {throw "error"}}; encodeURI(object) throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ encodeURI(object);
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; encodeURI(object) throw TypeError. Actual: ' + (encodeURI(object)));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; encodeURI(object) throw TypeError. Actual: ' + (e));
+ }
+}