js/src/tests/ecma_5/String/split-01.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

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

mercurial