Menu
Public repository / 10d19fe0941c186ec244d1f0e2af6b19200dcb0c
AkurAI-Mail / src/lib/webmail/virtual.test.ts
Latest change 22202d1bde69be4ace8a299dffd91f8ff24378df - Recover deployed webmail frontend (frontend parity with EC2 a6afffc) by Ólafur Búi Ólafsson
import { describe, expect, test } from "bun:test";
import { indexAt, threadOffsets, visibleRange } from "./virtual";
describe("virtual list", () => {
const offsets = threadOffsets([100, 100, 200, 100, 100], (h) => h);
test("prefix sums give item tops and total height", () => {
expect(offsets).toEqual([0, 100, 200, 400, 500, 600]);
});
test("finds the item under a pixel", () => {
expect(indexAt(offsets, 0)).toBe(0);
expect(indexAt(offsets, 199)).toBe(1);
expect(indexAt(offsets, 250)).toBe(2);
expect(indexAt(offsets, 599)).toBe(4);
expect(indexAt([0], 10)).toBe(0);
});
test("renders the viewport plus overscan", () => {
expect(visibleRange(offsets, 250, 100, 0)).toEqual({ start: 2, end: 3 });
expect(visibleRange(offsets, 250, 100, 1)).toEqual({ start: 1, end: 4 });
expect(visibleRange(offsets, 0, 10_000, 6)).toEqual({ start: 0, end: 5 });
});
});