Files
server/src/util/util/extensions/Array.test.ts
T
2025-11-25 23:34:20 -06:00

56 lines
1.3 KiB
TypeScript

import moduleAlias from "module-alias";
moduleAlias();
import "./Array";
import { describe, it } from "node:test";
import assert from "node:assert/strict";
describe("Array extensions", () => {
it("partition", () => {
const arr = [1, 2, 3, 4, 5];
const [even, odd] = arr.partition((n) => n % 2 === 0);
assert.deepEqual(even, [2, 4]);
assert.deepEqual(odd, [1, 3, 5]);
});
it("forEachAsync", async () => {
const arr = [1, 2, 3];
let sum = 0;
await arr.forEachAsync(async (n) => {
sum += n;
});
assert.strictEqual(sum, 6);
});
it("filterAsync", async () => {
const arr = [1, 2, 3, 4, 5];
const even = await arr.filterAsync(async (n) => n % 2 === 0);
assert.deepEqual(even, [2, 4]);
});
it("remove", () => {
const arr = [1, 2, 3, 4, 5];
arr.remove(3);
assert.deepEqual(arr, [1, 2, 4, 5]);
arr.remove(6);
assert.deepEqual(arr, [1, 2, 4, 5]);
});
it("distinct", () => {
const arr = [1, 2, 2, 3, 3, 3];
assert.deepEqual(arr.distinct(), [1, 2, 3]);
assert.deepEqual([].distinct(), []);
});
it("distinctBy", () => {
const arr = [{ id: 1 }, { id: 2 }, { id: 1 }, { id: 3 }];
assert.deepEqual(
arr.distinctBy((x) => x.id),
[{ id: 1 }, { id: 2 }, { id: 3 }],
);
assert.deepEqual(
[].distinctBy((x) => x),
[],
);
});
});