1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/tests/ecma_5/Object/15.2.3.14-01.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,92 @@ 1.4 +/* 1.5 + * Any copyright is dedicated to the Public Domain. 1.6 + * http://creativecommons.org/licenses/publicdomain/ 1.7 + */ 1.8 + 1.9 +//----------------------------------------------------------------------------- 1.10 +var BUGNUMBER = 307791; 1.11 +var summary = 'ES5 Object.keys(O)'; 1.12 +var actual = ''; 1.13 +var expect = ''; 1.14 + 1.15 +printBugNumber(BUGNUMBER); 1.16 +printStatus(summary); 1.17 + 1.18 +function arraysEqual(a1, a2) 1.19 +{ 1.20 + return a1.length === a2.length && 1.21 + a1.every(function(v, i) { return v === a2[i]; }); 1.22 +} 1.23 + 1.24 +/************** 1.25 + * BEGIN TEST * 1.26 + **************/ 1.27 + 1.28 +assertEq(Object.keys.length, 1); 1.29 + 1.30 +var o, keys; 1.31 + 1.32 +o = { a: 3, b: 2 }; 1.33 +keys = Object.keys(o); 1.34 +assertEq(arraysEqual(keys, ["a", "b"]), true, 1.35 + "" + keys); 1.36 + 1.37 +o = { get a() { return 17; }, b: 2 }; 1.38 +keys = Object.keys(o), 1.39 +assertEq(arraysEqual(keys, ["a", "b"]), true, 1.40 + "" + keys); 1.41 + 1.42 +o = { __iterator__: function() { return Iterator({a: 2, b: 3}); } }; 1.43 +keys = Object.keys(o); 1.44 +assertEq(arraysEqual(keys, ["__iterator__"]), true, 1.45 + "" + keys); 1.46 + 1.47 +o = { a: 1, b: 2 }; 1.48 +delete o.a; 1.49 +o.a = 3; 1.50 +keys = Object.keys(o); 1.51 +assertEq(arraysEqual(keys, ["b", "a"]), true, 1.52 + "" + keys); 1.53 + 1.54 +o = [0, 1, 2]; 1.55 +keys = Object.keys(o); 1.56 +assertEq(arraysEqual(keys, ["0", "1", "2"]), true, 1.57 + "" + keys); 1.58 + 1.59 +o = /./.exec("abc"); 1.60 +keys = Object.keys(o); 1.61 +assertEq(arraysEqual(keys, ["0", "index", "input"]), true, 1.62 + "" + keys); 1.63 + 1.64 +o = { a: 1, b: 2, c: 3 }; 1.65 +delete o.b; 1.66 +o.b = 5; 1.67 +keys = Object.keys(o); 1.68 +assertEq(arraysEqual(keys, ["a", "c", "b"]), true, 1.69 + "" + keys); 1.70 + 1.71 +function f() { } 1.72 +f.prototype.p = 1; 1.73 +o = new f(); 1.74 +o.g = 1; 1.75 +keys = Object.keys(o); 1.76 +assertEq(arraysEqual(keys, ["g"]), true, 1.77 + "" + keys); 1.78 + 1.79 +if (typeof Namespace !== "undefined" && typeof QName !== "undefined") 1.80 +{ 1.81 + var o2 = {}; 1.82 + var qn = new QName(new Namespace("foo"), "v"); 1.83 + o2.f = 1; 1.84 + o2[qn] = 3; 1.85 + o2.baz = 4; 1.86 + var keys2 = Object.keys(o2); 1.87 + assertEq(arraysEqual(keys2, ["f", "foo::v", "baz"]), true, 1.88 + "" + keys2); 1.89 +} 1.90 + 1.91 +/******************************************************************************/ 1.92 + 1.93 +reportCompare(expect, actual, "Object.keys"); 1.94 + 1.95 +printStatus("All tests passed!");