/* 곡선부 확폭 표 — 브라우저 짝이 파이썬과 같은 값을 내는지 확인(2026-09-06). 기대값은 `test_b06_curve_widening.py` 의 TABLE_CASES 와 같아야 한다. */ import assert from "node:assert/strict"; import { readFileSync } from "node:fs"; // TS 를 그대로 못 읽으므로 표·함수 부분만 떼어 평가한다(빌드 없이 도는 확인). const source = readFileSync("common_util/common_util_cross_design_geometry.ts", "utf8"); const table = source.slice( source.indexOf("const CURVE_WIDENING_TABLE_M"), source.indexOf("/** 짝: `_SectionGeometry`"), ); const js = table .replace(/: ReadonlyArray/, "") .replace(/export /g, "") .replace(/: number \| null \| undefined/g, "") .replace(/: number/g, "") .replace(/planRadiusM\)/g, "planRadiusM)"); const { curveWideningM } = await import( `data:text/javascript,${encodeURIComponent(js + "\nexport { curveWideningM, CURVE_WIDENING_MAX_WIDTH_M };")}` ); const cases = [ [9.9, 0], [10, 2.25], [12.999, 2.25], [13, 2], [14, 1.75], [15, 1.5], [18, 1.25], [20, 1], [25, 0.75], [30, 0.5], [40, 0.25], [45, 0], [200, 0], ]; for (const [radius, expected] of cases) { assert.equal(curveWideningM(radius), expected, `R=${radius}`); } assert.equal(curveWideningM(null), 0); assert.equal(curveWideningM(undefined), 0); console.log("확폭표 브라우저 짝 일치 —", cases.length + 2, "건 확인");