1*8d3f3824SCedric van Puttenimport { findLastIndex, groupBy, intersecting, replaceValue } from '../array';
28d307f52SEvan Bacon
38d307f52SEvan Bacondescribe(findLastIndex, () => {
48d307f52SEvan Bacon  it('should return the last index of an item based on a given criteria', () => {
58d307f52SEvan Bacon    const array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
68d307f52SEvan Bacon    const predicate = (item: number) => item % 2 === 0;
78d307f52SEvan Bacon    expect(findLastIndex(array, predicate)).toBe(9);
88d307f52SEvan Bacon  });
98d307f52SEvan Bacon});
108d307f52SEvan Bacon
118d307f52SEvan Bacondescribe(intersecting, () => {
128d307f52SEvan Bacon  it('should return a list of items that intersect between two given arrays', () => {
138d307f52SEvan Bacon    const a = [1, 2, 3];
148d307f52SEvan Bacon    const b = [1, 2, 3, 4, 5, 6];
158d307f52SEvan Bacon    expect(intersecting(a, b)).toEqual([1, 2, 3]);
168d307f52SEvan Bacon  });
178d307f52SEvan Bacon});
183d6e487dSEvan Bacon
193d6e487dSEvan Bacondescribe(replaceValue, () => {
203d6e487dSEvan Bacon  it(`should replace a value in an array`, () => {
213d6e487dSEvan Bacon    expect(replaceValue([1, 2, 3], 1, 2)).toEqual([2, 2, 3]);
223d6e487dSEvan Bacon    expect(replaceValue([1, 2, 3], 4, 5)).toEqual([1, 2, 3]);
233d6e487dSEvan Bacon  });
243d6e487dSEvan Bacon});
25*8d3f3824SCedric van Putten
26*8d3f3824SCedric van Puttendescribe(groupBy, () => {
27*8d3f3824SCedric van Putten  it(`should group list items by returned key`, () => {
28*8d3f3824SCedric van Putten    expect(
29*8d3f3824SCedric van Putten      groupBy([{ name: 'John' }, { name: 'Wick' }], (character) => character.name)
30*8d3f3824SCedric van Putten    ).toMatchObject({
31*8d3f3824SCedric van Putten      John: [{ name: 'John' }],
32*8d3f3824SCedric van Putten      Wick: [{ name: 'Wick' }],
33*8d3f3824SCedric van Putten    });
34*8d3f3824SCedric van Putten  });
35*8d3f3824SCedric van Putten});
36