117 lines
3.4 KiB
C
117 lines
3.4 KiB
C
#include <check.h>
|
|
#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;
|
|
}
|
|
|