import { map, flat, filter, reject, reduce, find } from '../Array'; import { none, some } from '../Option'; describe('map', () => { it('works', () => { expect(map((num: number) => num * 2)([1, 2, 3, 4])).toEqual([2, 4, 6, 8]); }); }); describe('filter', () => { it('works', () => { expect(filter((num: number) => num % 2 === 0)([1, 2, 3, 4])).toEqual([ 2, 4, ]); }); }); describe('reject', () => { it('works', () => { expect(reject((num: number) => num % 2 === 0)([1, 2, 3, 4])).toEqual([ 1, 3, ]); }); }); describe('find', () => { it('returns value when found the item', () => { expect(find((num: number) => num % 2 === 0)([1, 2, 3, 4])).toEqual(some(2)); }); it('returns none when the item is not found', () => { expect(find((num: number) => num % 2 === 100)([1, 2, 3, 4])).toEqual(none); }); }); describe('reduce', () => { it('works', () => { expect( reduce((acc: number, curr: number) => acc + curr, 0)([1, 2, 3, 4]) ).toEqual(10); }); }); describe('flat', () => { it('flattens the nested arrays', () => { expect( flat([ [1, 2], [3, 4], ]) ).toEqual([1, 2, 3, 4]); }); });