UNPKG

ts-prime

Version:

A utility library for JavaScript and Typescript.

72 lines (71 loc) 3.06 kB
import { pipe } from './pipe'; import { filter } from './filter'; import { createCounter } from './_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, 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, 2, 3, 'abc', true], isNumber); assertType(result); // Type test expect(result).toEqual([1, 2, 3]); }); it('filter.indexed', function () { var result = 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.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 = createCounter(); var result = pipe([1, 2, 3], 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 = createCounter(); var result = pipe([1, 2, 3], 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 = createCounter(); var result = pipe([1, 2, 3, false, 'text'], // Type (1 | 2 | 3 | false | "text")[] 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 = createCounter(); var result = pipe([1, 2, 3, false, 'text'], // Type (1 | 2 | 3 | false | "text")[] 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 = createCounter(); var result = pipe([1, 2, 3], 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]); }); });