UNPKG

ts-prime

Version:

A utility library for JavaScript and Typescript.

68 lines (67 loc) 2.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var pipe_1 = require("./pipe"); var map_1 = require("./map"); var take_1 = require("./take"); var filter_1 = require("./filter"); var identity_1 = require("./identity"); it('should pipe a single operation', function () { var result = pipe_1.pipe(1, function (x) { return x * 2; }); expect(result).toEqual(2); }); it('should pipe operations', function () { var result = pipe_1.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.pipe([1, 2, 3], map_1.map(function (x) { count(); return x * 10; }), take_1.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.pipe([1, 2, 3, 4, 5], map_1.map(function (x) { count(); return x * 10; }), filter_1.filter(function (x) { return (x / 10) % 2 === 1; }), take_1.take(2)); expect(count).toHaveBeenCalledTimes(3); expect(result).toEqual([10, 30]); }); it('break lazy', function () { var count = jest.fn(); var result = pipe_1.pipe([1, 2, 3], map_1.map(function (x) { count(); return x * 10; }), function (x) { return x; }, take_1.take(2)); expect(count).toHaveBeenCalledTimes(3); expect(result).toEqual([10, 20]); }); it('multiple take', function () { var count = jest.fn(); var result = pipe_1.pipe([1, 2, 3], map_1.map(function (x) { count(); return x * 10; }), take_1.take(2), take_1.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.pipe([1, 2, 3, 4, 5, 6, 7], map_1.map(function (x) { count(); return x * 10; }), take_1.take(4), identity_1.identity, map_1.map(function (x) { count2(); return x * 10; }), take_1.take(2)); expect(count).toHaveBeenCalledTimes(4); expect(count2).toHaveBeenCalledTimes(2); expect(result).toEqual([100, 200]); }); });