UNPKG

ts-prime

Version:

A utility library for JavaScript and Typescript.

66 lines (65 loc) 2.27 kB
import { pipe } from './pipe'; import { map } from './map'; import { take } from './take'; import { filter } from './filter'; import { identity } from './identity'; it('should pipe a single operation', function () { var result = pipe(1, function (x) { return x * 2; }); expect(result).toEqual(2); }); it('should pipe operations', function () { var result = pipe(1, function (x) { return x * 2; }, function (x) { return x * 3; }); expect(result).toEqual(6); }); describe('lazy', function () { it('lazy map + take', function () { var count = jest.fn(); var result = pipe([1, 2, 3], map(function (x) { count(); return x * 10; }), take(2)); expect(count).toHaveBeenCalledTimes(2); expect(result).toEqual([10, 20]); }); it('lazy map + filter + take', function () { var count = jest.fn(); var result = pipe([1, 2, 3, 4, 5], map(function (x) { count(); return x * 10; }), filter(function (x) { return (x / 10) % 2 === 1; }), take(2)); expect(count).toHaveBeenCalledTimes(3); expect(result).toEqual([10, 30]); }); it('break lazy', function () { var count = jest.fn(); var result = pipe([1, 2, 3], map(function (x) { count(); return x * 10; }), function (x) { return x; }, take(2)); expect(count).toHaveBeenCalledTimes(3); expect(result).toEqual([10, 20]); }); it('multiple take', function () { var count = jest.fn(); var result = pipe([1, 2, 3], map(function (x) { count(); return x * 10; }), take(2), take(1)); expect(count).toHaveBeenCalledTimes(1); expect(result).toEqual([10]); }); it('multiple lazy', function () { var count = jest.fn(); var count2 = jest.fn(); var result = pipe([1, 2, 3, 4, 5, 6, 7], map(function (x) { count(); return x * 10; }), take(4), identity, map(function (x) { count2(); return x * 10; }), take(2)); expect(count).toHaveBeenCalledTimes(4); expect(count2).toHaveBeenCalledTimes(2); expect(result).toEqual([100, 200]); }); });