Migrate test for ns

This commit is contained in:
Leo Balter 2018-10-11 09:49:08 -04:00
parent 019322b114
commit 3968c2d831
8 changed files with 292 additions and 0 deletions

View File

@ -0,0 +1,114 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// Copyright (C) 2018 Leo Balter. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-module-namespace-exotic-objects-defineownproperty-p-desc
desc: >
The [[DefineOwnProperty]] internal method returns `true` if no change is
requested, and `false` otherwise.
features: [Symbol.iterator, Reflect, Symbol, Symbol.toStringTag]
template: namespace
---*/
//- setup
var sym = Symbol('test262');
const exported = ['local1', 'renamed', 'indirect'];
//- import
import('./define-own-property_FIXTURE.js')
//- body
// Non-existant properties.
for (const key of ['local2', 0, sym, Symbol.iterator]) {
assert.sameValue(
Reflect.defineProperty(ns, key, {}),
false,
'Reflect.defineProperty: ' + key.toString()
);
assert.throws(TypeError, function() {
Object.defineProperty(ns, key, {});
}, 'Object.defineProperty: ' + key.toString());
}
// Own properties. No change requested.
for (const key of ([...exported, Symbol.toStringTag])) {
assert.sameValue(
Reflect.defineProperty(ns, key, {}),
true,
`No change requested, Reflect.defineProperty: ${key.toString()}`
);
assert.sameValue(
Object.defineProperty(ns, key, {}),
ns,
`No change requested, Object.defineProperty: ${key.toString()}`
);
}
assert.sameValue(
Reflect.defineProperty(ns, 'indirect',
{writable: true, enumerable: true, configurable: false}),
true,
'Reflect.defineProperty: indirect'
);
assert.sameValue(
Object.defineProperty(ns, 'indirect',
{writable: true, enumerable: true, configurable: false}),
ns,
'Object.defineProperty: indirect'
);
assert.sameValue(
Reflect.defineProperty(ns, Symbol.toStringTag,
{value: "Module", writable: false, enumerable: false,
configurable: false}),
true,
'Reflect.defineProperty: Symbol.toStringTag'
);
assert.sameValue(
Object.defineProperty(ns, Symbol.toStringTag,
{value: "Module", writable: false, enumerable: false,
configurable: false}),
ns,
'Object.defineProperty: Symbol.toStringTag'
);
// Own properties. Change requested.
for (const key of ([...exported, Symbol.toStringTag])) {
assert.sameValue(
Reflect.defineProperty(ns, key, {value: 123}),
false,
`Change requested, Reflect.defineProperty: ${key.toString()}`
);
assert.throws(TypeError, function() {
Object.defineProperty(ns, key, {value: 123});
}, `Change requested, Object.defineProperty: ${key.toString()}`);
}
assert.sameValue(
Reflect.defineProperty(ns, 'indirect',
{writable: true, enumerable: true, configurable: true}),
false,
'Reflect.defineProperty: indirect'
);
assert.throws(TypeError, function() {
Object.defineProperty(ns, 'indirect',
{writable: true, enumerable: true, configurable: true});
}, 'Object.defineProperty: indirect');
assert.sameValue(
Reflect.defineProperty(ns, Symbol.toStringTag,
{value: "module", writable: false, enumerable: false,
configurable: false}),
false,
'Reflect.defineProperty: Symbol.toStringTag'
);
assert.throws(TypeError, function() {
Object.defineProperty(ns, Symbol.toStringTag,
{value: "module", writable: false, enumerable: false,
configurable: false});
}, 'Object.defineProperty: Symbol.toStringTag');

View File

@ -0,0 +1,41 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// Copyright (C) 2018 Leo Balter. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-module-namespace-exotic-objects-delete-p
desc: >
The [[Delete]] behavior for a key that describes an initialized exported
binding on non strict mode
info: |
[...]
2. If Type(P) is Symbol, then
a. Return ? OrdinaryDelete(O, P).
3. Let exports be O.[[Exports]].
4. If P is an element of exports, return false.
5. Return true.
template: namespace
flags: [noStrict]
---*/
//- import
import('./delete-exported-init_FIXTURE.js')
//- body
assert.sameValue(delete ns.local1, false, 'delete: local1');
assert.sameValue(
Reflect.deleteProperty(ns, 'local1'), false, 'Reflect.deleteProperty: local1'
);
assert.sameValue(ns.local1, 333, 'binding unmodified: local1');
assert.sameValue(delete ns.renamed, false, 'delete: renamed');
assert.sameValue(
Reflect.deleteProperty(ns, 'renamed'), false, 'Reflect.deleteProperty: renamed'
);
assert.sameValue(ns.renamed, 444, 'binding unmodified: renamed');
assert.sameValue(delete ns.indirect, false, 'delete: indirect');
assert.sameValue(
Reflect.deleteProperty(ns, 'indirect'),
false,
'Reflect.deleteProperty: indirect'
);
assert.sameValue(ns.indirect, 333, 'binding unmodified: indirect');

View File

@ -0,0 +1,47 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// Copyright (C) 2018 Leo Balter. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-module-namespace-exotic-objects-delete-p
desc: >
The [[Delete]] behavior for a key that describes an initialized exported
binding on strict mode
info: |
[...]
2. If Type(P) is Symbol, then
a. Return ? OrdinaryDelete(O, P).
3. Let exports be O.[[Exports]].
4. If P is an element of exports, return false.
5. Return true.
template: namespace
flags: [onlyStrict]
---*/
//- import
import('./delete-exported-init_FIXTURE.js')
//- body
assert.throws(TypeError, function() {
delete ns.local1;
}, 'delete: local1');
assert.sameValue(
Reflect.deleteProperty(ns, 'local1'), false, 'Reflect.deleteProperty: local1'
);
assert.sameValue(ns.local1, 333, 'binding unmodified: local1');
assert.throws(TypeError, function() {
delete ns.renamed;
}, 'delete: renamed');
assert.sameValue(
Reflect.deleteProperty(ns, 'renamed'), false, 'Reflect.deleteProperty: renamed'
);
assert.sameValue(ns.renamed, 444, 'binding unmodified: renamed');
assert.throws(TypeError, function() {
delete ns.indirect;
}, 'delete: indirect');
assert.sameValue(
Reflect.deleteProperty(ns, 'indirect'),
false,
'Reflect.deleteProperty: indirect'
);
assert.sameValue(ns.indirect, 333, 'binding unmodified: indirect');

View File

@ -0,0 +1,37 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-module-namespace-exotic-objects-delete-p
desc: >
The [[Delete]] behavior for a key that does not describe an exported binding
info: |
[...]
2. If Type(P) is Symbol, then
a. Return ? OrdinaryDelete(O, P).
3. Let exports be O.[[Exports]].
4. If P is an element of exports, return false.
5. Return true.
template: namespace
flags: [noStrict]
---*/
//- import
import('./empty_FIXTURE.js')
//- body
assert(delete ns.undef, 'delete: undef');
assert(Reflect.deleteProperty(ns, 'undef'), 'Reflect.deleteProperty: undef');
assert(delete ns.default, 'delete: default');
assert(
Reflect.deleteProperty(ns, 'default'), 'Reflect.deleteProperty: default'
);
assert.sameValue(delete ns[Symbol.toStringTag], false, 'delete: Symbol.toStringTag');
assert.sameValue(
Reflect.deleteProperty(ns, Symbol.toStringTag), false,
'Reflect.deleteProperty: Symbol.toStringTag'
);
var sym = Symbol('test262');
assert(delete ns[sym], 'delete: symbol');
assert(Reflect.deleteProperty(ns, sym), 'Reflect.deleteProperty: symbol');

View File

@ -0,0 +1,37 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-module-namespace-exotic-objects-delete-p
desc: >
The [[Delete]] behavior for a key that does not describe an exported binding
info: |
[...]
2. If Type(P) is Symbol, then
a. Return ? OrdinaryDelete(O, P).
3. Let exports be O.[[Exports]].
4. If P is an element of exports, return false.
5. Return true.
template: namespace
flags: [onlyStrict]
---*/
//- import
import('./empty_FIXTURE.js')
//- body
assert(delete ns.undef, 'delete: undef');
assert(Reflect.deleteProperty(ns, 'undef'), 'Reflect.deleteProperty: undef');
assert(delete ns.default, 'delete: default');
assert(
Reflect.deleteProperty(ns, 'default'), 'Reflect.deleteProperty: default'
);
assert.sameValue(
Reflect.deleteProperty(ns, Symbol.toStringTag), false,
'Reflect.deleteProperty: Symbol.toStringTag'
);
assert.throws(TypeError, function() { delete ns[Symbol.toStringTag]; }, 'delete: Symbol.toStringTag');
var sym = Symbol('test262');
assert(delete ns[sym], 'delete: symbol');
assert(Reflect.deleteProperty(ns, sym), 'Reflect.deleteProperty: symbol');

View File

@ -0,0 +1,7 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
export var local1;
var local2;
export { local2 as renamed };
export { local1 as indirect } from './define-own-property_FIXTURE.js';

View File

@ -0,0 +1,7 @@
// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
export var local1 = 333;
var local2 = 444;
export { local2 as renamed };
export { local1 as indirect } from './delete-exported-init_FIXTURE.js';

View File

@ -0,0 +1,2 @@
// Copyright (C) 2018 Leo Balter. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.