summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/language/statements/class/definition/numeric-property-names.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/test262/language/statements/class/definition/numeric-property-names.js')
-rw-r--r--js/src/tests/test262/language/statements/class/definition/numeric-property-names.js65
1 files changed, 65 insertions, 0 deletions
diff --git a/js/src/tests/test262/language/statements/class/definition/numeric-property-names.js b/js/src/tests/test262/language/statements/class/definition/numeric-property-names.js
new file mode 100644
index 0000000000..f974c11a88
--- /dev/null
+++ b/js/src/tests/test262/language/statements/class/definition/numeric-property-names.js
@@ -0,0 +1,65 @@
+// Copyright (C) 2014 the V8 project authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+es6id: 14.5
+description: >
+ class numeric property names
+---*/
+function assertMethodDescriptor(object, name) {
+ var desc = Object.getOwnPropertyDescriptor(object, name);
+ assert.sameValue(desc.configurable, true, "The value of `desc.configurable` is `true`");
+ assert.sameValue(desc.enumerable, false, "The value of `desc.enumerable` is `false`");
+ assert.sameValue(desc.writable, true, "The value of `desc.writable` is `true`");
+ assert.sameValue(typeof desc.value, 'function', "`typeof desc.value` is `'function'`");
+ assert.sameValue('prototype' in desc.value, false, "The result of `'prototype' in desc.value` is `false`");
+}
+
+function assertGetterDescriptor(object, name) {
+ var desc = Object.getOwnPropertyDescriptor(object, name);
+ assert.sameValue(desc.configurable, true, "The value of `desc.configurable` is `true`");
+ assert.sameValue(desc.enumerable, false, "The value of `desc.enumerable` is `false`");
+ assert.sameValue(typeof desc.get, 'function', "`typeof desc.get` is `'function'`");
+ assert.sameValue('prototype' in desc.get, false, "The result of `'prototype' in desc.get` is `false`");
+ assert.sameValue(desc.set, undefined, "The value of `desc.set` is `undefined`");
+}
+
+function assertSetterDescriptor(object, name) {
+ var desc = Object.getOwnPropertyDescriptor(object, name);
+ assert.sameValue(desc.configurable, true, "The value of `desc.configurable` is `true`");
+ assert.sameValue(desc.enumerable, false, "The value of `desc.enumerable` is `false`");
+ assert.sameValue(typeof desc.set, 'function', "`typeof desc.set` is `'function'`");
+ assert.sameValue('prototype' in desc.set, false, "The result of `'prototype' in desc.set` is `false`");
+ assert.sameValue(desc.get, undefined, "The value of `desc.get` is `undefined`");
+}
+
+class B {
+ 1() { return 1; }
+ get 2() { return 2; }
+ set 3(_) {}
+
+ static 4() { return 4; }
+ static get 5() { return 5; }
+ static set 6(_) {}
+}
+
+assertMethodDescriptor(B.prototype, '1');
+assertGetterDescriptor(B.prototype, '2');
+assertSetterDescriptor(B.prototype, '3');
+
+assertMethodDescriptor(B, '4');
+assertGetterDescriptor(B, '5');
+assertSetterDescriptor(B, '6');
+
+class C extends B {
+ 1() { return super[1](); }
+ get 2() { return super[2]; }
+ static 4() { return super[4](); }
+ static get 5() { return super[5]; }
+}
+
+assert.sameValue(new C()[1](), 1, "`new C()[1]()` returns `1`. Defined as `1() { return super[1](); }`");
+assert.sameValue(new C()[2], 2, "The value of `new C()[2]` is `2`. Defined as `get 2() { return super[2]; }`");
+assert.sameValue(C[4](), 4, "`C[4]()` returns `4`. Defined as `static 4() { return super[4](); }`");
+assert.sameValue(C[5], 5, "The value of `C[5]` is `5`. Defined as `static get 5() { return super[5]; }`");
+
+reportCompare(0, 0);