summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/utils/utils_test.c43
-rw-r--r--tests/utils/utils_test.ok18
2 files changed, 61 insertions, 0 deletions
diff --git a/tests/utils/utils_test.c b/tests/utils/utils_test.c
index 4a4b121f..e6d7ae8c 100644
--- a/tests/utils/utils_test.c
+++ b/tests/utils/utils_test.c
@@ -26,6 +26,7 @@
#include <osmocom/core/utils.h>
#include <stdio.h>
+#include <ctype.h>
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 45156f7f..33a185bf 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