Buckets:
| import { describe, expect, test } from "bun:test" | |
| import { createRoot, createSignal } from "solid-js" | |
| import { createSessionKeyReader, ensureSessionKey, pruneSessionKeys } from "./layout-helpers" | |
| describe("layout session-key helpers", () => { | |
| test("couples touch and scroll seed in order", () => { | |
| const calls: string[] = [] | |
| const result = ensureSessionKey( | |
| "dir/a", | |
| (key) => calls.push(`touch:${key}`), | |
| (key) => calls.push(`seed:${key}`), | |
| ) | |
| expect(result).toBe("dir/a") | |
| expect(calls).toEqual(["touch:dir/a", "seed:dir/a"]) | |
| }) | |
| test("reads dynamic accessor keys lazily", () => { | |
| const seen: string[] = [] | |
| createRoot((dispose) => { | |
| const [key, setKey] = createSignal("dir/one") | |
| const read = createSessionKeyReader(key, (value) => seen.push(value)) | |
| expect(read()).toBe("dir/one") | |
| setKey("dir/two") | |
| expect(read()).toBe("dir/two") | |
| dispose() | |
| }) | |
| expect(seen).toEqual(["dir/one", "dir/two"]) | |
| }) | |
| }) | |
| describe("pruneSessionKeys", () => { | |
| test("keeps active key and drops lowest-used keys", () => { | |
| const drop = pruneSessionKeys({ | |
| keep: "k4", | |
| max: 3, | |
| used: new Map([ | |
| ["k1", 1], | |
| ["k2", 2], | |
| ["k3", 3], | |
| ["k4", 4], | |
| ]), | |
| view: ["k1", "k2", "k4"], | |
| tabs: ["k1", "k3", "k4"], | |
| }) | |
| expect(drop).toEqual(["k1"]) | |
| expect(drop.includes("k4")).toBe(false) | |
| }) | |
| test("does not prune without keep key", () => { | |
| const drop = pruneSessionKeys({ | |
| keep: undefined, | |
| max: 1, | |
| used: new Map([ | |
| ["k1", 1], | |
| ["k2", 2], | |
| ]), | |
| view: ["k1"], | |
| tabs: ["k2"], | |
| }) | |
| expect(drop).toEqual([]) | |
| }) | |
| }) | |
Xet Storage Details
- Size:
- 1.7 kB
- Xet hash:
- d91b5fb2086830f6d843b64e1fe484b8a6a093e85880f70b76475a2c632d1d09
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.