from pathlib import Path
import subprocess
R=Path(__file__).resolve().parent;T=R/'firmware/固件/lamp_target';O=R/'ntc_host_test';O.mkdir(exist_ok=True)
s=(T/'src/lamp_ntc.c').read_text()
flags=['cc','-std=c11','-Wall','-Wextra','-Werror','-pedantic','-g','-fsanitize=address,undefined','-I'+str(T/'include')]
for name,src in [('actual',s),('wrong_curve',s.replace('*100u;','*50u;'))]:
 p=O/(name+'.c');p.write_text(src);exe=O/name
 subprocess.run(flags+[str(p),str(R/'test_ntc.c'),'-lm','-o',str(exe)],check=True)
 x=subprocess.run([str(exe)],capture_output=True,text=True);(R/(name+'_NTC_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 'error<0.35' in x.stderr,x.stderr;print('PASS: synthetic distorted interpolation rejected')
