Files
Pier_v1/tests/rebar-bearing.test.ts
T

61 lines
2.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { describe, expect, it } from 'vitest';
import { buildPier } from '../src/core/geometry';
import { barsAcross, bearingBlockRebar, blockBars, totals } from '../src/core/rebar/bearing-block';
import { rebarSummary } from '../src/core/rebar/summary';
import { loadP1 } from './helpers';
describe('받침블럭 철근 (spec §6.3, plan C2)', () => {
it('a 1200 block takes 8 bars at 125 mm: 7 gaps = 875, ends 162.5 each', () => {
const a = barsAcross(1200);
expect(a.count).toBe(8);
expect(a.spacing).toBe(125);
expect((a.count - 1) * a.spacing).toBe(875);
expect(a.firstEnd).toBeCloseTo(162.5, 6);
});
it('each bar is 1100 + 700 × 2 = 2500 mm long', () => {
for (const bar of blockBars(150)) expect(bar.length).toBe(2500);
});
it('coping embedment from the model block height (block top − coping top: front 100, back 150): S2 650 / 600, S1 669.1 / 619.1', () => {
const m = buildPier(loadP1());
const rebar = bearingBlockRebar(m);
const emb = (row: '전열' | '후열', name: 'S1' | 'S2') => rebar.find((b) => b.row === row)!.bars.find((r) => r.name === name)!.embedment;
expect(emb('전열', 'S2')).toBeCloseTo(650, 6);
expect(emb('후열', 'S2')).toBeCloseTo(600, 6);
expect(emb('전열', 'S1')).toBeCloseTo(669.1, 6);
expect(emb('후열', 'S1')).toBeCloseTo(619.1, 6);
});
it('P1: 10 blocks, 80 bars each of S1 and S2 (spec table: 8 本 per block)', () => {
const m = buildPier(loadP1());
const rebar = bearingBlockRebar(m);
expect(rebar).toHaveLength(10);
expect(totals(rebar)).toEqual({ S1: 80, S2: 80 });
});
});
describe('받침블럭 도면 재현 (spec §6.3)', () => {
it('integrated block 2500 × 1200: 18@125 = 2250 along (ends 50 + 75), 7@125 = 875 across (ends 50 + 113 ≈ 162.5)', () => {
const along = barsAcross(2500);
expect(along.spacing).toBe(125);
expect(along.count - 1).toBe(18);
expect((along.count - 1) * along.spacing).toBe(2250);
expect(along.firstEnd).toBeCloseTo(125, 6);
const across = barsAcross(1200);
expect(across.count - 1).toBe(7);
expect((across.count - 1) * across.spacing).toBe(875);
expect(across.firstEnd).toBeCloseTo(162.5, 6); // 50 + 75 + 37.5, printed as 50 + 113 in the drawing
});
});
describe('받침블럭 묻힘 검토 (spec §9 RB-S04)', () => {
it('P1: embedments 619–669 mm are shorter than the H19 development length 882, so RB-S04 is raised and the rows show the range', () => {
const { rows, warnings } = rebarSummary(buildPier(loadP1()));
expect(warnings.some((w) => w.code === 'RB-S04')).toBe(true);
expect(rows.find((r) => r.name === 'S1')!.note).toContain('묻힘 619–669');
expect(rows.find((r) => r.name === 'S2')!.note).toContain('묻힘 600–650');
});
});