#include "firmware_image.h" #include #include static int parse(const char *text, firmware_hex_cell_t *cells, size_t cap, size_t *count) { size_t line; return firmware_hex_parse(text, strlen(text), cells, cap, 100, count, &line); } int main(void) { firmware_hex_cell_t cells[32]; size_t count; const char *good = ":020000040800F2\n:0400100001020304E2\n:00000001FF\n"; assert(parse(good,cells,32,&count)==0 && count==4); assert(cells[0].address==0x08000010U && cells[3].value==4); assert(firmware_hex_segment_size(cells,count,0)==4); assert(parse(good,cells,3,&count)==FW_HEX_CAPACITY && count==0); assert(parse(":0100000001FE\n:0100000001FE\n:00000001FF",cells,32,&count)==FW_HEX_OVERLAP); assert(parse(":0100000001FF\n:00000001FF",cells,32,&count)==FW_HEX_CHECKSUM); assert(parse(":0100000001FE",cells,32,&count)==FW_HEX_EOF); assert(parse(":0100000001FE\n:00000001FF\n:0100010002FC",cells,32,&count)==FW_HEX_EOF); assert(parse(":0100010002FC\n:0100000001FE\n:00000001FF",cells,32,&count)==0); assert(cells[0].value==1 && cells[1].value==2); assert(parse(":02000004FFFFFC\n:02FFFF000102FD\n:00000001FF",cells,32,&count)==FW_HEX_RANGE); return 0; }