diff options
Diffstat (limited to 'js/src/tests/test262/built-ins/Array/from/iter-set-length.js')
-rw-r--r-- | js/src/tests/test262/built-ins/Array/from/iter-set-length.js | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/js/src/tests/test262/built-ins/Array/from/iter-set-length.js b/js/src/tests/test262/built-ins/Array/from/iter-set-length.js new file mode 100644 index 0000000000..341e0b4a14 --- /dev/null +++ b/js/src/tests/test262/built-ins/Array/from/iter-set-length.js @@ -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. +/*--- +esid: sec-array.from +description: Setting length of object (traversed via iterator) +info: | + [...] + 6. If usingIterator is not undefined, then + [...] + g. Repeat + [...] + iv. If next is false, then + 1. Let setStatus be Set(A, "length", k, true). + 2. ReturnIfAbrupt(setStatus). + 3. Return A. +features: [Symbol.iterator] +---*/ + +var items = {}; +var result, nextIterResult, lastIterResult; +items[Symbol.iterator] = function() { + return { + next: function() { + var result = nextIterResult; + nextIterResult = lastIterResult; + return result; + } + }; +}; + +nextIterResult = lastIterResult = { + done: true +}; +result = Array.from(items); + +assert.sameValue(result.length, 0, 'The value of result.length is expected to be 0'); + +nextIterResult = { + done: false +}; +lastIterResult = { + done: true +}; +result = Array.from(items); + +assert.sameValue(result.length, 1, 'The value of result.length is expected to be 1'); + +reportCompare(0, 0); |