154 lines
4.2 KiB
C
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;
|
|
}
|
|
|