#include #include "ucore/val_str.h" START_TEST (test_val_str_search) struct UCValStr vals[] = { UC_VS_ENTRY(1), UC_VS_ENTRY(5), UC_VS_ENTRY(0), UC_VS_TERMINATOR }; ck_assert_str_eq(uc_val_2_str(0 , vals) , "0"); ck_assert_str_eq(uc_val_2_str(1 , vals) , "1"); ck_assert_str_eq(uc_val_2_str(5 , vals) , "5"); fail_if(uc_val_2_str(10, vals) != NULL); END_TEST START_TEST (test_val_str_vs_search) struct UCValStr vals[] = { UC_VS_ENTRY(1), UC_VS_ENTRY(5), UC_VS_ENTRY(0), UC_VS_TERMINATOR }; ck_assert_str_eq(uc_val_2_str_vs(0 , vals)->str , "0"); ck_assert_str_eq(uc_val_2_str_vs(1 , vals)->str , "1"); ck_assert_str_eq(uc_val_2_str_vs(5 , vals)->str , "5"); fail_if(uc_val_2_str(10, vals) != NULL); END_TEST START_TEST (test_val_str_bsearch_odd) struct UCValStr vals[] = { UC_VS_ENTRY(1), UC_VS_ENTRY(2), UC_VS_ENTRY(10), UC_VS_ENTRY(100), UC_VS_ENTRY(101), }; const size_t len = sizeof vals/sizeof vals[0]; ck_assert_str_eq(uc_val_2_str_bs(1 , vals , len) , "1"); ck_assert_str_eq(uc_val_2_str_bs(2 , vals , len) , "2"); ck_assert_str_eq(uc_val_2_str_bs(10 , vals , len) , "10"); ck_assert_str_eq(uc_val_2_str_bs(100 , vals , len) , "100"); ck_assert_str_eq(uc_val_2_str_bs(101 , vals , len) , "101"); fail_if(uc_val_2_str_bs(0 , vals , len) != NULL); fail_if(uc_val_2_str_bs(55 , vals , len) != NULL); fail_if(uc_val_2_str_bs(999 , vals , len) != NULL); END_TEST START_TEST (test_val_str_bsearch_even) struct UCValStr vals[] = { UC_VS_ENTRY(1), UC_VS_ENTRY(2), UC_VS_ENTRY(10), UC_VS_ENTRY(101), }; const size_t len = sizeof vals/sizeof vals[0]; ck_assert_str_eq(uc_val_2_str_bs(1 , vals , len) , "1"); ck_assert_str_eq(uc_val_2_str_bs(2 , vals , len) , "2"); ck_assert_str_eq(uc_val_2_str_bs(10 , vals , len) , "10"); ck_assert_str_eq(uc_val_2_str_bs(101 , vals , len) , "101"); fail_if(uc_val_2_str_bs(0 , vals , len) != NULL); fail_if(uc_val_2_str_bs(55 , vals , len) != NULL); fail_if(uc_val_2_str_bs(999 , vals , len) != NULL); END_TEST START_TEST (test_str_str_search) struct UCStrStr vals[] = { {"1", "A"}, {"2", "B"}, {"3", "C"}, UC_SS_TERMINATOR }; ck_assert_str_eq(uc_str_2_str("1" , vals) , "A"); ck_assert_str_eq(uc_str_2_str("2" , vals) , "B"); ck_assert_str_eq(uc_str_2_str("3" , vals) , "C"); fail_if(uc_str_2_str("10", vals) != NULL); END_TEST START_TEST (test_str_str_ci_search) struct UCStrStr vals[] = { {"A", "1"}, {"az","2"}, {"C", "3"}, UC_SS_TERMINATOR }; ck_assert_str_eq(uc_str_2_str_ci("a" , vals) , "1"); ck_assert_str_eq(uc_str_2_str_ci("aZ" , vals) ,"2"); ck_assert_str_eq(uc_str_2_str_ci("C" , vals) , "3"); fail_if(uc_str_2_str_ci("aza", vals) != NULL); END_TEST Suite *val_str_suite(void) { Suite *s = suite_create("valstr"); TCase *tc = tcase_create("valstr tests"); tcase_add_test(tc, test_val_str_search); tcase_add_test(tc, test_val_str_vs_search); tcase_add_test(tc, test_val_str_bsearch_odd); tcase_add_test(tc, test_val_str_bsearch_even); tcase_add_test(tc, test_str_str_search); tcase_add_test(tc, test_str_str_ci_search); suite_add_tcase(s, tc); return s; }