# 离线只读验证：不访问网络、不操作设备，只读取同目录合成输入。
import json, math, struct, statistics
from pathlib import Path
def check(d):
 b=Path(__file__).with_name('interleaved.bin').read_bytes(); stride=d['stride']; count=d['count']
 assert stride>=12 and stride%4==0
 end=d['position_offset']+(count-1)*stride+12; assert end<=len(b)
 p=[list(struct.unpack_from('<3f',b,d['position_offset']+i*stride)) for i in range(count)]
 c=[list(b[d['color_offset']+i*stride:d['color_offset']+i*stride+4]) for i in range(count)]
 assert all(len(v)==4 for v in c)
 return dict(positions=p,colors=c,last_position_end=end)

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))
