UNPKG

spica

Version:

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

114 lines (106 loc) 2.91 kB
import { bundle, aggregate, assemble } from './arrow'; describe('Unit: lib/arrow', function () { describe('bundle', function () { it('', () => { const a = (s: string) => s; const b = (n: number) => n * 2; const c = () => undefined; assert.deepStrictEqual( bundle(a)(''), ['']); assert.deepStrictEqual( bundle(a, b)('1', 2), ['1', 4]); assert.deepStrictEqual( bundle(a, b, c, s => s)('1', 2, undefined, ''), ['1', 4, undefined, '']); assert.deepStrictEqual( bundle(c, c)(undefined, undefined), [undefined, undefined]); }); }); describe('aggregate', function () { it('', () => { const a = (s: string) => s; const b = (s: '1') => s.length * 2; const c = (_?: '1') => undefined; const d = () => undefined; assert.deepStrictEqual( aggregate(a)(''), ['']); assert.deepStrictEqual( aggregate(a, b)('1'), ['1', 2]); assert.deepStrictEqual( aggregate(a, b, c, d, s => s)('1'), ['1', 2, undefined, undefined, '1']); assert.deepStrictEqual( aggregate(c, d)(), [undefined, undefined]); assert.deepStrictEqual( aggregate(c, a)('1'), [undefined, '1']); assert.deepStrictEqual( aggregate(...aggregate( () => () => 0, () => () => 1, )())(), [0, 1]); }); }); describe('assemble', function () { it('', () => { assert.deepStrictEqual( assemble( () => () => 0, () => () => 1, )()(), [ { value: 0, done: true }, { value: 1, done: true }, ]); assert.deepStrictEqual( assemble(assemble( () => () => 0, () => () => 1, ))()(), [ { value: [{ value: 0, done: true }, { value: 1, done: true }], done: true }, ]); assert.deepStrictEqual( assemble( () => () => 0, (_: number) => (_?: Error) => 1, )(0)(new Error()), [ { value: 0, done: true }, { value: 1, done: true }, ]); assert.deepStrictEqual( assemble( () => () => 0, () => () => 1, () => () => 2, () => () => 3, () => () => 4, () => () => 5, () => () => 6, () => () => 7, () => () => 8, () => () => 9, )()(), [ { value: 0, done: true }, { value: 1, done: true }, { value: 2, done: true }, { value: 3, done: true }, { value: 4, done: true }, { value: 5, done: true }, { value: 6, done: true }, { value: 7, done: true }, { value: 8, done: true }, { value: 9, done: true }, ]); }); }); });