23 lines
1.2 KiB
C
23 lines
1.2 KiB
C
#include "firmware_image.h"
|
|
#include <assert.h>
|
|
#include <string.h>
|
|
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;
|
|
}
|