#include #include #include "cli_parse_utils.h" /* Test 1: Valid even-length string */ Test(parse_hex, even_length) { uint8_t out[4]; size_t len; int ret = cli_parse_hex("deadbeef", out, 4, &len); cr_assert_eq(ret, 0); cr_assert_eq(len, 4); cr_assert_eq(out[0], 0xde); cr_assert_eq(out[1], 0xad); cr_assert_eq(out[2], 0xbe); cr_assert_eq(out[3], 0xef); } /* Test 2: Valid odd-length string — trailing nibble padded with 0 */ Test(parse_hex, odd_length) { uint8_t out[2]; size_t len; int ret = cli_parse_hex("abc", out, 2, &len); cr_assert_eq(ret, 0); cr_assert_eq(len, 2); cr_assert_eq(out[0], 0xab); cr_assert_eq(out[1], 0xc0); } /* Test 3: Single char */ Test(parse_hex, single_char) { uint8_t out[1]; size_t len; int ret = cli_parse_hex("f", out, 1, &len); cr_assert_eq(ret, 0); cr_assert_eq(len, 1); cr_assert_eq(out[0], 0xf0); } /* Test 4: Single byte */ Test(parse_hex, single_byte) { uint8_t out[1]; size_t len; int ret = cli_parse_hex("ff", out, 1, &len); cr_assert_eq(ret, 0); cr_assert_eq(len, 1); cr_assert_eq(out[0], 0xff); } /* Test 5: Mixed case */ Test(parse_hex, mixed_case) { uint8_t out[2]; size_t len; int ret = cli_parse_hex("DeAd", out, 2, &len); cr_assert_eq(ret, 0); cr_assert_eq(len, 2); cr_assert_eq(out[0], 0xde); cr_assert_eq(out[1], 0xad); } /* Test 6: All zeros */ Test(parse_hex, all_zeros) { uint8_t out[2]; size_t len; int ret = cli_parse_hex("0000", out, 2, &len); cr_assert_eq(ret, 0); cr_assert_eq(len, 2); cr_assert_eq(out[0], 0x00); cr_assert_eq(out[1], 0x00); } /* Test 7: Exactly at max_len */ Test(parse_hex, exact_max_len) { uint8_t out[4]; size_t len; int ret = cli_parse_hex("deadbeef", out, 4, &len); cr_assert_eq(ret, 0); cr_assert_eq(len, 4); } /* Test 8: Exceeds max_len */ Test(parse_hex, exceeds_max_len) { uint8_t out[2]; size_t len; int ret = cli_parse_hex("deadbeef", out, 2, &len); cr_assert_eq(ret, 1); } /* Test 9: NULL input */ Test(parse_hex, null_input) { uint8_t out[4]; size_t len; int ret = cli_parse_hex(NULL, out, 4, &len); cr_assert_eq(ret, 1); } /* Test 10: Empty string */ Test(parse_hex, empty_string) { uint8_t out[4]; size_t len; int ret = cli_parse_hex("", out, 4, &len); cr_assert_eq(ret, 1); } /* Test 11: Invalid hex characters */ Test(parse_hex, invalid_chars) { uint8_t out[4]; size_t len; int ret = cli_parse_hex("xyz", out, 4, &len); cr_assert_eq(ret, 1); } /* Test 12: Invalid char mid-string */ Test(parse_hex, invalid_char_mid) { uint8_t out[4]; size_t len; int ret = cli_parse_hex("de_d", out, 4, &len); cr_assert_eq(ret, 1); }