ultisuite-client/lib/drive/docs-ruler-sync.test.ts
R3D347HR4Y 2a7c153748
Some checks are pending
E2E / Playwright e2e (push) Waiting to run
wrap page
2026-06-10 12:48:27 +02:00

38 lines
1.4 KiB
TypeScript

import assert from "node:assert/strict"
import { describe, it } from "node:test"
import {
computePageTopInViewport,
resolveCurrentPageAtViewportTop,
resolveCurrentPageInViewport,
} from "./docs-ruler-sync-math.ts"
describe("docs ruler vertical sync", () => {
const stride = 1000
const viewport = 800
it("keeps page 0 while viewport center is on page 1", () => {
assert.equal(resolveCurrentPageInViewport(48, viewport, stride, 3), 0)
assert.equal(computePageTopInViewport(48, 0, stride), 48)
})
it("advances page when viewport center crosses page boundary", () => {
// centerInStack = 400 - (-700) = 1100 → page 1
assert.equal(resolveCurrentPageInViewport(-700, viewport, stride, 3), 1)
assert.equal(computePageTopInViewport(-700, 1, stride), 300)
// Old top-edge rule still on page 0 here
assert.equal(resolveCurrentPageAtViewportTop(-700, stride, 3), 0)
})
it("switches before page 1 fully leaves viewport (vs top-edge rule)", () => {
// centerInStack = 400 - (-750) = 1150 → page 1; page 1 bottom still visible
assert.equal(resolveCurrentPageInViewport(-750, viewport, stride, 2), 1)
assert.equal(resolveCurrentPageAtViewportTop(-750, stride, 2), 0)
})
it("clamps to last page", () => {
assert.equal(resolveCurrentPageInViewport(-5000, viewport, stride, 3), 2)
assert.equal(computePageTopInViewport(-5000, 2, stride), -3000)
})
})