mirror of
https://github.com/tc39/test262.git
synced 2025-07-14 09:34:37 +02:00
- Expand ambiguous assertion messages and assert execution paths more finely. - Improve variable names in `for..of` tests While the object created by a GeneratorFunction may be considered an "iterable", it is being used as an iterator in these tests. Naming the variable according to the way it is used improves the readability of the test body. - Add 'features' attribute to test frontmatter - Move tests - Introduce additional `for..of` control flow tests
41 lines
1.0 KiB
JavaScript
41 lines
1.0 KiB
JavaScript
// Copyright (C) 2013 the V8 project authors. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
/*---
|
|
es6id: 13.6.4.13 S5.c
|
|
description: >
|
|
The iterator's `next` method should be accessed with each iteration as per
|
|
the `IteratorStep` abstract operation (7.4.5).
|
|
---*/
|
|
|
|
var iterable = {};
|
|
var iterator = {};
|
|
var firstIterResult = { done: false };
|
|
var iterationCount, invocationCount;
|
|
|
|
iterable[Symbol.iterator] = function() {
|
|
return iterator;
|
|
};
|
|
|
|
iterator.next = function() { return { value: 45, done: false }; };
|
|
iterationCount = 0;
|
|
invocationCount = 0;
|
|
for (var x of iterable) {
|
|
assert.sameValue(x, 45);
|
|
|
|
iterator.next = function() {
|
|
invocationCount++;
|
|
|
|
Object.defineProperty(iterator, 'next', {
|
|
get: function() {
|
|
$ERROR('Should not access the `next` method after iteration ' +
|
|
'is complete.');
|
|
}
|
|
});
|
|
|
|
return { value: null, done: true };
|
|
};
|
|
iterationCount++;
|
|
}
|
|
assert.sameValue(iterationCount, 1);
|
|
assert.sameValue(invocationCount, 1);
|