from pathlib import Path
import subprocess
R=Path(__file__).resolve().parent;T=R/'firmware/固件/lamp_target';O=R/'measurement_host_test';O.mkdir(exist_ok=True)
flags=['cc','-std=c11','-Wall','-Wextra','-Werror','-pedantic','-g','-fsanitize=address,undefined','-I'+str(T/'include')]
s=(T/'src/lamp_measurement.c').read_text()
for name,src in [('actual',s),('wrong_3p3_factory_reference',s.replace('UINT64_C(3000000)','UINT64_C(3300000)'))]:
 p=O/(name+'.c');p.write_text(src);exe=O/name
 subprocess.run(flags+[str(p),str(R/'test_measurement.c'),'-lm','-o',str(exe)],check=True)
 x=subprocess.run([str(exe)],capture_output=True,text=True);(R/(name+'_measurement_test.log')).write_text(x.stdout+x.stderr)
 if name=='actual':assert x.returncode==0,x.stderr;print(x.stdout)
 else:assert x.returncode!=0 and ('vdda*1e6' in x.stderr or 'LAMP_MEAS_OK' in x.stderr),x.stderr;print('PASS: synthetic wrong3.3V factory reference rejected')
