UNPKG

spica

Version:

Supervisor, Coroutine, Channel, select, AtomicPromise, Cancellation, Cache, List, Queue, Stack, and some utils.

51 lines (43 loc) 1.76 kB
import { Sequence } from '../../../sequence'; import { nat } from '../../../sequence.test'; describe('Unit: lib/monad/sequence/member/intersect/', () => { const double = nat.map(n => n * 2); const triple = nat.map(n => n * 3); describe('Sequence.intersect', () => { it('unlimited', () => { assert.deepStrictEqual( Sequence.intersect(double, triple, (a, b) => a - b).take(3).extract(), [0, 6, 12]); assert.deepStrictEqual( Sequence.intersect(double.map(n => -n), triple.map(n => -n), (a, b) => b - a).take(3).extract(), [0, 6, 12].map(n => -n)); }); it('same', () => { assert.deepStrictEqual( Sequence.intersect(double, triple, (a, b) => a - b).take(3).extract(), [0, 6, 12]); assert.deepStrictEqual( Sequence.intersect(double.map(n => -n), triple.map(n => -n), (a, b) => b - a).take(3).extract(), [0, 6, 12].map(n => -n)); }); it('mismatch', () => { assert.deepStrictEqual( Sequence.intersect(double.dropWhile(n => n < 6).takeUntil(n => n === 12), triple, (a, b) => a - b).take(2).extract(), [6, 12]); assert.deepStrictEqual( Sequence.intersect(triple, double.dropWhile(n => n < 6).takeUntil(n => n === 12), (a, b) => a - b).take(2).extract(), [6, 12]); }); it('empty', () => { assert.deepStrictEqual( Sequence.intersect(nat, Sequence.from([]), (a, b) => a - b).take(3).extract(), []); assert.deepStrictEqual( Sequence.intersect(Sequence.from([]), nat, (a, b) => a - b).take(3).extract(), []); assert.deepStrictEqual( Sequence.intersect(Sequence.from([]), Sequence.from([]), () => 0).take(3).extract(), []); }); }); });