summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/Iterator/prototype/map/throw-when-iterator-returns-non-object.js
blob: 287507a2f6f87e339603cd900a34b69982604358 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// |reftest| skip-if(!this.hasOwnProperty('Iterator'))
//

/*---
esid: pending
description: Throw TypeError if `next` call returns non-object.
info:
features: [iterator-helpers]
---*/

const iterator = returnValue => Object.setPrototypeOf({
  next: () => returnValue,
}, Iterator.prototype);
const mapper = x => x;

assertThrowsInstanceOf(() => iterator(undefined).map(mapper).next(), TypeError);
assertThrowsInstanceOf(() => iterator(null).map(mapper).next(), TypeError);
assertThrowsInstanceOf(() => iterator(0).map(mapper).next(), TypeError);
assertThrowsInstanceOf(() => iterator(false).map(mapper).next(), TypeError);
assertThrowsInstanceOf(() => iterator('').map(mapper).next(), TypeError);
assertThrowsInstanceOf(() => iterator(Symbol()).map(mapper).next(), TypeError);

if (typeof reportCompare == 'function')
  reportCompare(0, 0);