diff options
Diffstat (limited to 'js/src/tests/test262/built-ins/Object/defineProperty/15.2.3.6-4-5.js')
-rw-r--r-- | js/src/tests/test262/built-ins/Object/defineProperty/15.2.3.6-4-5.js | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/js/src/tests/test262/built-ins/Object/defineProperty/15.2.3.6-4-5.js b/js/src/tests/test262/built-ins/Object/defineProperty/15.2.3.6-4-5.js new file mode 100644 index 0000000000..e496ca8ccb --- /dev/null +++ b/js/src/tests/test262/built-ins/Object/defineProperty/15.2.3.6-4-5.js @@ -0,0 +1,47 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Step 4 of defineProperty calls the [[DefineOwnProperty]] internal method + of O to define the property. Step 6 of [[DefineOwnProperty]] returns if + every field of desc also occurs in current and every field in desc has + the same value as current. +es5id: 15.2.3.6-4-5 +description: > + Object.defineProperty is no-op if current and desc are the same + data desc +---*/ + +function sameDataDescriptorValues(d1, d2) { + return (d1.value === d2.value && + d1.enumerable === d2.enumerable && + d1.writable === d2.writable && + d1.configurable === d2.configurable); +} + +var o = {}; + +// create a data valued property with the following attributes: +// value: 101, enumerable: true, writable: true, configurable: true +o["foo"] = 101; + +// query for, and save, the desc. A subsequent call to defineProperty +// with the same desc should not disturb the property definition. +var d1 = Object.getOwnPropertyDescriptor(o, "foo"); + +// now, redefine the property with the same descriptor +// the property defintion should not get disturbed. +var desc = { + value: 101, + enumerable: true, + writable: true, + configurable: true +}; +Object.defineProperty(o, "foo", desc); + +var d2 = Object.getOwnPropertyDescriptor(o, "foo"); + +assert.sameValue(sameDataDescriptorValues(d1, d2), true, 'sameDataDescriptorValues(d1, d2)'); + +reportCompare(0, 0); |