53 lines
1.3 KiB
JavaScript
53 lines
1.3 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* https://creativecommons.org/publicdomain/zero/1.0/
|
|
*/
|
|
|
|
"use strict";
|
|
|
|
const { Dedupe } = ChromeUtils.importESModule(
|
|
"resource:///modules/Dedupe.sys.mjs"
|
|
);
|
|
|
|
add_task(async function test_dedupe_group() {
|
|
let instance = new Dedupe();
|
|
|
|
// Should remove duplicates inside the groups
|
|
let beforeItems = [
|
|
[1, 1, 1],
|
|
[2, 2, 2],
|
|
[3, 3, 3],
|
|
];
|
|
let afterItems = [[1], [2], [3]];
|
|
Assert.deepEqual(
|
|
instance.group(...beforeItems),
|
|
afterItems,
|
|
"Should remove duplicates inside the groups"
|
|
);
|
|
|
|
// Should remove duplicates between groups, favoring earlier groups
|
|
beforeItems = [
|
|
[1, 2, 3],
|
|
[2, 3, 4],
|
|
[3, 4, 5],
|
|
];
|
|
afterItems = [[1, 2, 3], [4], [5]];
|
|
Assert.deepEqual(
|
|
instance.group(...beforeItems),
|
|
afterItems,
|
|
"Should remove duplicates between groups"
|
|
);
|
|
|
|
// Should remove duplicates from groups of objects
|
|
instance = new Dedupe(item => item.id);
|
|
beforeItems = [
|
|
[{ id: 1 }, { id: 1 }, { id: 2 }],
|
|
[{ id: 1 }, { id: 3 }, { id: 2 }],
|
|
[{ id: 1 }, { id: 2 }, { id: 5 }],
|
|
];
|
|
afterItems = [[{ id: 1 }, { id: 2 }], [{ id: 3 }], [{ id: 5 }]];
|
|
Assert.deepEqual(
|
|
instance.group(...beforeItems),
|
|
afterItems,
|
|
"Should remove duplicates from groups of objects"
|
|
);
|
|
});
|