94 lines
1.5 KiB
JavaScript
94 lines
1.5 KiB
JavaScript
import unionIntersect from "./unionIntersect";
|
|
|
|
const tests = [
|
|
[
|
|
"merges identical arrays",
|
|
[
|
|
[1, 2, 3, 4, 5],
|
|
[1, 2, 3, 4, 5],
|
|
[1, 2, 3, 4, 5],
|
|
],
|
|
[1, 2, 3, 4, 5],
|
|
],
|
|
[
|
|
"merges arrays with smaller initial array",
|
|
[
|
|
[1, 2, 4, 5],
|
|
[1, 2, 3, 4, 5],
|
|
[1, 2, 3, 4, 5],
|
|
],
|
|
[1, 2, 4, 5],
|
|
],
|
|
[
|
|
"merges arrays with larger initial array",
|
|
[
|
|
[1, 2, 3, 4, 5, 6, 7],
|
|
[1, 2, 3, 4, 5],
|
|
[1, 2, 3, 4, 5],
|
|
],
|
|
[1, 2, 3, 4, 5],
|
|
],
|
|
[
|
|
"merges arrays with empty initial array",
|
|
[
|
|
[],
|
|
[1, 2, 3, 4, 5],
|
|
[1, 2, 3, 4, 5],
|
|
],
|
|
[],
|
|
],
|
|
[
|
|
"merges arrays with empty array",
|
|
[
|
|
[1, 2, 3, 4, 5],
|
|
[],
|
|
[1, 2, 3, 4, 5],
|
|
],
|
|
[],
|
|
],
|
|
[
|
|
"merges arrays with empty array",
|
|
[
|
|
[1, 2, 3, 4, 5],
|
|
[],
|
|
[1, 2, 3, 4, 5],
|
|
],
|
|
[],
|
|
],
|
|
[
|
|
"merges arrays with no overlap",
|
|
[
|
|
[1, 2, 3],
|
|
[4, 5, 6],
|
|
[7, 8, 9],
|
|
],
|
|
[],
|
|
],
|
|
[
|
|
"merges arrays with some overlap",
|
|
[
|
|
[1, 2, 3, 4, 5, 6],
|
|
[4, 5, 6, 7, 8, 9],
|
|
[6, 7, 8, 9, 10, 11, 12],
|
|
],
|
|
[6],
|
|
],
|
|
[
|
|
"does not support objects",
|
|
[
|
|
[{ key: "value" }, { key: "value2" }],
|
|
[{ key: "value" }, { key: "value3" }],
|
|
[{ key: "value" }, { key: "value4" }],
|
|
],
|
|
[],
|
|
],
|
|
];
|
|
|
|
describe("unionIntersect", () => {
|
|
tests.forEach(([desc, arrays, expected]) => {
|
|
it(desc, () => {
|
|
expect(unionIntersect(...arrays)).toStrictEqual(expected);
|
|
});
|
|
});
|
|
});
|