UNPKG

ts-prime

Version:

A utility library for JavaScript and Typescript.

74 lines (73 loc) 3.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var pipe_1 = require("./pipe"); var filter_1 = require("./filter"); var _counter_1 = require("./_counter"); function assertType(data) { return data; } function isNumber(data) { return typeof data === 'number'; } // TODO Refactor to remeda function describe('data_first', function () { it('filter', function () { var result = filter_1.filter([1, 2, 3], function (x) { return x % 2 === 1; }); assertType(result); // Type test expect(result).toEqual([1, 3]); }); it('data_first with typescript guard', function () { var result = filter_1.filter([1, 2, 3, 'abc', true], isNumber); assertType(result); // Type test expect(result).toEqual([1, 2, 3]); }); it('filter.indexed', function () { var result = filter_1.filter.indexed([1, 2, 3], function (x, i) { return x % 2 === 1 && i !== 1; }); assertType(result); // Type test expect(result).toEqual([1, 3]); }); it('filter.indexed with typescript guard', function () { var result = filter_1.filter.indexed([1, 2, 3, false, 'text'], // Type (1 | 2 | 3 | false | "text")[] isNumber); assertType(result); // Type test (1 | 2 | 3)[] expect(result).toEqual([1, 2, 3]); }); }); describe('data_last', function () { it('filter', function () { var counter = _counter_1.createCounter(); var result = pipe_1.pipe([1, 2, 3], filter_1.filter(function (x) { return x % 2 === 1; }), counter.fn()); expect(counter.count).toHaveBeenCalledTimes(2); assertType(result); // Type test (1 | 2 | 3)[] expect(result).toEqual([1, 3]); }); it('filter', function () { var counter = _counter_1.createCounter(); var result = pipe_1.pipe([1, 2, 3], filter_1.filter(function (x) { return x % 2 === 1; }), counter.fn()); expect(counter.count).toHaveBeenCalledTimes(2); assertType(result); // Type test (1 | 2 | 3)[] expect(result).toEqual([1, 3]); }); it('filter with typescript guard', function () { var counter = _counter_1.createCounter(); var result = pipe_1.pipe([1, 2, 3, false, 'text'], // Type (1 | 2 | 3 | false | "text")[] filter_1.filter(isNumber), counter.fn()); expect(counter.count).toHaveBeenCalledTimes(3); assertType(result); // Type test (1 | 2 | 3)[] expect(result).toEqual([1, 2, 3]); }); it('filter.indexed with typescript guard', function () { var counter = _counter_1.createCounter(); var result = pipe_1.pipe([1, 2, 3, false, 'text'], // Type (1 | 2 | 3 | false | "text")[] filter_1.filter.indexed(isNumber), counter.fn()); assertType(result); // Type test (1 | 2 | 3)[] expect(counter.count).toHaveBeenCalledTimes(3); expect(result).toEqual([1, 2, 3]); }); it('filter.indexed', function () { var counter = _counter_1.createCounter(); var result = pipe_1.pipe([1, 2, 3], filter_1.filter.indexed(function (x, i) { return x % 2 === 1 && i !== 1; }), counter.fn()); assertType(result); // Type test (1 | 2 | 3)[] expect(counter.count).toHaveBeenCalledTimes(2); expect(result).toEqual([1, 3]); }); });