UNPKG

moy-fp

Version:
352 lines (204 loc) 4.88 kB
import __ from '../../src/Function/__' /** * ((a, b, c, ..., m) -> n) -> ((a, b, c, ..., m) -> n) */ import curry from '../../src/Function/curry' test('curry(not using __), the original arity is 0', () => { let fn = curry(() => 1) expect(fn.length).toBe(0) expect( fn() ).toBe(1) }) test('curry(not using __), the original arity is 1', () => { let fn = curry(a => a) expect(fn.length).toBe(1) expect( fn(1) ).toBe(1) }) test('curry(not using __), the original arities are 2', () => { let fn = curry((a, b) => a + b) expect(fn.length).toBe(2) fn = fn(1) expect(fn.length).toBe(1) expect( fn(2) ).toBe(3) }) test('curry(not using __), the original arities are 3', () => { let fn = curry((a, b, c) => a + b + c) expect(fn.length).toBe(3) fn = fn(1) expect(fn.length).toBe(2) fn = fn(2) expect(fn.length).toBe(1) expect( fn(3) ).toBe(6) }) test('curry(not using __), the original arities are 4', () => { let fn = curry((a, b, c, d) => a + b + c + d) expect(fn.length).toBe(4) fn = fn(1) expect(fn.length).toBe(3) fn = fn(2) expect(fn.length).toBe(2) fn = fn(3) expect(fn.length).toBe(1) expect( fn(4) ).toBe(10) }) test('curry(not using __), the original arities are 5', () => { let fn = curry((a, b, c, d, e) => a + b + c + d + e) expect(fn.length).toBe(5) fn = fn(1) expect(fn.length).toBe(4) fn = fn(2) expect(fn.length).toBe(3) fn = fn(3) expect(fn.length).toBe(2) fn = fn(4) expect(fn.length).toBe(1) expect( fn(5) ).toBe(15) }) test('curry(not using __), the original arities are 6', () => { let fn = curry((a, b, c, d, e, f) => a + b + c + d + e + f) expect(fn.length).toBe(6) fn = fn(1) expect(fn.length).toBe(5) fn = fn(2) expect(fn.length).toBe(4) fn = fn(3) expect(fn.length).toBe(3) fn = fn(4) expect(fn.length).toBe(2) fn = fn(5) expect(fn.length).toBe(1) expect( fn(6) ).toBe(21) }) test('curry(not using __), the original arities are 7', () => { let fn = curry((a, b, c, d, e, f, g) => a + b + c + d + e + f + g) expect(fn.length).toBe(7) fn = fn(1) expect(fn.length).toBe(6) fn = fn(2) expect(fn.length).toBe(5) fn = fn(3) expect(fn.length).toBe(4) fn = fn(4) expect(fn.length).toBe(3) fn = fn(5) expect(fn.length).toBe(2) fn = fn(6) expect(fn.length).toBe(1) expect( fn(7) ).toBe(28) }) test('curry(not using __), the original arities are 8', () => { let fn = curry((a, b, c, d, e, f, g, h) => a + b + c + d + e + f + g + h) expect(fn.length).toBe(8) fn = fn(1) expect(fn.length).toBe(7) fn = fn(2) expect(fn.length).toBe(6) fn = fn(3) expect(fn.length).toBe(5) fn = fn(4) expect(fn.length).toBe(4) fn = fn(5) expect(fn.length).toBe(3) fn = fn(6) expect(fn.length).toBe(2) fn = fn(7) expect(fn.length).toBe(1) expect( fn(8) ).toBe(36) }) test('curry(not using __), the original arities are 9', () => { let fn = curry((a, b, c, d, e, f, g, h, i) => a + b + c + d + e + f + g + h + i) expect(fn.length).toBe(9) fn = fn(1) expect(fn.length).toBe(8) fn = fn(2) expect(fn.length).toBe(7) fn = fn(3) expect(fn.length).toBe(6) fn = fn(4) expect(fn.length).toBe(5) fn = fn(5) expect(fn.length).toBe(4) fn = fn(6) expect(fn.length).toBe(3) fn = fn(7) expect(fn.length).toBe(2) fn = fn(8) expect(fn.length).toBe(1) expect( fn(9) ).toBe(45) }) test('curry(not using __), the original arities are 10', () => { let fn = curry((a, b, c, d, e, f, g, h, i, j) => a + b + c + d + e + f + g + h + i + j) expect(fn.length).toBe(10) fn = fn(1) expect(fn.length).toBe(9) fn = fn(2) expect(fn.length).toBe(8) fn = fn(3) expect(fn.length).toBe(7) fn = fn(4) expect(fn.length).toBe(6) fn = fn(5) expect(fn.length).toBe(5) fn = fn(6) expect(fn.length).toBe(4) fn = fn(7) expect(fn.length).toBe(3) fn = fn(8) expect(fn.length).toBe(2) fn = fn(9) expect(fn.length).toBe(1) expect( fn(10) ).toBe(55) }) test('curry(not using __), the original arities are 11', () => { let fn = curry((a, b, c, d, e, f, g, h, i, j, k) => a + b + c + d + e + f + g + h + i + j + k) expect(fn.length).toBe(0) fn = fn(1) expect(fn.length).toBe(10) fn = fn(2) expect(fn.length).toBe(9) fn = fn(3) expect(fn.length).toBe(8) fn = fn(4) expect(fn.length).toBe(7) fn = fn(5) expect(fn.length).toBe(6) fn = fn(6) expect(fn.length).toBe(5) fn = fn(7) expect(fn.length).toBe(4) fn = fn(8) expect(fn.length).toBe(3) fn = fn(9) expect(fn.length).toBe(2) fn = fn(10) expect(fn.length).toBe(1) expect( fn(11) ).toBe(66) }) test('curry(using __)', () => { expect( curry((x, y) => x + y)(__, 2)(1) ).toBe(3) })