项目文件夹

文件
wehub-resource-sync c48612c494
CI / E2E Tests (push) Has been cancelled
CI / Lint, Typecheck & Unit Tests (push) Has been cancelled
Docs Build / Build docs site (push) Has been cancelled
Publish @openmaic packages / Build, validate & publish (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:03:23 +08:00

46 行
1.4 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { uniqAlignLines, type AlignLine } from '@/lib/utils/element';
describe('uniqAlignLines', () => {
it('dedupes by value and merges ranges to the outer bounds', () => {
const lines: AlignLine[] = [
{ value: 10, range: [0, 5] },
{ value: 20, range: [2, 8] },
{ value: 10, range: [3, 12] },
{ value: 10, range: [-1, 4] },
];
expect(uniqAlignLines(lines)).toEqual([
{ value: 10, range: [-1, 12] }, // min(0,3,-1) .. max(5,12,4)
{ value: 20, range: [2, 8] },
]);
});
it('preserves first-occurrence order', () => {
const lines: AlignLine[] = [
{ value: 30, range: [0, 1] },
{ value: 10, range: [0, 1] },
{ value: 20, range: [0, 1] },
{ value: 10, range: [0, 1] },
];
expect(uniqAlignLines(lines).map((l) => l.value)).toEqual([30, 10, 20]);
});
it('returns a single line unchanged', () => {
const lines: AlignLine[] = [{ value: 7, range: [1, 2] }];
expect(uniqAlignLines(lines)).toEqual([{ value: 7, range: [1, 2] }]);
});
it('returns [] for empty input', () => {
expect(uniqAlignLines([])).toEqual([]);
});
it('collapses many duplicates to the unique values (linear)', () => {
const lines: AlignLine[] = Array.from({ length: 5000 }, (_, i) => ({
value: i % 50,
range: [i, i + 1] as [number, number],
}));
expect(uniqAlignLines(lines)).toHaveLength(50);
});
});