js/src/tests/ecma_5/Array/join-01.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/js/src/tests/ecma_5/Array/join-01.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,83 @@
     1.4 +/*
     1.5 + * Any copyright is dedicated to the Public Domain.
     1.6 + * http://creativecommons.org/licenses/publicdomain/
     1.7 + * Contributor:
     1.8 + *   Jeff Walden <jwalden+code@mit.edu>
     1.9 + */
    1.10 +
    1.11 +//-----------------------------------------------------------------------------
    1.12 +print("ES5: Array.prototype.join");
    1.13 +
    1.14 +/**************
    1.15 + * BEGIN TEST *
    1.16 + **************/
    1.17 +
    1.18 +var count;
    1.19 +var stringifyCounter = { toString: function() { count++; return "obj"; } };
    1.20 +
    1.21 +var arr = [1, 2, 3, 4, 5];
    1.22 +assertEq(arr.join(), "1,2,3,4,5");
    1.23 +assertEq(arr.join(","), "1,2,3,4,5");
    1.24 +assertEq(arr.join(undefined), "1,2,3,4,5");
    1.25 +assertEq(arr.join(4), "142434445");
    1.26 +assertEq(arr.join(""), "12345");
    1.27 +
    1.28 +count = 0;
    1.29 +assertEq(arr.join(stringifyCounter), "1obj2obj3obj4obj5");
    1.30 +assertEq(count, 1);
    1.31 +
    1.32 +var holey = [1, 2, , 4, 5];
    1.33 +assertEq(holey.join(), "1,2,,4,5");
    1.34 +assertEq(holey.join(","), "1,2,,4,5");
    1.35 +assertEq(holey.join(undefined), "1,2,,4,5");
    1.36 +assertEq(holey.join(4), "14244445");
    1.37 +
    1.38 +count = 0;
    1.39 +assertEq(holey.join(stringifyCounter), "1obj2objobj4obj5");
    1.40 +assertEq(count, 1);
    1.41 +
    1.42 +var nully = [1, 2, 3, null, 5];
    1.43 +assertEq(nully.join(), "1,2,3,,5");
    1.44 +assertEq(nully.join(","), "1,2,3,,5");
    1.45 +assertEq(nully.join(undefined), "1,2,3,,5");
    1.46 +assertEq(nully.join(4), "14243445");
    1.47 +
    1.48 +count = 0;
    1.49 +assertEq(nully.join(stringifyCounter), "1obj2obj3objobj5");
    1.50 +assertEq(count, 1);
    1.51 +
    1.52 +var undefiney = [1, undefined, 3, 4, 5];
    1.53 +assertEq(undefiney.join(), "1,,3,4,5");
    1.54 +assertEq(undefiney.join(","), "1,,3,4,5");
    1.55 +assertEq(undefiney.join(undefined), "1,,3,4,5");
    1.56 +assertEq(undefiney.join(4), "14434445");
    1.57 +
    1.58 +count = 0;
    1.59 +assertEq(undefiney.join(stringifyCounter), "1objobj3obj4obj5");
    1.60 +assertEq(count, 1);
    1.61 +
    1.62 +var log = '';
    1.63 +arr = {length: {valueOf: function () { log += "L"; return 2; }},
    1.64 +      0: "x", 1: "z"};
    1.65 +var sep = {toString: function () { log += "S"; return "y"; }};
    1.66 +assertEq(Array.prototype.join.call(arr, sep), "xyz");
    1.67 +assertEq(log, "LS");
    1.68 +
    1.69 +var funky =
    1.70 +  {
    1.71 +    toString: function()
    1.72 +    {
    1.73 +      Array.prototype[1] = "chorp";
    1.74 +      Object.prototype[3] = "fnord";
    1.75 +      return "funky";
    1.76 +    }
    1.77 +  };
    1.78 +var trailingHoles = [0, funky, /* 2 */, /* 3 */,];
    1.79 +assertEq(trailingHoles.join(""), "0funkyfnord");
    1.80 +
    1.81 +/******************************************************************************/
    1.82 +
    1.83 +if (typeof reportCompare === "function")
    1.84 +  reportCompare(true, true);
    1.85 +
    1.86 +print("Tests complete");

mercurial