ts-prime
Version:
A utility library for JavaScript and Typescript.
68 lines (67 loc) • 2.51 kB
JavaScript
;
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]);
});
});