┌─ TS ───────────────────────────────────────────────────────────────────────┐
│ import { describe, expect, it } from "vitest"; │
│ import { buildSliderTrack } from "./Slider"; │
│ import { len } from "../../lib/ascii"; │
│ │
│ describe("buildSliderTrack", () => { │
│ it("renders the exact cell width", () => { │
│ expect(len(buildSliderTrack(50, 0, 100, 20))).toBe(20); │
│ }); │
│ │
│ it("pins the thumb to the ends at min and max", () => { │
│ expect(buildSliderTrack(0, 0, 100, 12)).toBe("├█─────────┤"); │
│ expect(buildSliderTrack(100, 0, 100, 12)).toBe("├─────────█┤"); │
│ }); │
│ │
│ it("centers the thumb at the midpoint", () => { │
│ const t = [...buildSliderTrack(50, 0, 100, 13)]; │
│ expect(t[6]).toBe("█"); │
│ }); │
│ │
│ it("clamps out-of-range values", () => { │
│ expect(buildSliderTrack(-10, 0, 100, 12)).toBe(buildSliderTrack(0, 0, 100, 12) │
│ ); │
│ expect(buildSliderTrack(250, 0, 100, 12)).toBe(buildSliderTrack(100, 0, 100, 1 │
│ 2)); │
│ }); │
│ }); │
└────────────────────────────────────────────────────────────────────────────────────┘
┌─ TS ─────────────────────────────────┐
│ import { describe, expect, it } from "vitest │
│ "; │
│ import { buildSliderTrack } from "./Slider"; │
│ import { len } from "../../lib/ascii"; │
│ │
│ describe("buildSliderTrack", () => { │
│ it("renders the exact cell width", () => { │
│ expect(len(buildSliderTrack(50, 0, 100, │
│ 20))).toBe(20); │
│ }); │
│ │
│ it("pins the thumb to the ends at min and │
│ max", () => { │
│ expect(buildSliderTrack(0, 0, 100, 12)). │
│ toBe("├█─────────┤"); │
│ expect(buildSliderTrack(100, 0, 100, 12) │
│ ).toBe("├─────────█┤"); │
│ }); │
│ │
│ it("centers the thumb at the midpoint", () │
│ => { │
│ const t = [...buildSliderTrack(50, 0, 10 │
│ 0, 13)]; │
│ expect(t[6]).toBe("█"); │
│ }); │
│ │
│ it("clamps out-of-range values", () => { │
│ expect(buildSliderTrack(-10, 0, 100, 12) │
│ ).toBe(buildSliderTrack(0, 0, 100, 12)); │
│ expect(buildSliderTrack(250, 0, 100, 12) │
│ ).toBe(buildSliderTrack(100, 0, 100, 12)); │
│ }); │
│ }); │
└──────────────────────────────────────────────┘