js/src/tests/ecma_5/Object/15.2.3.14-01.js

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 /*
     2  * Any copyright is dedicated to the Public Domain.
     3  * http://creativecommons.org/licenses/publicdomain/
     4  */
     6 //-----------------------------------------------------------------------------
     7 var BUGNUMBER = 307791;
     8 var summary = 'ES5 Object.keys(O)';
     9 var actual = '';
    10 var expect = '';
    12 printBugNumber(BUGNUMBER);
    13 printStatus(summary);
    15 function arraysEqual(a1, a2)
    16 {
    17   return a1.length === a2.length &&
    18          a1.every(function(v, i) { return v === a2[i]; });
    19 }
    21 /**************
    22  * BEGIN TEST *
    23  **************/
    25 assertEq(Object.keys.length, 1);
    27 var o, keys;
    29 o = { a: 3, b: 2 };
    30 keys = Object.keys(o);
    31 assertEq(arraysEqual(keys, ["a", "b"]), true,
    32          "" + keys);
    34 o = { get a() { return 17; }, b: 2 };
    35 keys = Object.keys(o),
    36 assertEq(arraysEqual(keys, ["a", "b"]), true,
    37          "" + keys);
    39 o = { __iterator__: function() { return Iterator({a: 2, b: 3}); } };
    40 keys = Object.keys(o);
    41 assertEq(arraysEqual(keys, ["__iterator__"]), true,
    42          "" + keys);
    44 o = { a: 1, b: 2 };
    45 delete o.a;
    46 o.a = 3;
    47 keys = Object.keys(o);
    48 assertEq(arraysEqual(keys, ["b", "a"]), true,
    49          "" + keys);
    51 o = [0, 1, 2];
    52 keys = Object.keys(o);
    53 assertEq(arraysEqual(keys, ["0", "1", "2"]), true,
    54          "" + keys);
    56 o = /./.exec("abc");
    57 keys = Object.keys(o);
    58 assertEq(arraysEqual(keys, ["0", "index", "input"]), true,
    59          "" + keys);
    61 o = { a: 1, b: 2, c: 3 };
    62 delete o.b;
    63 o.b = 5;
    64 keys = Object.keys(o);
    65 assertEq(arraysEqual(keys, ["a", "c", "b"]), true,
    66          "" + keys);
    68 function f() { }
    69 f.prototype.p = 1;
    70 o = new f();
    71 o.g = 1;
    72 keys = Object.keys(o);
    73 assertEq(arraysEqual(keys, ["g"]), true,
    74          "" + keys);
    76 if (typeof Namespace !== "undefined" && typeof QName !== "undefined")
    77 {
    78   var o2 = {};
    79   var qn = new QName(new Namespace("foo"), "v");
    80   o2.f = 1;
    81   o2[qn] = 3;
    82   o2.baz = 4;
    83   var keys2 = Object.keys(o2);
    84   assertEq(arraysEqual(keys2, ["f", "foo::v", "baz"]), true,
    85            "" + keys2);
    86 }
    88 /******************************************************************************/
    90 reportCompare(expect, actual, "Object.keys");
    92 printStatus("All tests passed!");

mercurial