from pathlib import Path import copy, hashlib, json, sys assert len(sys.argv) == 4 original, saved, output = map(Path, sys.argv[1:]) assert not output.exists() sha = lambda path: hashlib.sha256(path.read_bytes()).hexdigest() assert sha(original) == '9db1015369f450d5810c96a01fddb8a009d57f6aafbda5182703f15ded23d9c8' before, after = [json.loads(p.read_bytes()) for p in [original, saved]] diagram = '00000000-0038-4000-8000-000000000001' edge = '63009b5f-539e-5914-b630-ec6b7fefb4d5' old_routes = before['diagrams'][diagram]['routes'] routes = after['diagrams'][diagram]['routes'] assert not any(r['edge'] == edge for r in old_routes) changed = [r for r in routes if r['edge'] == edge] assert len(changed) == 1 route = changed[0] assert route['waypoints'] == [] assert route.get('source_attachment') is None and route.get('target_attachment') is None assert set(route) <= {'edge','waypoints','label','source_attachment','target_attachment'} label = route['label'] assert label['fraction'] == 0.55 assert set(label) == {'fraction','offset'} and set(label['offset']) == {'x','y'} # Declared native delta30/20px at rounded Fit52%, not a geometry-derived oracle. assert 0.515 <= 0.525 assert 62.591065 + 30/0.525 - 1 <= label['offset']['x'] <= 62.591065 + 30/0.515 + 1 assert 20/0.525 - 1 <= label['offset']['y'] <= 20/0.515 + 1 restored = copy.deepcopy(after) restored['diagrams'][diagram]['routes'] = [r for r in routes if r['edge'] != edge] assert restored == before, 'Complete Project must differ only by declared target route label' receipt = {'status':'PASS', 'original_sha256':sha(original), 'saved_sha256':sha(saved), 'saved_bytes':saved.stat().st_size, 'declared_edit':route, 'complete_project_equal_after_removing_only_declared_route':True, 'scope':'F30px right/20px down at displayed52%; no extra formatting field persisted'} with output.open('x',encoding='utf-8') as f: json.dump(receipt,f,indent=2);f.write('\n') print(json.dumps(receipt,indent=2))