/
esnext.async-iterator.take.js
33 lines (29 loc) · 1.25 KB
/
esnext.async-iterator.take.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import { createIterator } from '../helpers/helpers';
QUnit.test('AsyncIterator#take', assert => {
assert.expect(15);
const async = assert.async();
const { take } = AsyncIterator.prototype;
assert.isFunction(take);
assert.arity(take, 1);
assert.name(take, 'take');
assert.looksNative(take);
assert.nonEnumerable(AsyncIterator.prototype, 'take');
take.call(createIterator([1, 2, 3]), 2).toArray().then(it => {
assert.arrayEqual(it, [1, 2], 'basic functionality');
return take.call(createIterator([1, 2, 3]), 1.5).toArray();
}).then(it => {
assert.arrayEqual(it, [1], 'float');
return take.call(createIterator([1, 2, 3]), 4).toArray();
}).then(it => {
assert.arrayEqual(it, [1, 2, 3], 'big');
return take.call(createIterator([1, 2, 3]), 0).toArray();
}).then(it => {
assert.arrayEqual(it, [], 'zero');
}).then(() => async());
assert.throws(() => take.call(undefined, 1), TypeError);
assert.throws(() => take.call(null, 1), TypeError);
assert.throws(() => take.call({}, 1), TypeError);
assert.throws(() => take.call([], 1), TypeError);
assert.throws(() => take.call(createIterator([1, 2, 3]), -1), RangeError, 'negative');
assert.throws(() => take.call(createIterator([1, 2, 3]), NaN), RangeError, 'NaN');
});