[PATCH] libosmocore[master]: Add unit tests for bcd2char and char2bcd conversion

Harald Welte gerrit-no-reply at lists.osmocom.org
Fri Oct 27 15:20:39 UTC 2017


Review at  https://gerrit.osmocom.org/4448

Add unit tests for bcd2char and char2bcd conversion

Sounds stupid, but we actually didn't support hex nibbles in one of
the two directions of the conversion, so let's make sure we test for
this.

Change-Id: I8445da54cc4f9b1cd64f286c2b238f4f7c87accb
---
M tests/utils/utils_test.c
M tests/utils/utils_test.ok
2 files changed, 60 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/48/4448/1

diff --git a/tests/utils/utils_test.c b/tests/utils/utils_test.c
index 4a4b121..a6517f7 100644
--- a/tests/utils/utils_test.c
+++ b/tests/utils/utils_test.c
@@ -281,6 +281,47 @@
 	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 +331,6 @@
 	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 45156f7..33a185b 100644
--- a/tests/utils/utils_test.ok
+++ b/tests/utils/utils_test.ok
@@ -57,3 +57,21 @@
 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

-- 
To view, visit https://gerrit.osmocom.org/4448
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8445da54cc4f9b1cd64f286c2b238f4f7c87accb
Gerrit-PatchSet: 1
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>


More information about the gerrit-log mailing list