test: Add private generator method tests (#1343)

This commit is contained in:
jbhoosreddy 2018-08-29 21:04:05 -04:00
parent 835c85c26e
commit dd3d13a7a8
5 changed files with 197 additions and 1 deletions

View File

@ -2,7 +2,7 @@
// This code is governed by the BSD license found in the LICENSE file.
/*---
path: language/statements/class/gen-method-
name: Geenerator method as a ClassDeclaration element
name: Generator method as a ClassDeclaration element
esid: prod-GeneratorMethod
info: |
ClassElement :

View File

@ -0,0 +1,50 @@
// Copyright (C) 2018 Jaideep Bhoosreddy. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
path: language/statements/class/gen-method-
name: Generator private method as a ClassDeclaration element
features: [class-methods-private]
esid: prod-GeneratorPrivateMethod
info: |
ClassElement :
PrivateMethodDefinition
MethodDefinition :
GeneratorMethod
14.4 Generator Function Definitions
GeneratorMethod :
* PropertyName ( UniqueFormalParameters ) { GeneratorBody }
features: [generators]
---*/
var callCount = 0;
class C {
*#gen() {
callCount += 1;
/*{ body }*/
}
gen() {
return this.#gen();
}
}
const c = new C();
// Test the private fields do not appear as properties before set to value
assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#gen"), false, "test 1");
assert.sameValue(Object.hasOwnProperty.call(C, "#gen"), false, "test 2");
assert.sameValue(Object.hasOwnProperty.call(c, "#gen"), false, "test 3");
var iter = c.gen();
/*{ assertions }*/
assert.sameValue(callCount, 1);
// Test the private fields do not appear as properties after set to value
assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#gen"), false, "test 1");
assert.sameValue(Object.hasOwnProperty.call(C, "#gen"), false, "test 2");
assert.sameValue(Object.hasOwnProperty.call(c, "#gen"), false, "test 3");

View File

@ -0,0 +1,48 @@
// Copyright (C) 2018 Jaideep Bhoosreddy. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
path: language/statements/class/gen-private-method-static-
name: Static generator private method as a ClassDeclaration element
features: [class-methods-private]
esid: prod-GeneratorPrivateMethod
info: |
ClassElement :
static PrivateMethodDefinition
MethodDefinition :
GeneratorMethod
14.4 Generator Function Definitions
GeneratorMethod :
* PropertyName ( UniqueFormalParameters ) { GeneratorBody }
features: [generators]
---*/
var callCount = 0;
class C {
static #*gen() {
callCount += 1;
/*{ body }*/
}
static gen() {
return C.gen();
}
}
var gen = C.gen;
// Test the private fields do not appear as properties before set to value
assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#gen"), false, "test 1");
assert.sameValue(Object.hasOwnProperty.call(C, "#gen"), false, "test 2");
var iter = gen();
/*{ assertions }*/
assert.sameValue(callCount, 1);
// Test the private fields do not appear as properties before set to value
assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#gen"), false, "test 1");
assert.sameValue(Object.hasOwnProperty.call(C, "#gen"), false, "test 2");

View File

@ -0,0 +1,50 @@
// Copyright (C) 2018 Jaideep Bhoosreddy. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
path: language/expressions/class/gen-private-method-
name: Generator private method as a ClassExpression element
features: [class-methods-private]
esid: prod-GeneratorPrivateMethod
info: |
ClassElement :
PrivateMethodDefinition
MethodDefinition :
GeneratorMethod
14.4 Generator Function Definitions
GeneratorMethod :
* PropertyName ( UniqueFormalParameters ) { GeneratorBody }
features: [generators]
---*/
var callCount = 0;
var C = class {
*gen() {
callCount += 1;
/*{ body }*/
}
gen() {
return this.#gen();
}
}
const c = new C();
// Test the private fields do not appear as properties before set to value
assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#gen"), false, "test 1");
assert.sameValue(Object.hasOwnProperty.call(C, "#gen"), false, "test 2");
assert.sameValue(Object.hasOwnProperty.call(c, "#gen"), false, "test 3");
var iter = c.gen();
/*{ assertions }*/
assert.sameValue(callCount, 1);
// Test the private fields do not appear as properties after set to value
assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#gen"), false, "test 1");
assert.sameValue(Object.hasOwnProperty.call(C, "#gen"), false, "test 2");
assert.sameValue(Object.hasOwnProperty.call(c, "#gen"), false, "test 3");

View File

@ -0,0 +1,48 @@
// Copyright (C) 2018 Jaideep Bhoosreddy. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
path: language/expressions/class/gen-private-method-static-
name: Static generator private method as a ClassExpression element
features: [class-methods-private]
esid: prod-GeneratorPrivateMethod
info: |
ClassElement :
static PrivateMethodDefinition
MethodDefinition :
GeneratorMethod
14.4 Generator Function Definitions
GeneratorMethod :
* PropertyName ( UniqueFormalParameters ) { GeneratorBody }
features: [generators]
---*/
var callCount = 0;
var C = class {
static *gen() {
callCount += 1;
/*{ body }*/
}
static gen() {
return C.gen();
}
}
var gen = C.gen;
// Test the private fields do not appear as properties before set to value
assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#gen"), false, "test 1");
assert.sameValue(Object.hasOwnProperty.call(C, "#gen"), false, "test 2");
var iter = gen();
/*{ assertions }*/
assert.sameValue(callCount, 1);
// Test the private fields do not appear as properties before set to value
assert.sameValue(Object.hasOwnProperty.call(C.prototype, "#gen"), false, "test 1");
assert.sameValue(Object.hasOwnProperty.call(C, "#gen"), false, "test 2");