#define _DEFAULT_SOURCE #include #include #include "layout.h" int main(void){ (void)layout_from_json; PlaybackJson json={0};assert(playback_json_init(&json)); assert(calibration_effective()==CAL_AVERAGE); strcpy(tv_model,"OLED65G42LW.DEUQLJP");assert(calibration_effective()==CAL_G4); assert(!calibration_is_g4("OLED65G52LW") && !calibration_is_g4("LG G4")); Calibration next=calibration; const char *custom="{\"profile\":\"custom\",\"model\":\"OLED65C42LA\",\"points\":[{\"position\":0,\"region\":2},{\"position\":2,\"region\":10}]}"; assert(calibration_parse(&json,custom,&next));calibration=next;calibration_generation++; LedBlend b=layout_blend(.5,0);assert(b.a==2 && b.b==10 && b.weight>=16383 && b.weight<=16385); const char *bad[]={"{}","{\"profile\":\"custom\",\"points\":null}","{\"profile\":\"other\"}","{\"profile\":\"custom\",\"model\":\"bad\\\"name\",\"points\":[]}","{\"profile\":\"custom\",\"model\":\"TV\",\"points\":[{\"position\":2,\"region\":1},{\"position\":1,\"region\":2}]}","{\"profile\":\"custom\",\"model\":\"TV\",\"points\":[{\"position\":0,\"region\":16},{\"position\":4,\"region\":2}]}"}; for(unsigned i=0;i