mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-09-19 19:08:11 +08:00
141 lines
4.5 KiB
JavaScript
141 lines
4.5 KiB
JavaScript
// jshint esversion: 6
|
|
|
|
const PositiveIntervals = require("../../src/util/typedCrossfilter/positiveIntervals");
|
|
|
|
describe("canonicalize", () => {
|
|
test("empty", () => {
|
|
expect(PositiveIntervals.canonicalize([])).toEqual([]);
|
|
});
|
|
|
|
test("simple, already correct", () => {
|
|
expect(PositiveIntervals.canonicalize([[0, 1]])).toEqual([[0, 1]]);
|
|
expect(PositiveIntervals.canonicalize([[0, 1], [2, 3]])).toEqual([
|
|
[0, 1],
|
|
[2, 3]
|
|
]);
|
|
});
|
|
|
|
test("non-canonical, need to be canonicalized", () => {
|
|
expect(PositiveIntervals.canonicalize([[0, 1], [1, 2]])).toEqual([[0, 2]]);
|
|
expect(PositiveIntervals.canonicalize([[1, 2], [2, 3]])).toEqual([[1, 3]]);
|
|
});
|
|
});
|
|
|
|
describe("union", () => {
|
|
test("empty range", () => {
|
|
expect(PositiveIntervals.union([], [])).toEqual([]);
|
|
expect(PositiveIntervals.union([], [[1, 2]])).toEqual([[1, 2]]);
|
|
expect(PositiveIntervals.union([], [[1, 2], [3, 4]])).toEqual([
|
|
[1, 2],
|
|
[3, 4]
|
|
]);
|
|
expect(PositiveIntervals.union([[3, 4]], [])).toEqual([[3, 4]]);
|
|
expect(PositiveIntervals.union([[1, 2], [3, 4]], [])).toEqual([
|
|
[1, 2],
|
|
[3, 4]
|
|
]);
|
|
expect(PositiveIntervals.union([[3, 3]], [])).toEqual([[3, 3]]);
|
|
expect(PositiveIntervals.union([], [[3, 3]])).toEqual([[3, 3]]);
|
|
});
|
|
|
|
test("simple ranges", () => {
|
|
expect(PositiveIntervals.union([[1, 2]], [[2, 3]])).toEqual([[1, 3]]);
|
|
expect(PositiveIntervals.union([[2, 3]], [[1, 2]])).toEqual([[1, 3]]);
|
|
expect(PositiveIntervals.union([[1, 2]], [[3, 4]])).toEqual([
|
|
[1, 2],
|
|
[3, 4]
|
|
]);
|
|
expect(
|
|
PositiveIntervals.union([[1, 2], [3, 4]], [[6, 7], [19, 40]])
|
|
).toEqual([[1, 2], [3, 4], [6, 7], [19, 40]]);
|
|
expect(PositiveIntervals.union([[1, 4]], [[1, 1], [3, 4]])).toEqual([
|
|
[1, 4]
|
|
]);
|
|
expect(PositiveIntervals.union([[3, 3]], [[4, 4]])).toEqual([
|
|
[3, 3],
|
|
[4, 4]
|
|
]);
|
|
});
|
|
});
|
|
|
|
describe("intersection", () => {
|
|
test("empty range", () => {
|
|
expect(PositiveIntervals.intersection([], [])).toEqual([]);
|
|
expect(PositiveIntervals.intersection([], [[1, 2]])).toEqual([]);
|
|
expect(PositiveIntervals.intersection([[1, 2]], [])).toEqual([]);
|
|
});
|
|
|
|
test("simple", () => {
|
|
expect(PositiveIntervals.intersection([[1, 2]], [[2, 3]])).toEqual([]);
|
|
expect(PositiveIntervals.intersection([[2, 3]], [[1, 2]])).toEqual([]);
|
|
expect(PositiveIntervals.intersection([[1, 10]], [[1, 10]])).toEqual([
|
|
[1, 10]
|
|
]);
|
|
expect(PositiveIntervals.intersection([[1, 10]], [[2, 8]])).toEqual([
|
|
[2, 8]
|
|
]);
|
|
expect(PositiveIntervals.intersection([[2, 8]], [[1, 10]])).toEqual([
|
|
[2, 8]
|
|
]);
|
|
expect(PositiveIntervals.intersection([[1, 10]], [[2, 12]])).toEqual([
|
|
[2, 10]
|
|
]);
|
|
expect(PositiveIntervals.intersection([[2, 12]], [[1, 10]])).toEqual([
|
|
[2, 10]
|
|
]);
|
|
expect(PositiveIntervals.intersection([[1, 10]], [[1, 8]])).toEqual([
|
|
[1, 8]
|
|
]);
|
|
expect(PositiveIntervals.intersection([[1, 8]], [[1, 10]])).toEqual([
|
|
[1, 8]
|
|
]);
|
|
expect(PositiveIntervals.intersection([[1, 10]], [[1, 2], [6, 9]])).toEqual(
|
|
[[1, 2], [6, 9]]
|
|
);
|
|
expect(PositiveIntervals.intersection([[0, 2638]], [[1363, 2638]])).toEqual(
|
|
[[1363, 2638]]
|
|
);
|
|
expect(PositiveIntervals.intersection([[1, 2]], [[1, 2]])).toEqual([
|
|
[1, 2]
|
|
]);
|
|
});
|
|
});
|
|
|
|
describe("difference", () => {
|
|
test("empty", () => {
|
|
expect(PositiveIntervals.difference([], [])).toEqual([]);
|
|
expect(PositiveIntervals.difference([], [[1, 10]])).toEqual([]);
|
|
expect(PositiveIntervals.difference([[1, 10]], [])).toEqual([[1, 10]]);
|
|
});
|
|
|
|
test("simple", () => {
|
|
expect(PositiveIntervals.difference([[1, 2], [3, 4]], [])).toEqual([
|
|
[1, 2],
|
|
[3, 4]
|
|
]);
|
|
expect(PositiveIntervals.difference([[1, 2], [3, 10]], [[5, 10]])).toEqual([
|
|
[1, 2],
|
|
[3, 5]
|
|
]);
|
|
expect(PositiveIntervals.difference([[1, 2], [3, 10]], [[0, 5]])).toEqual([
|
|
[5, 10]
|
|
]);
|
|
expect(
|
|
PositiveIntervals.difference([[0, 2638]], [[0, 1363], [2055, 2638]])
|
|
).toEqual([[1363, 2055]]);
|
|
expect(
|
|
PositiveIntervals.difference([[0, 1363], [2055, 2638]], [[0, 2638]])
|
|
).toEqual([]);
|
|
expect(PositiveIntervals.difference([[0, 10]], [[0, 1]])).toEqual([
|
|
[1, 10]
|
|
]);
|
|
expect(PositiveIntervals.difference([[0, 10]], [[1, 2]])).toEqual([
|
|
[0, 1],
|
|
[2, 10]
|
|
]);
|
|
expect(PositiveIntervals.difference([[0, 10]], [[9, 10]])).toEqual([
|
|
[0, 9]
|
|
]);
|
|
});
|
|
});
|