summaryrefslogtreecommitdiffstats
path: root/js/src/tests/ecma_5/String/split-01.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/ecma_5/String/split-01.js')
-rw-r--r--js/src/tests/ecma_5/String/split-01.js47
1 files changed, 47 insertions, 0 deletions
diff --git a/js/src/tests/ecma_5/String/split-01.js b/js/src/tests/ecma_5/String/split-01.js
new file mode 100644
index 000000000..3eda3b148
--- /dev/null
+++ b/js/src/tests/ecma_5/String/split-01.js
@@ -0,0 +1,47 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var BUGNUMBER = 614608;
+var summary = "String.prototype.split tests";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+function assertEqArr(a1, a2) {
+ assertEq(a1.length, a2.length);
+
+ for(var i=0; i<a1.length; i++) {
+ assertEq(a1[i], a2[i]);
+ }
+}
+
+var order = "";
+var o1 = { toString: function() { order += "b"; return "-"; }};
+var o2 = { valueOf: function() { order += "a"; return 1; }};
+var res = "xyz-xyz".split(o1, o2);
+
+assertEq(order, "ab");
+assertEqArr(res, ["xyz"]);
+
+assertEqArr("".split(/.?/), []);
+assertEqArr("abc".split(/\b/), ["abc"]);
+
+assertEqArr("abc".split(/((()))./, 2), ["",""]);
+assertEqArr("abc".split(/((((()))))./, 9), ["","","","","","","","",""]);
+
+// from ES5 15.5.4.14
+assertEqArr("ab".split(/a*?/), ["a", "b"]);
+assertEqArr("ab".split(/a*/), ["", "b"]);
+assertEqArr("A<B>bold</B>and<CODE>coded</CODE>".split(/<(\/)?([^<>]+)>/),
+ ["A", undefined, "B", "bold", "/", "B", "and", undefined,
+ "CODE", "coded", "/", "CODE", ""]);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("All tests passed!");