Files
libucore/test/test_bcd.c
T
2013-10-02 22:15:55 +02:00

154 lines
4.2 KiB
C

#include <check.h>
#include <ucore/string.h>
START_TEST (test_2bcd_1234567890)
char ascii[] = "1234567890";
unsigned char bcd[5];
size_t len = uc_ascii2bcd(ascii, bcd, 0);
fail_if(len != 5, "len is %zu", len);
fail_if(bcd[0] != 0x21,"was 0x%x",bcd[0]);
fail_if(bcd[1] != 0x43,"was 0x%x",bcd[1]);
fail_if(bcd[2] != 0x65,"was 0x%x",bcd[2]);
fail_if(bcd[3] != 0x87,"was 0x%x",bcd[3]);
fail_if(bcd[4] != 0x09,"was 0x%x",bcd[4]);
END_TEST
START_TEST (test_2bcd_empty)
char ascii[] = "";
unsigned char bcd[1];
size_t len = uc_ascii2bcd(ascii, bcd, 3);
fail_if(len != 0, "len is %zu", len);
END_TEST
START_TEST (test_2bcd_1_filler)
char ascii[] = "1";
unsigned char bcd[1];
size_t len = uc_ascii2bcd(ascii, bcd, 0xa);
fail_if(len != 1, "len is %zu", len);
fail_if(bcd[0] != 0xa1,"was 0x%x",bcd[0]);
END_TEST
START_TEST (test_2bcd_2_filler)
char ascii[] = "123";
unsigned char bcd[2];
size_t len = uc_ascii2bcd(ascii, bcd, 0xf);
fail_if(len != 2, "len is %zu", len);
fail_if(bcd[0] != 0x21,"was 0x%x",bcd[0]);
fail_if(bcd[1] != 0xf3,"was 0x%x",bcd[1]);
fail_if(UC_BCD_LEN(strlen(ascii)) != len);
END_TEST
START_TEST (test_2bcd_3_filler)
char ascii[] = "123";
unsigned char bcd[2];
size_t len = uc_ascii2bcd(ascii, bcd, 0x0);
fail_if(len != 2, "len is %zu", len);
fail_if(bcd[0] != 0x21,"was 0x%x",bcd[0]);
fail_if(bcd[1] != 0x03,"was 0x%x",bcd[1]);
END_TEST
START_TEST (test_2bcd_non_digits)
char ascii[] = "a,b{ }=";
unsigned char bcd[10];
size_t len = uc_ascii2bcd(ascii, bcd, 0x0);
fail_if(len != 0, "len is %zu", len);
END_TEST
START_TEST (test_2bcd_phoneno)
char ascii[] = "0047-3233-4";
unsigned char bcd[24];
size_t len = uc_ascii2bcd(ascii, bcd, 0xf);
fail_if(len != 5, "len is %zu", len);
fail_if(bcd[0] != 0x00,"was 0x%x",bcd[0]);
fail_if(bcd[1] != 0x74,"was 0x%x",bcd[1]);
fail_if(bcd[2] != 0x23,"was 0x%x",bcd[1]);
fail_if(bcd[3] != 0x33,"was 0x%x",bcd[1]);
fail_if(bcd[4] != 0xf4,"was 0x%x",bcd[1]);
END_TEST
START_TEST (test_2bcd_binary)
char ascii[] = {0x32,0x01,0xAF,0xFF,0x00};
unsigned char bcd[24];
size_t len = uc_ascii2bcd(ascii, bcd, 0xf);
fail_if(len != 1, "len is %zu", len);
fail_if(bcd[0] != 0xf2,"0 was 0x%x",bcd[0]);
END_TEST
START_TEST (test_2hex_1)
unsigned char bcd[] = {0x21, 0x43 };
char ascii[sizeof bcd * 2 + 1];
size_t len = uc_bcd2ascii(bcd, sizeof bcd, ascii);
fail_if(len != 4, "len is %zu", len);
fail_if(ascii[0] != '1',"0 was %c",ascii[0]);
fail_if(ascii[1] != '2',"1 was %c",ascii[1]);
fail_if(ascii[2] != '3',"2 was %c",ascii[2]);
fail_if(ascii[3] != '4',"3 was %c",ascii[3]);
fail_if(ascii[4] != 0, "4 was %c",ascii[4]);
fail_if(UC_ASCII_LEN(sizeof bcd) != len);
END_TEST
START_TEST (test_2hex_2)
unsigned char bcd[] = {0xF0, 0xFF, 0x00};
char ascii[sizeof bcd * 2 + 1];
size_t len = uc_bcd2ascii(bcd, sizeof bcd, ascii);
fail_if(len != 6, "len is %zu", len);
fail_if(ascii[0] != '0',"0 was %c",ascii[0]);
fail_if(ascii[1] != 'F',"1 was %c",ascii[1]);
fail_if(ascii[2] != 'F',"2 was %c",ascii[2]);
fail_if(ascii[3] != 'F',"3 was %c",ascii[3]);
fail_if(ascii[4] != '0', "4 was %c",ascii[4]);
fail_if(ascii[5] != '0', "5 was %c",ascii[5]);
fail_if(ascii[6] != 0, "6 was %c",ascii[6]);
END_TEST
START_TEST (test_2hex_empty)
unsigned char bcd[] = {0xF0, 0xFF, 0x00};
char ascii[sizeof bcd * 2 + 1];
ascii[0] = 0xFF;
size_t len = uc_bcd2ascii(bcd, 0, ascii);
fail_if(len != 0, "len is %zu", len);
fail_if(ascii[0] != 0, "0 was %c",ascii[0]);
END_TEST
Suite *bcd_suite(void)
{
Suite *s = suite_create("bcd");
TCase *tc = tcase_create("bcd tests");
tcase_add_test(tc, test_2bcd_1234567890);
tcase_add_test(tc, test_2bcd_empty);
tcase_add_test(tc, test_2bcd_1_filler);
tcase_add_test(tc, test_2bcd_2_filler);
tcase_add_test(tc, test_2bcd_3_filler);
tcase_add_test(tc, test_2bcd_non_digits);
tcase_add_test(tc, test_2bcd_phoneno);
tcase_add_test(tc, test_2bcd_binary);
tcase_add_test(tc, test_2hex_1);
tcase_add_test(tc, test_2hex_2);
tcase_add_test(tc, test_2hex_empty);
suite_add_tcase(s, tc);
return s;
}