#include "t.h" #include "rd.h" int t_rd(void) { uint8_t one[] = {0x3f}; uint8_t two[] = {0x41, 0x12}; uint8_t three[] = {0x82, 0x34, 0x12}; uint8_t four[] = {0xc3, 0x56, 0x34, 0x12}; tobi_rd r; size_t len = 0; size_t enc = 0; tobi_rd_init(&r, one, sizeof(one), 0); T_CHECK(tobi_rd_pkg_len(&r, &len, &enc) && len == 0x3f && enc == 1); tobi_rd_init(&r, two, sizeof(two), 0); T_CHECK(tobi_rd_pkg_len(&r, &len, &enc) && len == 0x121 && enc == 2); tobi_rd_init(&r, three, sizeof(three), 0); T_CHECK(tobi_rd_pkg_len(&r, &len, &enc) && len == 0x12342 && enc == 3); tobi_rd_init(&r, four, sizeof(four), 0); T_CHECK(tobi_rd_pkg_len(&r, &len, &enc) && len == 0x1234563 && enc == 4); uint8_t trunc[] = {0x80}; tobi_rd_init(&r, trunc, sizeof(trunc), 0); T_CHECK(!tobi_rd_pkg_len(&r, &len, &enc)); T_CHECK(r.pos == 0); uint8_t b[] = {1, 2, 3}; uint32_t v = 0; tobi_rd_init(&r, b, sizeof(b), 0); T_CHECK(!tobi_rd_u32(&r, &v)); T_CHECK(r.pos == 0); uint8_t x = 0; T_CHECK(tobi_rd_u8(&r, &x) && x == 1); T_CHECK(!tobi_rd_skip(&r, 99)); T_CHECK(r.pos == 1); return 0; }