Extract cartesian test into test file
[incubator-annotator.git] / packages / range / test / cartesian.mjs
1 import { product } from '../lib/cartesian.mjs';
2
3 async function* gen1() {
4   yield 1;
5   yield Promise.resolve(2);
6   yield 3;
7 }
8
9 async function* gen2() {
10   yield 4;
11 }
12
13 async function* gen3() {
14   yield 5;
15   yield 6;
16 }
17
18 describe('cartesian', () => {
19   describe('product', () => {
20     it('yields the cartesian product of the yielded items', async () => {
21       const cart = product(gen1(), gen2(), gen3());
22
23       const expected = [
24         [1, 4, 5],
25         [2, 4, 5],
26         [3, 4, 5],
27         [1, 4, 6],
28         [2, 4, 6],
29         [3, 4, 6],
30       ];
31
32       const result = [];
33       for await (let value of cart) {
34         result.push(value);
35       }
36
37       assert.sameDeepMembers(expected, result, 'yields the expected items');
38     });
39   });
40 });