diff --git a/tests/utils/utils_test.c b/tests/utils/utils_test.c index 4a4b121f0..e6d7ae8cc 100644 --- a/tests/utils/utils_test.c +++ b/tests/utils/utils_test.c @@ -26,6 +26,7 @@ #include #include +#include static void hexdump_test(void) { @@ -281,6 +282,47 @@ bool test_is_hexstr() return pass; } +struct bcdcheck { + uint8_t bcd; + char ch; +}; + +static const struct bcdcheck bcdchecks[] = { + { 0, '0' }, + { 1, '1' }, + { 2, '2' }, + { 3, '3' }, + { 4, '4' }, + { 5, '5' }, + { 6, '6' }, + { 7, '7' }, + { 8, '8' }, + { 9, '9' }, + { 0xA, 'A' }, + { 0xB, 'B' }, + { 0xC, 'C' }, + { 0xD, 'D' }, + { 0xE, 'E' }, + { 0xF, 'F' }, +}; + +static void bcd_test(void) +{ + int i; + + printf("\nTesting BCD conversion\n"); + for (i = 0; i < ARRAY_SIZE(bcdchecks); i++) { + const struct bcdcheck *check = &bcdchecks[i]; + char ch = osmo_bcd2char(check->bcd); + printf("\tval=0x%x, expected=%c, found=%c\n", check->bcd, check->ch, ch); + OSMO_ASSERT(osmo_bcd2char(check->bcd) == check->ch); + /* test char -> bcd back-coversion */ + OSMO_ASSERT(osmo_char2bcd(ch) == check->bcd); + /* test for lowercase hex char */ + OSMO_ASSERT(osmo_char2bcd(tolower(ch)) == check->bcd); + } +} + int main(int argc, char **argv) { static const struct log_info log_info = {}; @@ -290,5 +332,6 @@ int main(int argc, char **argv) hexparse_test(); test_idtag_parsing(); test_is_hexstr(); + bcd_test(); return 0; } diff --git a/tests/utils/utils_test.ok b/tests/utils/utils_test.ok index 45156f7f6..33a185bf9 100644 --- a/tests/utils/utils_test.ok +++ b/tests/utils/utils_test.ok @@ -57,3 +57,21 @@ rc = -1 26: pass str='BeadedBeeAced1EbbedDefacedFacade' min=32 max=32 even=1 expect=valid 27: pass str='C01ffedC1cadaeAc1d1f1edAcac1aB0a' min=32 max=32 even=0 expect=valid 28: pass str='DeafBeddedBabeAcceededFadedDecaff' min=32 max=32 even=0 expect=invalid + +Testing BCD conversion + val=0x0, expected=0, found=0 + val=0x1, expected=1, found=1 + val=0x2, expected=2, found=2 + val=0x3, expected=3, found=3 + val=0x4, expected=4, found=4 + val=0x5, expected=5, found=5 + val=0x6, expected=6, found=6 + val=0x7, expected=7, found=7 + val=0x8, expected=8, found=8 + val=0x9, expected=9, found=9 + val=0xa, expected=A, found=A + val=0xb, expected=B, found=B + val=0xc, expected=C, found=C + val=0xd, expected=D, found=D + val=0xe, expected=E, found=E + val=0xf, expected=F, found=F