import assert from "node:assert/strict"
import { describe, it } from "node:test"
import {
  computePageCount,
  computePageMetrics,
  computeProseMinHeight,
  computeStackHeight,
} from "./docs-page-metrics.ts"

describe("docs-page-metrics", () => {
  const metrics = computePageMetrics({
    widthPx: 794,
    heightPx: 1122,
    marginsPx: { top: 96, right: 96, bottom: 96, left: 96 },
    headerMarginMm: 12.7,
    footerMarginMm: 12.7,
  })

  it("computes body area height from margins", () => {
    assert.equal(metrics.bodyAreaHeight, 1122 - 96 - 96)
  })

  it("computes page count from content height", () => {
    assert.equal(computePageCount(400, metrics), 1)
    assert.equal(computePageCount(metrics.bodyAreaHeight + 1, metrics), 2)
  })

  it("computes stack height with page gaps", () => {
    assert.equal(computeStackHeight(2, 1122), 1122 * 2 + 12)
  })

  it("computes prose min height with inter-page spacers", () => {
    const minH = computeProseMinHeight(2, metrics)
    assert.equal(minH, metrics.bodyAreaHeight * 2 + metrics.interPageSpacer)
  })
})
