UNPKG

spica

Version:

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

66 lines (52 loc) 2.04 kB
import { curry, uncurry } from './curry'; describe('Unit: lib/curry', () => { describe('curry', () => { it('1', () => { assert(curry((a: number) => a)(1) === 1); }); it('2', () => { assert(curry((a: number, b: number) => a + b)(1)(2) === 3); assert(curry((a: number, b: number) => a + b)(1, 2) === 3); }); it('3', () => { assert(curry((a: number, b: number, c: number) => a + b + c)(1)(2)(3) === 6); assert(curry((a: number, b: number, c: number) => a + b + c)(1, 2)(3) === 6); assert(curry((a: number, b: number, c: number) => a + b + c)(1)(2, 3) === 6); assert(curry((a: number, b: number, c: number) => a + b + c)(1, 2, 3) === 6); }); it('extra parameters', () => { assert.deepStrictEqual([1].map(curry((a: number) => a)), [1]); assert.deepStrictEqual([1].map(curry((a: number, b: number = NaN) => [a, b])), [[1, 0]]); }); it('recursive', () => { assert(curry(curry((a: number) => a))(1) === 1); assert(curry(curry((a: number, b: number) => a + b))(1)(2) === 3); assert(curry(curry((a: number, b: number) => a + b)(1))(2) === 3); }); it('generic', () => { assert(curry(<T extends 1, U extends 2>(a: T, b: U) => a + b)(1)(2) === 3); assert(curry(<T extends 1, U extends 2>(a: T, b: U) => a + b)(1, 2) === 3); }); }); describe('uncurry', () => { it('1', () => { assert.deepStrictEqual( uncurry((a: number) => [a])(1), [1]); }); it('2', () => { assert.deepStrictEqual( uncurry((a: number) => (b: number) => [a, b])(1, 2), [1, 2]); }); it('3', () => { assert.deepStrictEqual( uncurry((a: number) => (b: number) => (c: number) => [a, b, c])(1, 2, 3), [1, 2, 3]); }); it('extra parameters', () => { assert.deepStrictEqual([1].map(uncurry(curry((a: number) => a))), [1]); assert.deepStrictEqual([1].map(uncurry(curry((a: number, b: number = NaN) => [a, b]))), [[1, 0]]); }); }); });