From 6646d3e94ff783e9442344c765cb2f5dc79b1aa5 Mon Sep 17 00:00:00 2001 From: Mike Pennisi Date: Thu, 9 Jul 2015 15:36:14 -0400 Subject: [PATCH] Re-organize class tests The `test/language/class/` directory contains a small subset of Test262's tests for ES2015 classes. The majority of tests for classes are organized within `test/language/statements/class/`. - Move the tests that rely on the ClassDeclaration syntactic form from `test/language/class/` to `test/language/statements/class/`. - Move the test that relies on the ClassExpression syntactic form from `test/language/class/` to `test/language/expressions/class/`. --- .../class/restricted-properties.js} | 18 +++++--- .../class/definition/methods-gen-no-yield.js} | 0 .../class/definition/methods-gen-return.js} | 0 ...ethods-gen-yield-as-binding-identifier.js} | 0 ...thods-gen-yield-as-expression-with-rhs.js} | 0 ...ds-gen-yield-as-expression-without-rhs.js} | 0 ...function-expression-binding-identifier.js} | 0 ...as-generator-method-binding-identifier.js} | 0 ...yield-as-identifier-in-nested-function.js} | 0 .../definition/methods-gen-yield-as-label.js} | 0 ...ods-gen-yield-as-literal-property-name.js} | 0 ...ods-gen-yield-as-logical-or-expression.js} | 0 .../methods-gen-yield-as-parameter.js} | 0 .../methods-gen-yield-as-property-name.js} | 0 .../methods-gen-yield-as-statement.js} | 0 .../methods-gen-yield-as-yield-operand.js} | 0 .../definition/methods-gen-yield-newline.js} | 0 .../methods-gen-yield-star-after-newline.js} | 0 .../methods-gen-yield-star-before-newline.js} | 0 .../methods-gen-yield-weak-binding.js} | 0 .../methods-restricted-properties.js} | 43 ++++++++++++++----- .../class/restricted-properties.js} | 22 +++++++--- 22 files changed, 61 insertions(+), 22 deletions(-) rename test/language/{class/definition/ClassExpression_restricted-properties.js => expressions/class/restricted-properties.js} (60%) rename test/language/{class/method-definition/generator-no-yield.js => statements/class/definition/methods-gen-no-yield.js} (100%) rename test/language/{class/method-definition/generator-return.js => statements/class/definition/methods-gen-return.js} (100%) rename test/language/{class/method-definition/yield-as-binding-identifier.js => statements/class/definition/methods-gen-yield-as-binding-identifier.js} (100%) rename test/language/{class/method-definition/yield-as-expression-with-rhs.js => statements/class/definition/methods-gen-yield-as-expression-with-rhs.js} (100%) rename test/language/{class/method-definition/yield-as-expression-without-rhs.js => statements/class/definition/methods-gen-yield-as-expression-without-rhs.js} (100%) rename test/language/{class/method-definition/yield-as-function-expression-binding-identifier.js => statements/class/definition/methods-gen-yield-as-function-expression-binding-identifier.js} (100%) rename test/language/{class/method-definition/yield-as-generator-method-binding-identifier.js => statements/class/definition/methods-gen-yield-as-generator-method-binding-identifier.js} (100%) rename test/language/{class/method-definition/yield-as-identifier-in-nested-function.js => statements/class/definition/methods-gen-yield-as-identifier-in-nested-function.js} (100%) rename test/language/{class/method-definition/yield-as-label.js => statements/class/definition/methods-gen-yield-as-label.js} (100%) rename test/language/{class/method-definition/yield-as-literal-property-name.js => statements/class/definition/methods-gen-yield-as-literal-property-name.js} (100%) rename test/language/{class/method-definition/yield-as-logical-or-expression.js => statements/class/definition/methods-gen-yield-as-logical-or-expression.js} (100%) rename test/language/{class/method-definition/yield-as-parameter.js => statements/class/definition/methods-gen-yield-as-parameter.js} (100%) rename test/language/{class/method-definition/yield-as-property-name.js => statements/class/definition/methods-gen-yield-as-property-name.js} (100%) rename test/language/{class/method-definition/yield-as-statement.js => statements/class/definition/methods-gen-yield-as-statement.js} (100%) rename test/language/{class/method-definition/yield-as-yield-operand.js => statements/class/definition/methods-gen-yield-as-yield-operand.js} (100%) rename test/language/{class/method-definition/yield-newline.js => statements/class/definition/methods-gen-yield-newline.js} (100%) rename test/language/{class/method-definition/yield-star-after-newline.js => statements/class/definition/methods-gen-yield-star-after-newline.js} (100%) rename test/language/{class/method-definition/yield-star-before-newline.js => statements/class/definition/methods-gen-yield-star-before-newline.js} (100%) rename test/language/{class/method-definition/yield-weak-binding.js => statements/class/definition/methods-gen-yield-weak-binding.js} (100%) rename test/language/{class/definition/ClassMethod_restricted-properties.js => statements/class/definition/methods-restricted-properties.js} (57%) rename test/language/{class/definition/ClassDeclaration_restricted-properties.js => statements/class/restricted-properties.js} (55%) diff --git a/test/language/class/definition/ClassExpression_restricted-properties.js b/test/language/expressions/class/restricted-properties.js similarity index 60% rename from test/language/class/definition/ClassExpression_restricted-properties.js rename to test/language/expressions/class/restricted-properties.js index eeddff6353..a9805c5dff 100644 --- a/test/language/class/definition/ClassExpression_restricted-properties.js +++ b/test/language/expressions/class/restricted-properties.js @@ -1,7 +1,7 @@ // Copyright (C) 2015 Caitlin Potter. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. -/*--- +/*--- description: > Functions created using ClassExpression syntactic form do not have own properties "caller" or "arguments", but inherit them from @@ -11,8 +11,12 @@ es6id: 16.1 var BaseClass = class {}; -assert.sameValue(BaseClass.hasOwnProperty('caller'), false, 'Functions created using ClassExpression syntactic form do not have own property "caller"'); -assert.sameValue(BaseClass.hasOwnProperty('arguments'), false, 'Functions created using ClassExpression syntactic form do not have own property "arguments"'); +assert.sameValue( + BaseClass.hasOwnProperty('caller'), false, 'No "caller" own property' +); +assert.sameValue( + BaseClass.hasOwnProperty('arguments'), false, 'No "arguments" own property' +); assert.throws(TypeError, function() { return BaseClass.caller; @@ -32,8 +36,12 @@ assert.throws(TypeError, function() { var SubClass = class extends BaseClass {}; -assert.sameValue(SubClass.hasOwnProperty('caller'), false, 'Functions created using ClassExpression syntactic form do not have own property "caller"'); -assert.sameValue(SubClass.hasOwnProperty('arguments'), false, 'Functions created using ClassExpression syntactic form do not have own property "arguments"'); +assert.sameValue( + SubClass.hasOwnProperty('caller'), false, 'No "caller" own property' +); +assert.sameValue( + SubClass.hasOwnProperty('arguments'), false, 'No "arguments" own property' +); assert.throws(TypeError, function() { return SubClass.caller; diff --git a/test/language/class/method-definition/generator-no-yield.js b/test/language/statements/class/definition/methods-gen-no-yield.js similarity index 100% rename from test/language/class/method-definition/generator-no-yield.js rename to test/language/statements/class/definition/methods-gen-no-yield.js diff --git a/test/language/class/method-definition/generator-return.js b/test/language/statements/class/definition/methods-gen-return.js similarity index 100% rename from test/language/class/method-definition/generator-return.js rename to test/language/statements/class/definition/methods-gen-return.js diff --git a/test/language/class/method-definition/yield-as-binding-identifier.js b/test/language/statements/class/definition/methods-gen-yield-as-binding-identifier.js similarity index 100% rename from test/language/class/method-definition/yield-as-binding-identifier.js rename to test/language/statements/class/definition/methods-gen-yield-as-binding-identifier.js diff --git a/test/language/class/method-definition/yield-as-expression-with-rhs.js b/test/language/statements/class/definition/methods-gen-yield-as-expression-with-rhs.js similarity index 100% rename from test/language/class/method-definition/yield-as-expression-with-rhs.js rename to test/language/statements/class/definition/methods-gen-yield-as-expression-with-rhs.js diff --git a/test/language/class/method-definition/yield-as-expression-without-rhs.js b/test/language/statements/class/definition/methods-gen-yield-as-expression-without-rhs.js similarity index 100% rename from test/language/class/method-definition/yield-as-expression-without-rhs.js rename to test/language/statements/class/definition/methods-gen-yield-as-expression-without-rhs.js diff --git a/test/language/class/method-definition/yield-as-function-expression-binding-identifier.js b/test/language/statements/class/definition/methods-gen-yield-as-function-expression-binding-identifier.js similarity index 100% rename from test/language/class/method-definition/yield-as-function-expression-binding-identifier.js rename to test/language/statements/class/definition/methods-gen-yield-as-function-expression-binding-identifier.js diff --git a/test/language/class/method-definition/yield-as-generator-method-binding-identifier.js b/test/language/statements/class/definition/methods-gen-yield-as-generator-method-binding-identifier.js similarity index 100% rename from test/language/class/method-definition/yield-as-generator-method-binding-identifier.js rename to test/language/statements/class/definition/methods-gen-yield-as-generator-method-binding-identifier.js diff --git a/test/language/class/method-definition/yield-as-identifier-in-nested-function.js b/test/language/statements/class/definition/methods-gen-yield-as-identifier-in-nested-function.js similarity index 100% rename from test/language/class/method-definition/yield-as-identifier-in-nested-function.js rename to test/language/statements/class/definition/methods-gen-yield-as-identifier-in-nested-function.js diff --git a/test/language/class/method-definition/yield-as-label.js b/test/language/statements/class/definition/methods-gen-yield-as-label.js similarity index 100% rename from test/language/class/method-definition/yield-as-label.js rename to test/language/statements/class/definition/methods-gen-yield-as-label.js diff --git a/test/language/class/method-definition/yield-as-literal-property-name.js b/test/language/statements/class/definition/methods-gen-yield-as-literal-property-name.js similarity index 100% rename from test/language/class/method-definition/yield-as-literal-property-name.js rename to test/language/statements/class/definition/methods-gen-yield-as-literal-property-name.js diff --git a/test/language/class/method-definition/yield-as-logical-or-expression.js b/test/language/statements/class/definition/methods-gen-yield-as-logical-or-expression.js similarity index 100% rename from test/language/class/method-definition/yield-as-logical-or-expression.js rename to test/language/statements/class/definition/methods-gen-yield-as-logical-or-expression.js diff --git a/test/language/class/method-definition/yield-as-parameter.js b/test/language/statements/class/definition/methods-gen-yield-as-parameter.js similarity index 100% rename from test/language/class/method-definition/yield-as-parameter.js rename to test/language/statements/class/definition/methods-gen-yield-as-parameter.js diff --git a/test/language/class/method-definition/yield-as-property-name.js b/test/language/statements/class/definition/methods-gen-yield-as-property-name.js similarity index 100% rename from test/language/class/method-definition/yield-as-property-name.js rename to test/language/statements/class/definition/methods-gen-yield-as-property-name.js diff --git a/test/language/class/method-definition/yield-as-statement.js b/test/language/statements/class/definition/methods-gen-yield-as-statement.js similarity index 100% rename from test/language/class/method-definition/yield-as-statement.js rename to test/language/statements/class/definition/methods-gen-yield-as-statement.js diff --git a/test/language/class/method-definition/yield-as-yield-operand.js b/test/language/statements/class/definition/methods-gen-yield-as-yield-operand.js similarity index 100% rename from test/language/class/method-definition/yield-as-yield-operand.js rename to test/language/statements/class/definition/methods-gen-yield-as-yield-operand.js diff --git a/test/language/class/method-definition/yield-newline.js b/test/language/statements/class/definition/methods-gen-yield-newline.js similarity index 100% rename from test/language/class/method-definition/yield-newline.js rename to test/language/statements/class/definition/methods-gen-yield-newline.js diff --git a/test/language/class/method-definition/yield-star-after-newline.js b/test/language/statements/class/definition/methods-gen-yield-star-after-newline.js similarity index 100% rename from test/language/class/method-definition/yield-star-after-newline.js rename to test/language/statements/class/definition/methods-gen-yield-star-after-newline.js diff --git a/test/language/class/method-definition/yield-star-before-newline.js b/test/language/statements/class/definition/methods-gen-yield-star-before-newline.js similarity index 100% rename from test/language/class/method-definition/yield-star-before-newline.js rename to test/language/statements/class/definition/methods-gen-yield-star-before-newline.js diff --git a/test/language/class/method-definition/yield-weak-binding.js b/test/language/statements/class/definition/methods-gen-yield-weak-binding.js similarity index 100% rename from test/language/class/method-definition/yield-weak-binding.js rename to test/language/statements/class/definition/methods-gen-yield-weak-binding.js diff --git a/test/language/class/definition/ClassMethod_restricted-properties.js b/test/language/statements/class/definition/methods-restricted-properties.js similarity index 57% rename from test/language/class/definition/ClassMethod_restricted-properties.js rename to test/language/statements/class/definition/methods-restricted-properties.js index 856d3123cc..a8fe3ba2bc 100644 --- a/test/language/class/definition/ClassMethod_restricted-properties.js +++ b/test/language/statements/class/definition/methods-restricted-properties.js @@ -1,10 +1,10 @@ // Copyright (C) 2015 Caitlin Potter. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. -/*--- +/*--- description: > - Functions created using MethodDefinition syntactic form do not - have own properties "caller" or "arguments", but inherit them from + Functions created using MethodDefinition syntactic form do not have own + properties "caller" or "arguments", but inherit them from %FunctionPrototype%. es6id: 16.1 ---*/ @@ -18,12 +18,36 @@ class Class { var instance = new Class; var accessor = Object.getOwnPropertyDescriptor(Class.prototype, "accessor"); -assert.sameValue(instance.method.hasOwnProperty('caller'), false, 'Functions created using MethodDefinition syntactic form do not have own property "caller"'); -assert.sameValue(instance.method.hasOwnProperty('arguments'), false, 'Functions created using MethodDefinition syntactic form do not have own property "arguments"'); -assert.sameValue(accessor.get.hasOwnProperty('caller'), false, 'Accessor Functions created using MethodDefinition syntactic form do not have own property "caller"'); -assert.sameValue(accessor.get.hasOwnProperty('arguments'), false, 'Accessor Functions created using MethodDefinition syntactic form do not have own property "arguments"'); -assert.sameValue(accessor.set.hasOwnProperty('caller'), false, 'Accessor Functions created using MethodDefinition syntactic form do not have own property "caller"'); -assert.sameValue(accessor.set.hasOwnProperty('arguments'), false, 'Accessor Functions created using MethodDefinition syntactic form do not have own property "arguments"'); +assert.sameValue( + instance.method.hasOwnProperty('caller'), + false, + 'No "caller" own property (method)' +); +assert.sameValue( + instance.method.hasOwnProperty('arguments'), + false, + 'No "arguments" own property (method)' +); +assert.sameValue( + accessor.get.hasOwnProperty('caller'), + false, + 'No "caller" own property ("get" accessor)' +); +assert.sameValue( + accessor.get.hasOwnProperty('arguments'), + false, + 'No "arguments" own property ("get" accessor)' +); +assert.sameValue( + accessor.set.hasOwnProperty('caller'), + false, + 'No "caller" own property ("set" accessor)' +); +assert.sameValue( + accessor.set.hasOwnProperty('arguments'), + false, + 'No "arguments" own property ("set" accessor)' +); // --- Test method restricted properties throw @@ -78,4 +102,3 @@ assert.throws(TypeError, function() { assert.throws(TypeError, function() { accessor.set.arguments = {}; }); - diff --git a/test/language/class/definition/ClassDeclaration_restricted-properties.js b/test/language/statements/class/restricted-properties.js similarity index 55% rename from test/language/class/definition/ClassDeclaration_restricted-properties.js rename to test/language/statements/class/restricted-properties.js index 32fd08f916..4aec76cb3d 100644 --- a/test/language/class/definition/ClassDeclaration_restricted-properties.js +++ b/test/language/statements/class/restricted-properties.js @@ -1,18 +1,22 @@ // Copyright (C) 2015 Caitlin Potter. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. -/*--- +/*--- description: > - Functions created using ClassDeclaration syntactic form do not - have own properties "caller" or "arguments", but inherit them from + Functions created using ClassDeclaration syntactic form do not have own + properties "caller" or "arguments", but inherit them from %FunctionPrototype%. es6id: 16.1 ---*/ class BaseClass {} -assert.sameValue(BaseClass.hasOwnProperty('caller'), false, 'Functions created using ClassDeclaration syntactic form do not have own property "caller"'); -assert.sameValue(BaseClass.hasOwnProperty('arguments'), false, 'Functions created using ClassDeclaration syntactic form do not have own property "arguments"'); +assert.sameValue( + BaseClass.hasOwnProperty('caller'), false, 'No "caller" own property' +); +assert.sameValue( + BaseClass.hasOwnProperty('arguments'), false, 'No "arguments" own property' +); assert.throws(TypeError, function() { return BaseClass.caller; @@ -32,8 +36,12 @@ assert.throws(TypeError, function() { class SubClass extends BaseClass {} -assert.sameValue(SubClass.hasOwnProperty('caller'), false, 'Functions created using ClassDeclaration syntactic form do not have own property "caller"'); -assert.sameValue(SubClass.hasOwnProperty('arguments'), false, 'Functions created using ClassDeclaration syntactic form do not have own property "arguments"'); +assert.sameValue( + SubClass.hasOwnProperty('caller'), false, 'No "caller" own property' +); +assert.sameValue( + SubClass.hasOwnProperty('arguments'), false, 'No "arguments" own property' +); assert.throws(TypeError, function() { return SubClass.caller;