Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 /*
2 * Any copyright is dedicated to the Public Domain.
3 * http://creativecommons.org/licenses/publicdomain/
4 * Contributor:
5 * Jeff Walden <jwalden+code@mit.edu>
6 */
8 //-----------------------------------------------------------------------------
9 print("ES5: Array.prototype.join");
11 /**************
12 * BEGIN TEST *
13 **************/
15 var count;
16 var stringifyCounter = { toString: function() { count++; return "obj"; } };
18 var arr = [1, 2, 3, 4, 5];
19 assertEq(arr.join(), "1,2,3,4,5");
20 assertEq(arr.join(","), "1,2,3,4,5");
21 assertEq(arr.join(undefined), "1,2,3,4,5");
22 assertEq(arr.join(4), "142434445");
23 assertEq(arr.join(""), "12345");
25 count = 0;
26 assertEq(arr.join(stringifyCounter), "1obj2obj3obj4obj5");
27 assertEq(count, 1);
29 var holey = [1, 2, , 4, 5];
30 assertEq(holey.join(), "1,2,,4,5");
31 assertEq(holey.join(","), "1,2,,4,5");
32 assertEq(holey.join(undefined), "1,2,,4,5");
33 assertEq(holey.join(4), "14244445");
35 count = 0;
36 assertEq(holey.join(stringifyCounter), "1obj2objobj4obj5");
37 assertEq(count, 1);
39 var nully = [1, 2, 3, null, 5];
40 assertEq(nully.join(), "1,2,3,,5");
41 assertEq(nully.join(","), "1,2,3,,5");
42 assertEq(nully.join(undefined), "1,2,3,,5");
43 assertEq(nully.join(4), "14243445");
45 count = 0;
46 assertEq(nully.join(stringifyCounter), "1obj2obj3objobj5");
47 assertEq(count, 1);
49 var undefiney = [1, undefined, 3, 4, 5];
50 assertEq(undefiney.join(), "1,,3,4,5");
51 assertEq(undefiney.join(","), "1,,3,4,5");
52 assertEq(undefiney.join(undefined), "1,,3,4,5");
53 assertEq(undefiney.join(4), "14434445");
55 count = 0;
56 assertEq(undefiney.join(stringifyCounter), "1objobj3obj4obj5");
57 assertEq(count, 1);
59 var log = '';
60 arr = {length: {valueOf: function () { log += "L"; return 2; }},
61 0: "x", 1: "z"};
62 var sep = {toString: function () { log += "S"; return "y"; }};
63 assertEq(Array.prototype.join.call(arr, sep), "xyz");
64 assertEq(log, "LS");
66 var funky =
67 {
68 toString: function()
69 {
70 Array.prototype[1] = "chorp";
71 Object.prototype[3] = "fnord";
72 return "funky";
73 }
74 };
75 var trailingHoles = [0, funky, /* 2 */, /* 3 */,];
76 assertEq(trailingHoles.join(""), "0funkyfnord");
78 /******************************************************************************/
80 if (typeof reportCompare === "function")
81 reportCompare(true, true);
83 print("Tests complete");