js/src/tests/ecma_5/Array/join-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.

     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");

mercurial