diff options
Diffstat (limited to 'js/src/tests/test262/built-ins/NativeErrors/AggregateError/errors-iterabletolist-failures.js')
-rw-r--r-- | js/src/tests/test262/built-ins/NativeErrors/AggregateError/errors-iterabletolist-failures.js | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/js/src/tests/test262/built-ins/NativeErrors/AggregateError/errors-iterabletolist-failures.js b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/errors-iterabletolist-failures.js new file mode 100644 index 0000000000..c1ae1b37c7 --- /dev/null +++ b/js/src/tests/test262/built-ins/NativeErrors/AggregateError/errors-iterabletolist-failures.js @@ -0,0 +1,185 @@ +// Copyright (C) 2019 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-aggregate-error +description: > + Return abrupt completion from IterableToList(errors) +info: | + AggregateError ( errors, message ) + + ... + 3. Let errorsList be ? IterableToList(errors). + 4. Set O.[[AggregateErrors]] to errorsList. + ... + 6. Return O. + + Runtime Semantics: IterableToList ( items [ , method ] ) + + 1. If method is present, then + ... + 2. Else, + b. Let iteratorRecord be ? GetIterator(items, sync). + 3. Let values be a new empty List. + 4. Let next be true. + 5. Repeat, while next is not false + a. Set next to ? IteratorStep(iteratorRecord). + b. If next is not false, then + i. Let nextValue be ? IteratorValue(next). + ii. Append nextValue to the end of the List values. + 6. Return values. + + GetIterator ( obj [ , hint [ , method ] ] ) + + ... + 3. If method is not present, then + a. If hint is async, then + ... + b. Otherwise, set method to ? GetMethod(obj, @@iterator). + 4. Let iterator be ? Call(method, obj). + 5. If Type(iterator) is not Object, throw a TypeError exception. + 6. Let nextMethod be ? GetV(iterator, "next"). + ... + 8. Return iteratorRecord. +features: [AggregateError, Symbol.iterator] +---*/ + +var case1 = { + get [Symbol.iterator]() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, () => { + var obj = new AggregateError(case1); +}, 'get Symbol.iterator'); + +var case2 = { + get [Symbol.iterator]() { + return {}; + } +}; + +assert.throws(TypeError, () => { + var obj = new AggregateError(case2); +}, 'GetMethod(obj, @@iterator) abrupts from non callable'); + +var case3 = { + [Symbol.iterator]() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, () => { + var obj = new AggregateError(case3); +}, 'Abrupt from @@iterator call'); + +var case4 = { + [Symbol.iterator]() { + return 'a string'; + } +}; + +assert.throws(TypeError, () => { + var obj = new AggregateError(case4); +}, '@@iterator call returns a string'); + +var case5 = { + [Symbol.iterator]() { + return undefined; + } +}; + +assert.throws(TypeError, () => { + var obj = new AggregateError(case5); +}, '@@iterator call returns undefined'); + +var case6 = { + [Symbol.iterator]() { + return { + get next() { + throw new Test262Error(); + } + } + } +}; + +assert.throws(Test262Error, () => { + var obj = new AggregateError(case6); +}, 'GetV(iterator, next) returns abrupt'); + +var case7 = { + [Symbol.iterator]() { + return { + get next() { + return {}; + } + } + } +}; + +assert.throws(TypeError, () => { + var obj = new AggregateError(case7); +}, 'GetV(iterator, next) returns a non callable'); + +var case8 = { + [Symbol.iterator]() { + return { + next() { + throw new Test262Error(); + } + } + } +}; + +assert.throws(Test262Error, () => { + var obj = new AggregateError(case8); +}, 'abrupt from iterator.next()'); + +var case9 = { + [Symbol.iterator]() { + return { + next() { + return undefined; + } + } + } +}; + +assert.throws(TypeError, () => { + var obj = new AggregateError(case9); +}, 'iterator.next() returns undefined'); + +var case10 = { + [Symbol.iterator]() { + return { + next() { + return 'a string'; + } + } + } +}; + +assert.throws(TypeError, () => { + var obj = new AggregateError(case10); +}, 'iterator.next() returns a string'); + +var case11 = { + [Symbol.iterator]() { + return { + next() { + return { + get done() { + throw new Test262Error(); + } + }; + } + } + } +}; + +assert.throws(Test262Error, () => { + var obj = new AggregateError(case11); +}, 'IteratorCompete abrupts getting the done property'); + +reportCompare(0, 0); |