1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/tests/ecma_5/Object/15.2.3.5-01.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,60 @@ 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 = 492840; 1.11 +var summary = 'ES5 Object.create(O [, Properties])'; 1.12 + 1.13 +print(BUGNUMBER + ": " + summary); 1.14 + 1.15 +/************** 1.16 + * BEGIN TEST * 1.17 + **************/ 1.18 + 1.19 +assertEq("create" in Object, true); 1.20 +assertEq(Object.create.length, 2); 1.21 + 1.22 +var o, desc, props, proto; 1.23 + 1.24 +o = Object.create(null); 1.25 +assertEq(Object.getPrototypeOf(o), null, "bad null-proto"); 1.26 + 1.27 +o = Object.create(null, { a: { value: 17, enumerable: false } }); 1.28 +assertEq(Object.getPrototypeOf(o), null, "bad null-proto"); 1.29 +assertEq("a" in o, true); 1.30 +desc = Object.getOwnPropertyDescriptor(o, "a"); 1.31 +assertEq(desc !== undefined, true, "no descriptor?"); 1.32 +assertEq(desc.value, 17); 1.33 +assertEq(desc.enumerable, false); 1.34 +assertEq(desc.configurable, false); 1.35 +assertEq(desc.writable, false); 1.36 + 1.37 +props = Object.create({ bar: 15 }); 1.38 +Object.defineProperty(props, "foo", { enumerable: false, value: 42 }); 1.39 +proto = { baz: 12 }; 1.40 +o = Object.create(proto, props); 1.41 +assertEq(Object.getPrototypeOf(o), proto); 1.42 +assertEq(Object.getOwnPropertyDescriptor(o, "foo"), undefined); 1.43 +assertEq("foo" in o, false); 1.44 +assertEq(Object.getOwnPropertyDescriptor(o, "bar"), undefined); 1.45 +assertEq("bar" in o, false); 1.46 +assertEq(Object.getOwnPropertyDescriptor(o, "baz"), undefined); 1.47 +assertEq(o.baz, 12); 1.48 +assertEq(o.hasOwnProperty("baz"), false); 1.49 + 1.50 +try { 1.51 + var actual = 1.52 + Object.create(Object.create({}, 1.53 + { boom: { get: function() { return "base"; }}}), 1.54 + { boom: { get: function() { return "overridden"; }}}).boom 1.55 +} catch (e) { 1.56 +} 1.57 +assertEq(actual, "overridden"); 1.58 + 1.59 +/******************************************************************************/ 1.60 + 1.61 +reportCompare(true, true); 1.62 + 1.63 +print("All tests passed!");