37 lines
1.9 KiB
Python
37 lines
1.9 KiB
Python
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))
|