diff --git a/test/test_runner.c b/test/test_runner.c index d3440c5..56af24a 100644 --- a/test/test_runner.c +++ b/test/test_runner.c @@ -22,6 +22,7 @@ extern Suite *timers_suite(void); extern Suite *mbuf_suite(void); extern Suite *human_bytesz_suite(void); extern Suite *dbuf_suite(void); +extern Suite *sprintb_suite(void); static suite_func suites[] = { bitvec_suite, @@ -40,6 +41,7 @@ static suite_func suites[] = { mbuf_suite, human_bytesz_suite, dbuf_suite, + sprintb_suite }; int diff --git a/test/test_sprintb.c b/test/test_sprintb.c new file mode 100644 index 0000000..0a1f782 --- /dev/null +++ b/test/test_sprintb.c @@ -0,0 +1,97 @@ +#include +#include +#include + +//Note these tests assume +// char 8 bit +// short 16 bit +// int 32 bit +// long long 64 bit + +START_TEST (test_sprintb) + char result[128]; + char *rc; + + rc = uc_sprintb(result, 0); + ck_assert_str_eq(rc, "00000000000000000000000000000000"); + + rc = uc_sprintb(result, UINT_MAX); + ck_assert_str_eq(rc, "11111111111111111111111111111111"); + + rc = uc_sprintb(result, 0xE0A14341); + ck_assert_str_eq(rc, "11100000101000010100001101000001"); + + rc = uc_sprintb(result, 1); + ck_assert_str_eq(rc, "00000000000000000000000000000001"); + +END_TEST + +START_TEST (test_sprintbc) + char result[128]; + char *rc; + + rc = uc_sprintbc(result, 0); + ck_assert_str_eq(rc, "00000000"); + + rc = uc_sprintbc(result, UCHAR_MAX); + ck_assert_str_eq(rc, "11111111"); + + rc = uc_sprintbc(result, 0xE1); + ck_assert_str_eq(rc, "11100001"); + + rc = uc_sprintbc(result, 1); + ck_assert_str_eq(rc, "00000001"); + +END_TEST + +START_TEST (test_sprintbs) + char result[128]; + char *rc; + + rc = uc_sprintbs(result, 0); + ck_assert_str_eq(rc, "0000000000000000"); + + rc = uc_sprintbs(result, USHRT_MAX); + ck_assert_str_eq(rc, "1111111111111111"); + + rc = uc_sprintbs(result, 0xE0A1); + ck_assert_str_eq(rc, "1110000010100001"); + + rc = uc_sprintbs(result, 1); + ck_assert_str_eq(rc, "0000000000000001"); + +END_TEST + +START_TEST (test_sprintbll) + char result[128]; + char *rc; + + rc = uc_sprintbll(result, 0); + ck_assert_str_eq(rc, "0000000000000000000000000000000000000000000000000000000000000000"); + + rc = uc_sprintbll(result, ULLONG_MAX); + ck_assert_str_eq(rc, "1111111111111111111111111111111111111111111111111111111111111111"); + + rc = uc_sprintbll(result, 0xE0A14341E0A14341ULL); + ck_assert_str_eq(rc, "1110000010100001010000110100000111100000101000010100001101000001"); + + rc = uc_sprintbll(result, 1); + ck_assert_str_eq(rc, "0000000000000000000000000000000000000000000000000000000000000001"); + +END_TEST + +Suite *sprintb_suite(void) +{ + Suite *s = suite_create("sprintb"); + TCase *tc = tcase_create("sprintb tests"); + + tcase_add_test(tc, test_sprintb); + tcase_add_test(tc, test_sprintbc); + tcase_add_test(tc, test_sprintbs); + tcase_add_test(tc, test_sprintbll); + + suite_add_tcase(s, tc); + + return s; +} +