Skip to content

Commit 36c0b8d

Browse files
committed
add tests for Iterator.concat
1 parent 8325bc2 commit 36c0b8d

File tree

2 files changed

+152
-0
lines changed

2 files changed

+152
-0
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import { createIterable, createIterator } from '../helpers/helpers.js';
2+
3+
const { from } = Array;
4+
5+
QUnit.test('Iterator.concat', assert => {
6+
const { concat } = Iterator;
7+
8+
assert.isFunction(concat);
9+
assert.arity(concat, 0);
10+
assert.name(concat, 'concat');
11+
assert.looksNative(concat);
12+
assert.nonEnumerable(Iterator, 'concat');
13+
14+
let iterator = concat();
15+
assert.isIterable(iterator, 'iterable, no args');
16+
assert.isIterator(iterator, 'iterator, no args');
17+
assert.true(iterator instanceof Iterator, 'iterator instance, no args');
18+
assert.arrayEqual(from(iterator), [], 'proper values, no args');
19+
20+
iterator = concat([1, 2, 3]);
21+
assert.isIterable(iterator, 'iterable, array');
22+
assert.isIterator(iterator, 'iterator, array');
23+
assert.true(iterator instanceof Iterator, 'iterator instance, array');
24+
assert.arrayEqual(from(iterator), [1, 2, 3], 'proper values, array');
25+
26+
iterator = concat([]);
27+
assert.isIterable(iterator, 'iterable, empty array');
28+
assert.isIterator(iterator, 'iterator, empty array');
29+
assert.true(iterator instanceof Iterator, 'iterator instance, empty array');
30+
assert.arrayEqual(from(iterator), [], 'proper values, empty array');
31+
32+
iterator = concat(createIterable([1, 2, 3]));
33+
assert.isIterable(iterator, 'iterable, custom iterable');
34+
assert.isIterator(iterator, 'iterator, custom iterable');
35+
assert.true(iterator instanceof Iterator, 'iterator instance, custom iterable');
36+
assert.arrayEqual(from(iterator), [1, 2, 3], 'proper values, custom iterable');
37+
38+
iterator = concat([1, 2, 3], [], createIterable([4, 5, 6]), createIterable([]));
39+
assert.isIterable(iterator, 'iterable, mixed');
40+
assert.isIterator(iterator, 'iterator, mixed');
41+
assert.true(iterator instanceof Iterator, 'iterator instance, mixed');
42+
assert.arrayEqual(from(iterator), [1, 2, 3, 4, 5, 6], 'proper values, mixed');
43+
44+
iterator = concat(createIterable([1, 2, 3]));
45+
iterator.next();
46+
assert.deepEqual(iterator.return(), { done: true, value: undefined }, '.return with no active inner iterator result');
47+
assert.deepEqual(iterator.next(), { done: true, value: undefined }, '.return with no active inner iterator result on closed iterator');
48+
49+
iterator = concat(createIterable([1, 2, 3]));
50+
assert.deepEqual(iterator.next(), { done: false, value: 1 }, '.next with active inner iterator result');
51+
assert.deepEqual(iterator.return(), { done: true, value: undefined }, '.return with active inner iterator result');
52+
assert.deepEqual(iterator.next(), { done: true, value: undefined }, '.return with active inner iterator result on closed iterator');
53+
54+
let called = false;
55+
iterator = concat(createIterable([1, 2, 3], {
56+
return() {
57+
called = true;
58+
return {};
59+
},
60+
}));
61+
iterator.next();
62+
assert.deepEqual(iterator.return(), { done: true, value: undefined }, '.return with active inner iterator with return result');
63+
assert.true(called, 'inner .return called');
64+
65+
assert.throws(() => concat(createIterator([1, 2, 3])), TypeError, 'non-iterable iterator #1');
66+
assert.throws(() => concat([], createIterator([1, 2, 3])), TypeError, 'non-iterable iterator #2');
67+
assert.throws(() => concat(''), TypeError, 'iterable non-object argument #1');
68+
assert.throws(() => concat([], ''), TypeError, 'iterable non-object argument #2');
69+
assert.throws(() => concat(undefined), TypeError, 'non-iterable-object argument #1');
70+
assert.throws(() => concat(null), TypeError, 'non-iterable-object argument #2');
71+
assert.throws(() => concat(1), TypeError, 'non-iterable-object argument #3');
72+
assert.throws(() => concat({}), TypeError, 'non-iterable-object argument #4');
73+
assert.throws(() => concat([], undefined), TypeError, 'non-iterable-object argument #5');
74+
assert.throws(() => concat([], null), TypeError, 'non-iterable-object argument #6');
75+
assert.throws(() => concat([], 1), TypeError, 'non-iterable-object argument #7');
76+
assert.throws(() => concat([], {}), TypeError, 'non-iterable-object argument #8');
77+
});
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import { createIterable, createIterator } from '../helpers/helpers.js';
2+
3+
import concat from 'core-js-pure/full/iterator/concat';
4+
import Iterator from 'core-js-pure/full/iterator';
5+
import from from 'core-js-pure/es/array/from';
6+
7+
QUnit.test('Iterator.concat', assert => {
8+
assert.isFunction(concat);
9+
assert.arity(concat, 0);
10+
assert.name(concat, 'concat');
11+
12+
let iterator = concat();
13+
assert.isIterable(iterator, 'iterable, no args');
14+
assert.isIterator(iterator, 'iterator, no args');
15+
assert.true(iterator instanceof Iterator, 'iterator instance, no args');
16+
assert.arrayEqual(from(iterator), [], 'proper values, no args');
17+
18+
iterator = concat([1, 2, 3]);
19+
assert.isIterable(iterator, 'iterable, array');
20+
assert.isIterator(iterator, 'iterator, array');
21+
assert.true(iterator instanceof Iterator, 'iterator instance, array');
22+
assert.arrayEqual(from(iterator), [1, 2, 3], 'proper values, array');
23+
24+
iterator = concat([]);
25+
assert.isIterable(iterator, 'iterable, empty array');
26+
assert.isIterator(iterator, 'iterator, empty array');
27+
assert.true(iterator instanceof Iterator, 'iterator instance, empty array');
28+
assert.arrayEqual(from(iterator), [], 'proper values, empty array');
29+
30+
iterator = concat(createIterable([1, 2, 3]));
31+
assert.isIterable(iterator, 'iterable, custom iterable');
32+
assert.isIterator(iterator, 'iterator, custom iterable');
33+
assert.true(iterator instanceof Iterator, 'iterator instance, custom iterable');
34+
assert.arrayEqual(from(iterator), [1, 2, 3], 'proper values, custom iterable');
35+
36+
iterator = concat([1, 2, 3], [], createIterable([4, 5, 6]), createIterable([]));
37+
assert.isIterable(iterator, 'iterable, mixed');
38+
assert.isIterator(iterator, 'iterator, mixed');
39+
assert.true(iterator instanceof Iterator, 'iterator instance, mixed');
40+
assert.arrayEqual(from(iterator), [1, 2, 3, 4, 5, 6], 'proper values, mixed');
41+
42+
iterator = concat(createIterable([1, 2, 3]));
43+
iterator.next();
44+
assert.deepEqual(iterator.return(), { done: true, value: undefined }, '.return with no active inner iterator result');
45+
assert.deepEqual(iterator.next(), { done: true, value: undefined }, '.return with no active inner iterator result on closed iterator');
46+
47+
iterator = concat(createIterable([1, 2, 3]));
48+
assert.deepEqual(iterator.next(), { done: false, value: 1 }, '.next with active inner iterator result');
49+
assert.deepEqual(iterator.return(), { done: true, value: undefined }, '.return with active inner iterator result');
50+
assert.deepEqual(iterator.next(), { done: true, value: undefined }, '.return with active inner iterator result on closed iterator');
51+
52+
let called = false;
53+
iterator = concat(createIterable([1, 2, 3], {
54+
return() {
55+
called = true;
56+
return {};
57+
},
58+
}));
59+
iterator.next();
60+
assert.deepEqual(iterator.return(), { done: true, value: undefined }, '.return with active inner iterator with return result');
61+
assert.true(called, 'inner .return called');
62+
63+
assert.throws(() => concat(createIterator([1, 2, 3])), TypeError, 'non-iterable iterator #1');
64+
assert.throws(() => concat([], createIterator([1, 2, 3])), TypeError, 'non-iterable iterator #2');
65+
assert.throws(() => concat(''), TypeError, 'iterable non-object argument #1');
66+
assert.throws(() => concat([], ''), TypeError, 'iterable non-object argument #2');
67+
assert.throws(() => concat(undefined), TypeError, 'non-iterable-object argument #1');
68+
assert.throws(() => concat(null), TypeError, 'non-iterable-object argument #2');
69+
assert.throws(() => concat(1), TypeError, 'non-iterable-object argument #3');
70+
assert.throws(() => concat({}), TypeError, 'non-iterable-object argument #4');
71+
assert.throws(() => concat([], undefined), TypeError, 'non-iterable-object argument #5');
72+
assert.throws(() => concat([], null), TypeError, 'non-iterable-object argument #6');
73+
assert.throws(() => concat([], 1), TypeError, 'non-iterable-object argument #7');
74+
assert.throws(() => concat([], {}), TypeError, 'non-iterable-object argument #8');
75+
});

0 commit comments

Comments
 (0)