|
1 /* |
|
2 * Any copyright is dedicated to the Public Domain. |
|
3 * http://creativecommons.org/licenses/publicdomain/ |
|
4 */ |
|
5 |
|
6 var BUGNUMBER = 614608; |
|
7 var summary = "String.prototype.split tests"; |
|
8 |
|
9 print(BUGNUMBER + ": " + summary); |
|
10 |
|
11 /************** |
|
12 * BEGIN TEST * |
|
13 **************/ |
|
14 |
|
15 function assertEqArr(a1, a2) { |
|
16 assertEq(a1.length, a2.length); |
|
17 |
|
18 for(var i=0; i<a1.length; i++) { |
|
19 assertEq(a1[i], a2[i]); |
|
20 } |
|
21 } |
|
22 |
|
23 var order = ""; |
|
24 var o1 = { toString: function() { order += "b"; return "-"; }}; |
|
25 var o2 = { valueOf: function() { order += "a"; return 1; }}; |
|
26 var res = "xyz-xyz".split(o1, o2); |
|
27 |
|
28 assertEq(order, "ab"); |
|
29 assertEqArr(res, ["xyz"]); |
|
30 |
|
31 assertEqArr("".split(/.?/), []); |
|
32 assertEqArr("abc".split(/\b/), ["abc"]); |
|
33 |
|
34 assertEqArr("abc".split(/((()))./, 2), ["",""]); |
|
35 assertEqArr("abc".split(/((((()))))./, 9), ["","","","","","","","",""]); |
|
36 |
|
37 // from ES5 15.5.4.14 |
|
38 assertEqArr("ab".split(/a*?/), ["a", "b"]); |
|
39 assertEqArr("ab".split(/a*/), ["", "b"]); |
|
40 assertEqArr("A<B>bold</B>and<CODE>coded</CODE>".split(/<(\/)?([^<>]+)>/), |
|
41 ["A", undefined, "B", "bold", "/", "B", "and", undefined, |
|
42 "CODE", "coded", "/", "CODE", ""]); |
|
43 |
|
44 if (typeof reportCompare === "function") |
|
45 reportCompare(true, true); |
|
46 |
|
47 print("All tests passed!"); |