- Code\rebar_pipeline, review_pipeline, pier-program을 정션에서 실제 폴더로 전환 - Code\rhino_mcp 및 CLAUDE_rhino배경.md 추가, .mcp.json은 PYTHONPATH로 새 위치 사용 - pier-program 내부 .git 제거(이력은 backup\pier-program_20261028.bundle에 보관) - worktree 가이드 반영(CLAUDE.local.md, HANDOFF.md) - D:\Rhino-MCP 경로 참조를 새 위치로 치환 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
36 lines
1.9 KiB
Python
36 lines
1.9 KiB
Python
import copy
|
|
import unittest
|
|
from tools.replay_inner_wall_stations import validate_candidate
|
|
|
|
|
|
class InnerWallPublication(unittest.TestCase):
|
|
def candidate(self):
|
|
return dict(count=2, schedule_count=1,
|
|
instance_paths_m=[[[0, 0, 0], [0, 0, 1]], [[1, 0, 0], [1, 0, 1]]],
|
|
fabrication_measurement=dict(fixed_length_pass=True, count_pass=False),
|
|
quantity_comparison=dict(applied_authority='placement_drawing',
|
|
status='schedule_review_required', drawing_count=2, schedule_count=1),
|
|
cad_cycle_assembly=dict(wall_station_sources=[dict(selected_stations_mm=[0, 1000])]))
|
|
|
|
def test_review_requires_explicit_policy(self):
|
|
with self.assertRaises(ValueError): validate_candidate(self.candidate(), 0)
|
|
|
|
def test_review_does_not_alter_or_approve_quantity(self):
|
|
group = self.candidate(); before = copy.deepcopy(group)
|
|
validate_candidate(group, 0, allow_drawing_quantity_review=True)
|
|
self.assertEqual(group, before)
|
|
self.assertFalse(group['fabrication_measurement']['count_pass'])
|
|
|
|
def test_review_never_bypasses_geometry_or_missing_evidence(self):
|
|
for failure in ('outside', 'length', 'duplicate', 'source', 'false_approval'):
|
|
group = self.candidate(); outside = int(failure == 'outside')
|
|
if failure == 'length': group['fabrication_measurement']['fixed_length_pass'] = False
|
|
if failure == 'duplicate': group['instance_paths_m'][1] = group['instance_paths_m'][0]
|
|
if failure == 'source': group['cad_cycle_assembly']['wall_station_sources'] = []
|
|
if failure == 'false_approval': group['fabrication_measurement']['count_pass'] = True
|
|
with self.subTest(failure=failure), self.assertRaises(ValueError):
|
|
validate_candidate(group, outside, allow_drawing_quantity_review=True)
|
|
|
|
|
|
if __name__ == '__main__': unittest.main()
|