test(core): footing drawing-reproduction checks from the document's test table
- Leg offsets (B1 +25.4, B3 +22.25, B5 +28.6, B7 +23.85) and B11 / B12 heights (550 / 950 / 1350; 569.1 / 969.1 / 1369.1). - Reproduction counts: W 7800 → B4 30 / B2 29; L 9350 → B8 36 / B6 35. - Variables: W 8000 with s 150 → 50 steps, e 150; W 12000 → 92 steps. - Splice cases: L 8700 → B2 11946 (no splice), L 12400 → B4 12200, W 8800 → B6 12046. - Not covered: the 배근도 H 2200 case for B10 (the document's count is unclear). Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
1c6194cd48
commit
4d8bbf7f6e
2 files changed
+72
-1
No files matched your search
@@ -76,3 +76,47 @@ describe('확대기초 철근 (확대기초철근 (1).md, plan C5)', () => {
|
||||
expect(b9.length).toBeCloseTo(2128, 0);
|
||||
});
|
||||
});
|
||||
|
||||
import { assemblyHeights, legOffsets } from '../src/core/rebar/footing';
|
||||
|
||||
describe('확대기초 배근도 재현 (확대기초철근 (1).md §13)', () => {
|
||||
it('leg offsets: B1 +25.4, B3 +22.25, B5 +28.6, B7 +23.85', () => {
|
||||
const o = legOffsets();
|
||||
expect(o.B1).toBeCloseTo(25.4, 6);
|
||||
expect(o.B3).toBeCloseTo(22.25, 6);
|
||||
expect(o.B5).toBeCloseTo(28.6, 6);
|
||||
expect(o.B7).toBeCloseTo(23.85, 6);
|
||||
});
|
||||
|
||||
it('B11 at 550 / 950 / 1350 and B12 at 569.1 / 969.1 / 1369.1', () => {
|
||||
const h = assemblyHeights();
|
||||
expect(h.B11).toEqual([550, 950, 1350]);
|
||||
expect(h.B12.map((z) => Math.round(z * 10) / 10)).toEqual([569.1, 969.1, 1369.1]);
|
||||
});
|
||||
|
||||
it('배근도 재현 W 7800 → B4 30, B2 29 (odd count split)', () => {
|
||||
const bars = bottomBars(10400, 7800, 2000);
|
||||
expect(bars.find((b) => b.name === 'B4')!.count).toBe(30);
|
||||
expect(bars.find((b) => b.name === 'B2')!.count).toBe(29);
|
||||
});
|
||||
|
||||
it('배근도 재현 L 9350 → B8 36, B6 35', () => {
|
||||
const bars = crossBars(9350, 8150, 2000);
|
||||
expect(bars.find((b) => b.name === 'B8')!.count).toBe(36);
|
||||
expect(bars.find((b) => b.name === 'B6')!.count).toBe(35);
|
||||
});
|
||||
|
||||
it('variables: W 8000 with s 150 → 50 grid steps, e 150, B4 26 / B2 25; W 12000 → 92 steps, e 150', () => {
|
||||
const g = grid(8000, 150);
|
||||
expect(g.n).toBe(50);
|
||||
expect(g.e).toBeCloseTo(150, 6);
|
||||
expect(grid(12000).n).toBe(92);
|
||||
expect(grid(12000).e).toBeCloseTo(150, 6);
|
||||
});
|
||||
|
||||
it('splice cases: L 8700 → B2 11946 (no splice); L 12400 → B4 12200; W 8800 → B6 12046', () => {
|
||||
expect(bottomBars(8700, 8150, 2000).find((b) => b.name === 'B2')!.length).toBeCloseTo(11946, 0);
|
||||
expect(bottomBars(12400, 8150, 2000).find((b) => b.name === 'B4')!.length).toBeCloseTo(12200, 0);
|
||||
expect(crossBars(10400, 8800, 2000).find((b) => b.name === 'B6')!.length).toBeCloseTo(12046, 0);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user