# 离线只读验证：不访问网络、不操作设备，只读取同目录合成输入。
import json, math, struct, statistics
from pathlib import Path
def check(d):
 base=Path(__file__).parent
 doc=json.loads((base/'triangle.gltf').read_text(encoding='utf-8'))
 length=doc['buffers'][0]['byteLength']; view=doc['bufferViews'][0]
 end=view.get('byteOffset',0)+view['byteLength']; assert end<=length
 out=[]
 for name in d['candidates']:
  assert name in ('triangle.bin','truncated.bin')
  size=len((base/name).read_bytes())
  out.append(dict(file=name,actual_bytes=size,required_end=end,status='通过' if size>=length and size>=end else '数据不足'))
 return out

if __name__=='__main__':
 fixture=json.loads(Path(__file__).with_name('fixture.json').read_text(encoding='utf-8'))
 actual=check(fixture['input'])
 assert actual==fixture['expected'], {'实际':actual,'预期':fixture['expected']}
 print(json.dumps({'状态':'通过','实际':actual,'边界':'仅离线合成样例，现场未测'},ensure_ascii=False))
