UNPKG

geninq

Version:

A JavaScript version of the Linq library for Generators

197 lines (192 loc) 3.21 kB
import { SIt, AIt } from "../test-utils"; import "./group-by"; import "./select"; import "./array"; SIt( "Groups simple numbers", (s) => s .group_by((i) => i) .select((i) => [i[0], i[1].array()]) .array(), [ [1, [1]], [2, [2]], [3, [3]], ] ); AIt( "Groups simple numbers", (s) => s .group_by((i) => i) .select(async (i) => [i[0], await i[1].array()]) .array(), [ [1, [1]], [2, [2]], [3, [3]], ] ); SIt( "Groups on a custom comparitor", (s) => s .group_by( (i) => i, (a, b) => a.test === b.test ) .select((i) => [i[0], i[1].array()]) .array(), [ [ { test: 1, part: 1 }, [ { test: 1, part: 1 }, { test: 1, part: 3 }, ], ], [ { test: 2, part: 2 }, [ { test: 2, part: 2 }, { test: 2, part: 4 }, ], ], ], [ { test: 1, part: 1 }, { test: 2, part: 2 }, { test: 1, part: 3 }, { test: 2, part: 4 }, ] ); AIt( "Groups on a custom comparitor", (s) => s .group_by( (i) => i, (a, b) => a.test === b.test ) .select(async (i) => [i[0], await i[1].array()]) .array(), [ [ { test: 1, part: 1 }, [ { test: 1, part: 1 }, { test: 1, part: 3 }, ], ], [ { test: 2, part: 2 }, [ { test: 2, part: 2 }, { test: 2, part: 4 }, ], ], ], [ { test: 1, part: 1 }, { test: 2, part: 2 }, { test: 1, part: 3 }, { test: 2, part: 4 }, ] ); SIt( "Groups on a custom key", (s) => s .group_by((i) => i.test) .select((i) => [i[0], i[1].array()]) .array(), [ [ 1, [ { test: 1, part: 1 }, { test: 1, part: 3 }, ], ], [ 2, [ { test: 2, part: 2 }, { test: 2, part: 4 }, ], ], ], [ { test: 1, part: 1 }, { test: 2, part: 2 }, { test: 1, part: 3 }, { test: 2, part: 4 }, ] ); AIt( "Groups on a custom key", (s) => s .group_by((i) => i.test) .select(async (i) => [i[0], await i[1].array()]) .array(), [ [ 1, [ { test: 1, part: 1 }, { test: 1, part: 3 }, ], ], [ 2, [ { test: 2, part: 2 }, { test: 2, part: 4 }, ], ], ], [ { test: 1, part: 1 }, { test: 2, part: 2 }, { test: 1, part: 3 }, { test: 2, part: 4 }, ] ); SIt( "Builds a custom element", (s) => s .group_by({ key: (i) => i.test, element: (i) => i.part }) .select((i) => [i[0], i[1].array()]) .array(), [ [1, [1, 3]], [2, [2, 4]], ], [ { test: 1, part: 1 }, { test: 2, part: 2 }, { test: 1, part: 3 }, { test: 2, part: 4 }, ] ); AIt( "Groups on a custom key", (s) => s .group_by({ key: (i) => i.test, element: (i) => i.part }) .select(async (i) => [i[0], await i[1].array()]) .array(), [ [1, [1, 3]], [2, [2, 4]], ], [ { test: 1, part: 1 }, { test: 2, part: 2 }, { test: 1, part: 3 }, { test: 2, part: 4 }, ] );