| /* |
| * 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!"); |