#include #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; }