2 * Any copyright is dedicated to the Public Domain.
3 * http://creativecommons.org/licenses/publicdomain/
6 //-----------------------------------------------------------------------------
7 var BUGNUMBER = 307791;
8 var summary = 'ES5 Object.keys(O)';
12 printBugNumber(BUGNUMBER);
15 function arraysEqual(a1, a2)
17 return a1.length === a2.length &&
18 a1.every(function(v, i) { return v === a2[i]; });
25 assertEq(Object.keys.length, 1);
30 keys = Object.keys(o);
31 assertEq(arraysEqual(keys, ["a", "b"]), true,
34 o = { get a() { return 17; }, b: 2 };
35 keys = Object.keys(o),
36 assertEq(arraysEqual(keys, ["a", "b"]), true,
39 o = { __iterator__: function() { return Iterator({a: 2, b: 3}); } };
40 keys = Object.keys(o);
41 assertEq(arraysEqual(keys, ["__iterator__"]), true,
47 keys = Object.keys(o);
48 assertEq(arraysEqual(keys, ["b", "a"]), true,
52 keys = Object.keys(o);
53 assertEq(arraysEqual(keys, ["0", "1", "2"]), true,
57 keys = Object.keys(o);
58 assertEq(arraysEqual(keys, ["0", "index", "input"]), true,
61 o = { a: 1, b: 2, c: 3 };
64 keys = Object.keys(o);
65 assertEq(arraysEqual(keys, ["a", "c", "b"]), true,
72 keys = Object.keys(o);
73 assertEq(arraysEqual(keys, ["g"]), true,
76 if (typeof Namespace !== "undefined" && typeof QName !== "undefined")
79 var qn = new QName(new Namespace("foo"), "v");
83 var keys2 = Object.keys(o2);
84 assertEq(arraysEqual(keys2, ["f", "foo::v", "baz"]), true,
88 /******************************************************************************/
90 reportCompare(expect, actual, "Object.keys");
92 printStatus("All tests passed!");