js/src/tests/ecma_5/Object/15.2.3.14-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 //-----------------------------------------------------------------------------
michael@0 7 var BUGNUMBER = 307791;
michael@0 8 var summary = 'ES5 Object.keys(O)';
michael@0 9 var actual = '';
michael@0 10 var expect = '';
michael@0 11
michael@0 12 printBugNumber(BUGNUMBER);
michael@0 13 printStatus(summary);
michael@0 14
michael@0 15 function arraysEqual(a1, a2)
michael@0 16 {
michael@0 17 return a1.length === a2.length &&
michael@0 18 a1.every(function(v, i) { return v === a2[i]; });
michael@0 19 }
michael@0 20
michael@0 21 /**************
michael@0 22 * BEGIN TEST *
michael@0 23 **************/
michael@0 24
michael@0 25 assertEq(Object.keys.length, 1);
michael@0 26
michael@0 27 var o, keys;
michael@0 28
michael@0 29 o = { a: 3, b: 2 };
michael@0 30 keys = Object.keys(o);
michael@0 31 assertEq(arraysEqual(keys, ["a", "b"]), true,
michael@0 32 "" + keys);
michael@0 33
michael@0 34 o = { get a() { return 17; }, b: 2 };
michael@0 35 keys = Object.keys(o),
michael@0 36 assertEq(arraysEqual(keys, ["a", "b"]), true,
michael@0 37 "" + keys);
michael@0 38
michael@0 39 o = { __iterator__: function() { return Iterator({a: 2, b: 3}); } };
michael@0 40 keys = Object.keys(o);
michael@0 41 assertEq(arraysEqual(keys, ["__iterator__"]), true,
michael@0 42 "" + keys);
michael@0 43
michael@0 44 o = { a: 1, b: 2 };
michael@0 45 delete o.a;
michael@0 46 o.a = 3;
michael@0 47 keys = Object.keys(o);
michael@0 48 assertEq(arraysEqual(keys, ["b", "a"]), true,
michael@0 49 "" + keys);
michael@0 50
michael@0 51 o = [0, 1, 2];
michael@0 52 keys = Object.keys(o);
michael@0 53 assertEq(arraysEqual(keys, ["0", "1", "2"]), true,
michael@0 54 "" + keys);
michael@0 55
michael@0 56 o = /./.exec("abc");
michael@0 57 keys = Object.keys(o);
michael@0 58 assertEq(arraysEqual(keys, ["0", "index", "input"]), true,
michael@0 59 "" + keys);
michael@0 60
michael@0 61 o = { a: 1, b: 2, c: 3 };
michael@0 62 delete o.b;
michael@0 63 o.b = 5;
michael@0 64 keys = Object.keys(o);
michael@0 65 assertEq(arraysEqual(keys, ["a", "c", "b"]), true,
michael@0 66 "" + keys);
michael@0 67
michael@0 68 function f() { }
michael@0 69 f.prototype.p = 1;
michael@0 70 o = new f();
michael@0 71 o.g = 1;
michael@0 72 keys = Object.keys(o);
michael@0 73 assertEq(arraysEqual(keys, ["g"]), true,
michael@0 74 "" + keys);
michael@0 75
michael@0 76 if (typeof Namespace !== "undefined" && typeof QName !== "undefined")
michael@0 77 {
michael@0 78 var o2 = {};
michael@0 79 var qn = new QName(new Namespace("foo"), "v");
michael@0 80 o2.f = 1;
michael@0 81 o2[qn] = 3;
michael@0 82 o2.baz = 4;
michael@0 83 var keys2 = Object.keys(o2);
michael@0 84 assertEq(arraysEqual(keys2, ["f", "foo::v", "baz"]), true,
michael@0 85 "" + keys2);
michael@0 86 }
michael@0 87
michael@0 88 /******************************************************************************/
michael@0 89
michael@0 90 reportCompare(expect, actual, "Object.keys");
michael@0 91
michael@0 92 printStatus("All tests passed!");

mercurial