mirror of https://github.com/tc39/test262.git
Merge pull request #344 from bocoup/SetIteratorPrototype
Improve coverage of SetIteratorPrototype
This commit is contained in:
commit
53be57f9e8
|
@ -1,12 +1,14 @@
|
|||
// Copyright (C) 2014 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
es6id: 23.2.3.12
|
||||
description: >
|
||||
`Object.prototype.getOwnPropertyDescriptor` should reflect the value and
|
||||
writability of the @@toStringTag attribute.
|
||||
includes: [propertyHelper.js]
|
||||
es6id: 23.2.3.12
|
||||
includes: [propertyHelper.js]
|
||||
features:
|
||||
- Symbol.toStringTag
|
||||
- Symbol.iterator
|
||||
---*/
|
||||
|
||||
var SetIteratorProto = Object.getPrototypeOf(new Set()[Symbol.iterator]());
|
||||
|
@ -14,7 +16,7 @@ var SetIteratorProto = Object.getPrototypeOf(new Set()[Symbol.iterator]());
|
|||
assert.sameValue(
|
||||
'Set Iterator',
|
||||
SetIteratorProto[Symbol.toStringTag],
|
||||
"`'Set Iterator'` is `SetIteratorProto[Symbol.toStringTag]`"
|
||||
'`Set Iterator` is `SetIteratorProto[Symbol.toStringTag]`'
|
||||
);
|
||||
|
||||
verifyNotEnumerable(SetIteratorProto, Symbol.toStringTag);
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 23.2.5.2.1
|
||||
description: >
|
||||
Throws a TypeError if `this` does not have all of the internal slots of a Set
|
||||
Iterator Instance.
|
||||
info: >
|
||||
%SetIteratorPrototype%.next ( )
|
||||
|
||||
1. Let O be the this value.
|
||||
2. If Type(O) is not Object, throw a TypeError exception.
|
||||
3. If O does not have all of the internal slots of a Set Iterator Instance
|
||||
(23.2.5.3), throw a TypeError exception.
|
||||
...
|
||||
features: [Symbol.iterator]
|
||||
---*/
|
||||
|
||||
var set = new Set([1, 2]);
|
||||
|
||||
var iterator = set[Symbol.iterator]();
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(set);
|
||||
});
|
||||
|
||||
iterator = set.entries();
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(set);
|
||||
});
|
||||
|
||||
iterator = set.keys();
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(set);
|
||||
});
|
||||
|
||||
iterator = set.values();
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(set);
|
||||
});
|
|
@ -0,0 +1,42 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 23.2.5.2.1
|
||||
description: >
|
||||
Throws a TypeError if `this` does not have all of the internal slots of a Set
|
||||
Iterator Instance.
|
||||
info: >
|
||||
%SetIteratorPrototype%.next ( )
|
||||
|
||||
1. Let O be the this value.
|
||||
2. If Type(O) is not Object, throw a TypeError exception.
|
||||
3. If O does not have all of the internal slots of a Set Iterator Instance
|
||||
(23.2.5.3), throw a TypeError exception.
|
||||
...
|
||||
features: [Symbol.iterator]
|
||||
---*/
|
||||
|
||||
var set = new Set([1, 2]);
|
||||
|
||||
var iterator = set[Symbol.iterator]();
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call({});
|
||||
});
|
||||
|
||||
iterator = set.entries();
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call({});
|
||||
});
|
||||
|
||||
iterator = set.keys();
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call({});
|
||||
});
|
||||
|
||||
iterator = set.values();
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call({});
|
||||
});
|
||||
|
||||
// does not throw an Error
|
||||
iterator.next.call(set[Symbol.iterator]());
|
|
@ -1,14 +1,14 @@
|
|||
// Copyright (C) 2014 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
es6id: 23.2.3.11
|
||||
description: >
|
||||
When an item is added to the set after the iterator is created but before
|
||||
the iterator is "done" (as defined by 23.2.5.2.1), the new item should be
|
||||
accessible via iteration. When an item is added to the set after the
|
||||
iterator is "done", the new item should not be accessible via iteration.
|
||||
es6id: 23.2.3.11
|
||||
---*/
|
||||
features: [Symbol.iterator]
|
||||
---*/
|
||||
|
||||
var set = new Set();
|
||||
set.add(1);
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
// Copyright (C) 2014 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
es6id: 23.2.3.11
|
||||
description: >
|
||||
The method should return a valid iterator with the context as the
|
||||
IteratedObject.
|
||||
es6id: 23.2.3.11
|
||||
features:
|
||||
- Symbol.iterator
|
||||
---*/
|
||||
|
||||
var set = new Set();
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
// Copyright (C) 2014 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
If the context does not have a [[SetData]] internal slot, throw a
|
||||
TypeError exception as per 23.2.5.1.
|
||||
es6id: 23.2.3.11
|
||||
---*/
|
||||
|
||||
var iterator = new Set()[Symbol.iterator]();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call({});
|
||||
});
|
|
@ -0,0 +1,48 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 23.2.5.2.1
|
||||
description: >
|
||||
Throws a TypeError if `this` value is not an Object.
|
||||
info: >
|
||||
From Set.prototype.entries()
|
||||
|
||||
%SetIteratorPrototype%.next ( )
|
||||
|
||||
1. Let O be the this value.
|
||||
2. If Type(O) is not Object, throw a TypeError exception.
|
||||
...
|
||||
features:
|
||||
- Symbol
|
||||
- Symbol.iterator
|
||||
---*/
|
||||
|
||||
var set = new Set([1, 2]);
|
||||
var iterator = set.entries();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(false);
|
||||
});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(1);
|
||||
});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call('');
|
||||
});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(undefined);
|
||||
});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(null);
|
||||
});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(Symbol());
|
||||
});
|
||||
|
||||
// does not throw an Error
|
||||
iterator.next.call(set[Symbol.iterator]());
|
|
@ -0,0 +1,48 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 23.2.5.2.1
|
||||
description: >
|
||||
Throws a TypeError if `this` value is not an Object.
|
||||
info: >
|
||||
From Set.prototype.keys()
|
||||
|
||||
%SetIteratorPrototype%.next ( )
|
||||
|
||||
1. Let O be the this value.
|
||||
2. If Type(O) is not Object, throw a TypeError exception.
|
||||
...
|
||||
features:
|
||||
- Symbol
|
||||
- Symbol.iterator
|
||||
---*/
|
||||
|
||||
var set = new Set([[1, 11], [2, 22]]);
|
||||
var iterator = set.keys();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(false);
|
||||
});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(1);
|
||||
});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call('');
|
||||
});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(undefined);
|
||||
});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(null);
|
||||
});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(Symbol());
|
||||
});
|
||||
|
||||
// does not throw an Error
|
||||
iterator.next.call(set[Symbol.iterator]());
|
|
@ -0,0 +1,48 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 23.2.5.2.1
|
||||
description: >
|
||||
Throws a TypeError if `this` value is not an Object.
|
||||
info: >
|
||||
Using Set.prototype[Symbol.iterator]()
|
||||
|
||||
%SetIteratorPrototype%.next ( )
|
||||
|
||||
1. Let O be the this value.
|
||||
2. If Type(O) is not Object, throw a TypeError exception.
|
||||
...
|
||||
features:
|
||||
- Symbol
|
||||
- Symbol.iterator
|
||||
---*/
|
||||
|
||||
var set = new Set([[1, 11], [2, 22]]);
|
||||
var iterator = set[Symbol.iterator]();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(false);
|
||||
});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(1);
|
||||
});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call('');
|
||||
});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(undefined);
|
||||
});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(null);
|
||||
});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(Symbol());
|
||||
});
|
||||
|
||||
// does not throw an Error
|
||||
iterator.next.call(set[Symbol.iterator]());
|
|
@ -0,0 +1,48 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
/*---
|
||||
es6id: 23.2.5.2.1
|
||||
description: >
|
||||
Throws a TypeError if `this` value is not an Object.
|
||||
info: >
|
||||
From Set.prototype.values()
|
||||
|
||||
%SetIteratorPrototype%.next ( )
|
||||
|
||||
1. Let O be the this value.
|
||||
2. If Type(O) is not Object, throw a TypeError exception.
|
||||
...
|
||||
features:
|
||||
- Symbol
|
||||
- Symbol.iterator
|
||||
---*/
|
||||
|
||||
var set = new Set([[1, 11], [2, 22]]);
|
||||
var iterator = set.values();
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(false);
|
||||
});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(1);
|
||||
});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call('');
|
||||
});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(undefined);
|
||||
});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(null);
|
||||
});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
iterator.next.call(Symbol());
|
||||
});
|
||||
|
||||
// does not throw an Error
|
||||
iterator.next.call(set[Symbol.iterator]());
|
Loading…
Reference in New Issue