import { describe, expect, it } from 'vitest'; import { buildPier } from '../src/core/geometry'; import { columnInputFor, columnRebar } from '../src/core/rebar/column'; import { loadP1 } from './helpers'; describe('기둥 철근 높이는 모델에서 (Hc · h_cop, 승인 2026-10-23)', () => { it('P1: Hc 12703 and h_cop 2644 come out of the model, as in 기둥철근.md', () => { const input = columnInputFor(buildPier(loadP1())); expect(input.Hc).toBeCloseTo(12703, 0); expect(input.hcop).toBeCloseTo(2644, 0); const col = columnRebar(input); expect(col.zTop2).toBeCloseTo(14539, 0); expect(col.zTop1).toBeCloseTo(14862, 0); }); it('taper h2 = 3000: Level underside 39.411, Hc 11203, P2 top 13039 (= Level underside + l_d)', () => { const m = buildPier({ ...loadP1(), copingH2Mm: 3000 }); const input = columnInputFor(m); expect(input.Hc).toBeCloseTo(11203, 0); // h_cop = step top (43.555) − Level underside (39.411): the coping at the column gets taller with h2. expect(input.hcop).toBeCloseTo(4144, 0); const col = columnRebar(input); expect(col.zTop2).toBeCloseTo(13039, 0); // The P1 top is anchored to the step top (and C3), so it does not move with h2. expect(col.zTop1).toBeCloseTo(14862, 0); }); });