mirror of https://github.com/tc39/test262.git
44 lines
1.3 KiB
JavaScript
44 lines
1.3 KiB
JavaScript
// Copyright (C) 2013 the V8 project authors. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
/*---
|
|
es6id: 19.1.2.4
|
|
description: >
|
|
Symbol used as property for configurable data property definition
|
|
features: [Symbol]
|
|
---*/
|
|
var sym = Symbol();
|
|
var obj = {};
|
|
|
|
|
|
Object.defineProperty(obj, sym, {
|
|
value: 1,
|
|
configurable: true
|
|
});
|
|
|
|
assert.sameValue(sym in obj, true, "The result of `sym in obj` is `true`");
|
|
assert.sameValue(
|
|
Object.hasOwnProperty.call(obj, sym),
|
|
true,
|
|
"`Object.hasOwnProperty.call(obj, sym)` returns `true`"
|
|
);
|
|
|
|
var desc = Object.getOwnPropertyDescriptor(obj, sym);
|
|
|
|
assert.sameValue(desc.value, 1, "The value of `desc.value` is `1`");
|
|
assert.sameValue(desc.configurable, true, "The value of `desc.configurable` is `true`");
|
|
assert.sameValue(desc.writable, false, "The value of `desc.writable` is `false`");
|
|
assert.sameValue(desc.enumerable, false, "The value of `desc.enumerable` is `false`");
|
|
assert.sameValue(
|
|
Object.prototype.propertyIsEnumerable.call(obj, sym),
|
|
false,
|
|
"`Object.prototype.propertyIsEnumerable.call(obj, sym)` returns `false`"
|
|
);
|
|
|
|
assert.sameValue(delete obj[sym], true, "The result of `delete obj[sym]` is `true`");
|
|
|
|
assert.sameValue(
|
|
Object.getOwnPropertyDescriptor(obj, sym),
|
|
undefined,
|
|
"`Object.getOwnPropertyDescriptor(obj, sym)` returns `undefined`"
|
|
);
|