geninq
Version:
A JavaScript version of the Linq library for Generators
197 lines (192 loc) • 3.21 kB
text/typescript
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 },
]
);