| /* SPDX-License-Identifier: GPL-2.0-only */ |
| |
| #include <stdlib.h> |
| #include <string.h> |
| #include <lib.h> |
| #include <stdint.h> |
| #include <tests/test.h> |
| |
| struct hexstr_t { |
| char *str; |
| int *val; |
| size_t res; |
| } hexstr[] = { |
| {.str = "A", .res = 0}, |
| {.str = "AB", .val = (int[]){171}, .res = 1}, |
| {.str = "277a", .val = (int[]){39, 122}, .res = 2}, |
| {.str = "277ab", .val = (int[]){39, 122}, .res = 2}, |
| {.str = "\n\rx1234567ijkl", .val = (int[]){18, 52, 86}, .res = 3}, |
| {.str = "\nB*e/ef-", .val = (int[]){190, 239}, .res = 2}, |
| }; |
| |
| static void test_hexstrtobin(void **state) |
| { |
| uint8_t *buf; |
| size_t res, len; |
| |
| for (int i = 0; i < ARRAY_SIZE(hexstr); i++) { |
| len = strlen(hexstr[i].str) / 2 + 1; |
| buf = malloc(len); |
| res = hexstrtobin(hexstr[i].str, buf, len); |
| |
| assert_int_equal(hexstr[i].res, res); |
| |
| for (int j = 0; j < res; j++) |
| assert_int_equal(hexstr[i].val[j], buf[j]); |
| |
| free(buf); |
| } |
| } |
| |
| int main(void) |
| { |
| const struct CMUnitTest tests[] = { |
| cmocka_unit_test(test_hexstrtobin), |
| }; |
| |
| return cb_run_group_tests(tests, NULL, NULL); |
| } |