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