AkurAI Build
Menu

Public repository / 054e5cda0171bd13facff3c16a38f2048a1052cc

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 });
  });
});