diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libstrongswan/tests/test_utils.c | 36 | ||||
-rw-r--r-- | src/libstrongswan/utils/utils.h | 8 |
2 files changed, 44 insertions, 0 deletions
diff --git a/src/libstrongswan/tests/test_utils.c b/src/libstrongswan/tests/test_utils.c index d9f1726ff..6ab60a6fd 100644 --- a/src/libstrongswan/tests/test_utils.c +++ b/src/libstrongswan/tests/test_utils.c @@ -188,6 +188,38 @@ START_TEST(test_round) END_TEST /******************************************************************************* + * strpfx + */ + +static struct { + char *str; + char *pfx; + bool prefix; + bool case_prefix; +} strpfx_data[] = { + {"", "", TRUE, TRUE}, + {"abc", "", TRUE, TRUE}, + {"abc", "a", TRUE, TRUE}, + {"abc", "ab", TRUE, TRUE}, + {"abc", "abc", TRUE, TRUE}, + {"abc", "abcd", FALSE, FALSE}, + {"abc", "AB", FALSE, TRUE}, + {"ABC", "ab", FALSE, TRUE}, + {" abc", "abc", FALSE, FALSE}, +}; + +START_TEST(test_strpfx) +{ + bool prefix; + + prefix = strpfx(strpfx_data[_i].str, strpfx_data[_i].pfx); + ck_assert(prefix == strpfx_data[_i].prefix); + prefix = strcasepfx(strpfx_data[_i].str, strpfx_data[_i].pfx); + ck_assert(prefix == strpfx_data[_i].case_prefix); +} +END_TEST + +/******************************************************************************* * memxor */ @@ -442,6 +474,10 @@ Suite *utils_suite_create() tcase_add_test(tc, test_round); suite_add_tcase(s, tc); + tc = tcase_create("string helper"); + tcase_add_loop_test(tc, test_strpfx, 0, countof(strpfx_data)); + suite_add_tcase(s, tc); + tc = tcase_create("memxor"); tcase_add_test(tc, test_memxor); tcase_add_test(tc, test_memxor_aligned); diff --git a/src/libstrongswan/utils/utils.h b/src/libstrongswan/utils/utils.h index d055f712d..8fe741211 100644 --- a/src/libstrongswan/utils/utils.h +++ b/src/libstrongswan/utils/utils.h @@ -113,6 +113,14 @@ static inline bool strncaseeq(const char *x, const char *y, size_t len) } /** + * Helper function that checks if a string starts with a given prefix + */ +static inline bool strcasepfx(const char *x, const char *prefix) +{ + return strncaseeq(x, prefix, strlen(prefix)); +} + +/** * NULL-safe strdup variant */ static inline char *strdupnull(const char *s) |