#include "t.h" #include "da.h" #include "p.h" int t_da(void) { uint8_t m0[] = {0x14,0x0c,'M','T','H','0',0x01,0x70,0x0a,0x2a,0x60,0xa4,0x60}; tobi_parse_result r; T_CHECK(tobi_parse(m0, sizeof(m0), 0, &r)); char *s = tobi_da_emit(m0, sizeof(m0), &r.meta); T_STR(s, "0x0000: MethodOp"); T_STR(s, "operands=PkgLength NameString MethodFlags TermList"); T_STR(s, "pkglen=12"); T_STR(s, "StoreOp"); free(s); tobi_parse_result_free(&r); uint8_t buf[] = {0x08,'B','U','F','0',0x11,0x05,0x0a,0x02,0xaa,0xbb}; T_CHECK(tobi_parse(buf, sizeof(buf), 0, &r)); s = tobi_da_emit(buf, sizeof(buf), &r.meta); T_STR(s, "BufferOp"); T_STR(s, "BufferData len=2"); T_CHECK(strstr(s, "UnknownOp opcode=0xaa") == NULL); free(s); tobi_parse_result_free(&r); uint8_t bad[] = {0xfe,0x14,0xff}; T_CHECK(tobi_parse(bad, sizeof(bad), 0, &r)); s = tobi_da_emit(bad, sizeof(bad), &r.meta); T_STR(s, "UnknownOp"); free(s); tobi_parse_result_free(&r); return 0; }