| Index: test/mjsunit/harmony/object-get-own-property-descriptors.js
|
| diff --git a/test/mjsunit/harmony/object-get-own-property-descriptors.js b/test/mjsunit/harmony/object-get-own-property-descriptors.js
|
| deleted file mode 100644
|
| index c71b20a226249dbbbe841387565ae9bd5748933f..0000000000000000000000000000000000000000
|
| --- a/test/mjsunit/harmony/object-get-own-property-descriptors.js
|
| +++ /dev/null
|
| @@ -1,235 +0,0 @@
|
| -// Copyright 2016 the V8 project authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -// Flags: --harmony-object-own-property-descriptors
|
| -// Flags: --allow-natives-syntax
|
| -
|
| -function DataDescriptor(value) {
|
| - return { "enumerable": true, "configurable": true, "writable": true, value };
|
| -}
|
| -
|
| -
|
| -function TestMeta() {
|
| - assertEquals(1, Object.getOwnPropertyDescriptors.length);
|
| - assertEquals(Function.prototype,
|
| - Object.getPrototypeOf(Object.getOwnPropertyDescriptors));
|
| - assertEquals(
|
| - 'getOwnPropertyDescriptors', Object.getOwnPropertyDescriptors.name);
|
| - var desc = Reflect.getOwnPropertyDescriptor(
|
| - Object, 'getOwnPropertyDescriptors');
|
| - assertFalse(desc.enumerable);
|
| - assertTrue(desc.writable);
|
| - assertTrue(desc.configurable);
|
| -}
|
| -TestMeta();
|
| -
|
| -
|
| -function TestToObject() {
|
| - assertThrows(function() {
|
| - Object.getOwnPropertyDescriptors(null);
|
| - }, TypeError);
|
| -
|
| - assertThrows(function() {
|
| - Object.getOwnPropertyDescriptors(undefined);
|
| - }, TypeError);
|
| -
|
| - assertThrows(function() {
|
| - Object.getOwnPropertyDescriptors();
|
| - }, TypeError);
|
| -}
|
| -TestToObject();
|
| -
|
| -
|
| -function TestPrototypeProperties() {
|
| - function F() {};
|
| - F.prototype.a = "A";
|
| - F.prototype.b = "B";
|
| -
|
| - var F2 = new F();
|
| - Object.defineProperties(F2, {
|
| - "b": {
|
| - enumerable: false,
|
| - configurable: true,
|
| - writable: false,
|
| - value: "Shadowed 'B'"
|
| - },
|
| - "c": {
|
| - enumerable: false,
|
| - configurable: true,
|
| - writable: false,
|
| - value: "C"
|
| - }
|
| - });
|
| -
|
| - assertEquals({
|
| - "b": {
|
| - enumerable: false,
|
| - configurable: true,
|
| - writable: false,
|
| - value: "Shadowed 'B'"
|
| - },
|
| - "c": {
|
| - enumerable: false,
|
| - configurable: true,
|
| - writable: false,
|
| - value: "C"
|
| - }
|
| - }, Object.getOwnPropertyDescriptors(F2));
|
| -}
|
| -TestPrototypeProperties();
|
| -
|
| -
|
| -function TestPrototypeProperties() {
|
| - function F() {};
|
| - F.prototype.a = "A";
|
| - F.prototype.b = "B";
|
| -
|
| - var F2 = new F();
|
| - Object.defineProperties(F2, {
|
| - "b": {
|
| - enumerable: false,
|
| - configurable: true,
|
| - writable: false,
|
| - value: "Shadowed 'B'"
|
| - },
|
| - "c": {
|
| - enumerable: false,
|
| - configurable: true,
|
| - writable: false,
|
| - value: "C"
|
| - }
|
| - });
|
| -
|
| - assertEquals({
|
| - "b": {
|
| - enumerable: false,
|
| - configurable: true,
|
| - writable: false,
|
| - value: "Shadowed 'B'"
|
| - },
|
| - "c": {
|
| - enumerable: false,
|
| - configurable: true,
|
| - writable: false,
|
| - value: "C"
|
| - }
|
| - }, Object.getOwnPropertyDescriptors(F2));
|
| -}
|
| -TestPrototypeProperties();
|
| -
|
| -
|
| -function TestTypeFilteringAndOrder() {
|
| - var log = [];
|
| - var sym = Symbol("foo");
|
| - var psym = %CreatePrivateSymbol("private");
|
| - var O = {
|
| - 0: 0,
|
| - [sym]: 3,
|
| - "a": 2,
|
| - [psym]: 4,
|
| - 1: 1,
|
| - };
|
| - var P = new Proxy(O, {
|
| - ownKeys(target) {
|
| - log.push("ownKeys()");
|
| - return Reflect.ownKeys(target);
|
| - },
|
| - getOwnPropertyDescriptor(target, name) {
|
| - log.push(`getOwnPropertyDescriptor(${String(name)})`);
|
| - return Reflect.getOwnPropertyDescriptor(target, name);
|
| - },
|
| - get(target, name) { assertUnreachable(); },
|
| - set(target, name, value) { assertUnreachable(); },
|
| - deleteProperty(target, name) { assertUnreachable(); },
|
| - defineProperty(target, name, desc) { assertUnreachable(); }
|
| - });
|
| -
|
| - var result1 = Object.getOwnPropertyDescriptors(O);
|
| - assertEquals({
|
| - 0: DataDescriptor(0),
|
| - 1: DataDescriptor(1),
|
| - "a": DataDescriptor(2),
|
| - [sym]: DataDescriptor(3)
|
| - }, result1);
|
| -
|
| - var result2 = Object.getOwnPropertyDescriptors(P);
|
| - assertEquals([
|
| - "ownKeys()",
|
| - "getOwnPropertyDescriptor(0)",
|
| - "getOwnPropertyDescriptor(1)",
|
| - "getOwnPropertyDescriptor(a)",
|
| - "getOwnPropertyDescriptor(Symbol(foo))"
|
| - ], log);
|
| - assertEquals({
|
| - 0: DataDescriptor(0),
|
| - 1: DataDescriptor(1),
|
| - "a": DataDescriptor(2),
|
| - [sym]: DataDescriptor(3)
|
| - }, result2);
|
| -}
|
| -TestTypeFilteringAndOrder();
|
| -
|
| -
|
| -function TestDuplicateKeys() {
|
| - var i = 0;
|
| - var log = [];
|
| - var P = new Proxy({}, {
|
| - ownKeys() {
|
| - log.push(`ownKeys()`);
|
| - return ["A", "A"];
|
| - },
|
| - getOwnPropertyDescriptor(t, name) {
|
| - log.push(`getOwnPropertyDescriptor(${name})`);
|
| - if (i++) return;
|
| - return {
|
| - configurable: true,
|
| - writable: false,
|
| - value: "VALUE"
|
| - };
|
| - },
|
| - get(target, name) { assertUnreachable(); },
|
| - set(target, name, value) { assertUnreachable(); },
|
| - deleteProperty(target, name) { assertUnreachable(); },
|
| - defineProperty(target, name, desc) { assertUnreachable(); }
|
| - });
|
| -
|
| - var result = Object.getOwnPropertyDescriptors(P);
|
| - assertEquals({
|
| - "A": {
|
| - "value": "VALUE",
|
| - "writable": false,
|
| - "enumerable": false,
|
| - "configurable": true
|
| - }
|
| - }, result);
|
| - assertTrue(result.hasOwnProperty("A"));
|
| - assertEquals([
|
| - "ownKeys()",
|
| - "getOwnPropertyDescriptor(A)",
|
| - "getOwnPropertyDescriptor(A)"
|
| - ], log);
|
| -}
|
| -TestDuplicateKeys();
|
| -
|
| -function TestFakeProperty() {
|
| - var log = [];
|
| - var P = new Proxy({}, {
|
| - ownKeys() {
|
| - log.push(`ownKeys()`);
|
| - return ["fakeProperty"];
|
| - },
|
| - getOwnPropertyDescriptor(target, name) {
|
| - log.push(`getOwnPropertyDescriptor(${name})`);
|
| - return;
|
| - }
|
| - });
|
| - var result = Object.getOwnPropertyDescriptors(P);
|
| - assertEquals({}, result);
|
| - assertFalse(result.hasOwnProperty("fakeProperty"));
|
| - assertEquals([
|
| - "ownKeys()",
|
| - "getOwnPropertyDescriptor(fakeProperty)"
|
| - ], log);
|
| -}
|
| -TestFakeProperty();
|
|
|