Skip to content
Snippets Groups Projects
Unverified Commit 5d584798 authored by Rick Waldron's avatar Rick Waldron Committed by GitHub
Browse files

Merge pull request #1590 from joyeecheung/symbol-desc

Add tests for Symbol.prototype.description
parents 3d153716 70b97383
No related branches found
No related tags found
No related merge requests found
...@@ -77,6 +77,10 @@ numeric-separator-literal ...@@ -77,6 +77,10 @@ numeric-separator-literal
String.prototype.matchAll String.prototype.matchAll
Symbol.matchAll Symbol.matchAll
# Symbol.prototype.description
# https://github.com/tc39/proposal-symbol-description
Symbol.prototype.description
# ECMAScript ⊃ JSON # ECMAScript ⊃ JSON
# https://github.com/tc39/proposal-json-superset # https://github.com/tc39/proposal-json-superset
json-superset json-superset
......
// Copyright 2018 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-symbol.prototype.description
description: >
Test the descriptor of Symbol.prototype.description.
info: |
`Symbol.prototype.description` is an accessor property whose
set accessor function is undefined.
includes: [propertyHelper.js]
features: [Symbol.prototype.description]
---*/
var desc = Object.getOwnPropertyDescriptor(Symbol.prototype, 'description');
assert.sameValue(desc.set, undefined);
assert.sameValue(desc.writable, undefined);
assert.sameValue(typeof desc.get, 'function');
verifyProperty(Symbol.prototype, 'description', {
enumerable: false,
configurable: true,
});
// Copyright 2018 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-symbol.prototype.description
description: >
Test the get accessor function of Symbol.prototype.description.
info: |
1. Let s be the this value.
2. Let sym be ? thisSymbolValue(s).
3. Return sym.[[Description]].
features: [Symbol.prototype.description]
---*/
const symbol = Symbol('test');
assert.sameValue(symbol.description, 'test');
assert.sameValue(symbol.hasOwnProperty('description'), false);
const empty = Symbol();
assert.sameValue(empty.description, undefined);
assert.sameValue(empty.hasOwnProperty('description'), false);
const undef = Symbol(undefined);
assert.sameValue(undef.description, undefined);
assert.sameValue(undef.hasOwnProperty('description'), false);
const emptyStr = Symbol('');
assert.sameValue(emptyStr.description, '');
assert.sameValue(emptyStr.hasOwnProperty('description'), false);
// Copyright 2018 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-symbol.prototype.description
description: >
Behavior when `this` value is an object without a [[SymbolData]] internal
slot.
info: |
1. Let s be the this value.
2. Let sym be ? thisSymbolValue(s).
3. Return sym.[[Description]].
features: [Symbol.prototype.description]
---*/
const getter = Object.getOwnPropertyDescriptor(
Symbol.prototype, 'description'
).get;
assert.throws(TypeError, function() {
getter.call(null);
});
assert.throws(TypeError, function() {
getter.call(123);
});
assert.throws(TypeError, function() {
getter.call('test');
});
assert.throws(TypeError, function() {
getter.call(true);
});
assert.throws(TypeError, function() {
getter.call(undefined);
});
assert.throws(TypeError, function() {
getter.call(new Proxy({}, {}));
});
assert.throws(TypeError, function() {
getter.call({});
});
// Copyright 2018 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-symbol.prototype.description
description: >
Test that calling the getter on a Symbol or a Symbol wrapper object works.
info: |
1. Let s be the this value.
2. Let sym be ? thisSymbolValue(s).
3. Return sym.[[Description]].
features: [Symbol.prototype.description]
---*/
const getter = Object.getOwnPropertyDescriptor(
Symbol.prototype, 'description'
).get;
const symbol = Symbol('test');
assert.sameValue(getter.call(symbol), 'test');
assert.sameValue(getter.call(Object(symbol)), 'test');
const empty = Symbol();
assert.sameValue(getter.call(empty), undefined);
assert.sameValue(getter.call(Object(empty)), undefined);
const undef = Symbol(undefined);
assert.sameValue(getter.call(undef), undefined);
assert.sameValue(getter.call(Object(undef)), undefined);
const emptyStr = Symbol('');
assert.sameValue(getter.call(emptyStr), '');
assert.sameValue(getter.call(Object(emptyStr)), '');
// Copyright 2018 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-symbol.prototype.description
description: >
Test Symbol.prototype.description called on wrapper objects.
info: |
1. Let s be the this value.
2. Let sym be ? thisSymbolValue(s).
3. Return sym.[[Description]].
features: [Symbol.prototype.description]
---*/
const symbol = Object(Symbol('test'));
assert.sameValue(symbol.description, 'test');
assert.sameValue(symbol.hasOwnProperty('description'), false);
const empty = Object(Symbol());
assert.sameValue(empty.description, undefined);
assert.sameValue(empty.hasOwnProperty('description'), false);
const undef = Object(Symbol(undefined));
assert.sameValue(undef.description, undefined);
assert.sameValue(undef.hasOwnProperty('description'), false);
const emptyStr = Object(Symbol(''));
assert.sameValue(emptyStr.description, '');
assert.sameValue(emptyStr.hasOwnProperty('description'), false);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment