diff options
| author | Marko Kreen | 2014-06-22 14:37:49 +0000 |
|---|---|---|
| committer | Marko Kreen | 2014-06-27 13:56:02 +0000 |
| commit | 98655be803733da090074cf4d8f7ae355990f142 (patch) | |
| tree | a85203a7220bfc330922f22d75f28e328a426099 /test | |
| parent | 1183d59f789646b85452977b76010fd8b7795590 (diff) | |
string: memstring functions
Diffstat (limited to 'test')
| -rw-r--r-- | test/test_string.c | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/test/test_string.c b/test/test_string.c index b321961..cf4e3c0 100644 --- a/test/test_string.c +++ b/test/test_string.c @@ -100,6 +100,49 @@ end:; } /* + * memmem + */ + +static int zmemm(const char *s, const char *q) +{ + char *r = memmem(s, strlen(s), q, strlen(q)); + return r ? (r - s) : -1; +} + +static void test_memmem(void *p) +{ + int_check(zmemm("qwe", ""), 0); + int_check(zmemm("qwe", "q"), 0); + int_check(zmemm("qwe", "w"), 1); + int_check(zmemm("qwe", "e"), 2); + int_check(zmemm("qwe", "x"), -1); + int_check(zmemm("qwe", "qw"), 0); + int_check(zmemm("qwe", "we"), 1); + int_check(zmemm("qwe", "qx"), -1); + int_check(zmemm("qwe", "wx"), -1); + int_check(zmemm("qwe", "ex"), -1); + int_check(zmemm("qwe", "qwe"), 0); + int_check(zmemm("qwe", "qwx"), -1); + int_check(zmemm("qwe", "qxe"), -1); + int_check(zmemm("qwe", "xwe"), -1); + int_check(zmemm("qweqweza", "qweza"), 3); + int_check(zmemm("qweqweza", "weza"), 4); + int_check(zmemm("qweqweza", "eza"), 5); + int_check(zmemm("qweqweza", "za"), 6); + int_check(zmemm("qweqweza", "a"), 7); + int_check(zmemm("qweqweza", "qwez"), 3); + int_check(zmemm("qweqweza", "wez"), 4); + int_check(zmemm("qweqweza", "ez"), 5); + int_check(zmemm("qweqweza", "z"), 6); + int_check(zmemm("qweqwez", "qweza"), -1); + int_check(zmemm("qweqwez", "weza"), -1); + int_check(zmemm("qweqwez", "eza"), -1); + int_check(zmemm("qweqwez", "za"), -1); + int_check(zmemm("qweqwez", "a"), -1); +end:; +} + +/* * basename */ @@ -244,6 +287,56 @@ static void test_wlist(void *p) end:; } +static void test_mempbrk(void *z) +{ + const char *p = "0123456789"; + tt_assert(mempbrk(p, 10, "", 0) == NULL); + tt_assert(mempbrk(p, 10, "a", 0) == NULL); + tt_assert(mempbrk(p, 10, "ab", 0) == NULL); + tt_assert(mempbrk(p, 10, "abc", 0) == NULL); + tt_assert(mempbrk(p, 10, "1", 1) == p+1); + tt_assert(mempbrk(p, 10, "12", 2) == p+1); + tt_assert(mempbrk(p, 10, "21", 2) == p+1); + tt_assert(mempbrk(p, 10, "123", 3) == p+1); + tt_assert(mempbrk(p, 10, "321", 3) == p+1); + tt_assert(mempbrk(p, 11, "abc\0", 4) == p+10); +end:; +} + +static void test_memcspn(void *z) +{ + int_check(memcspn("qwe", 3, "", 0), 3); + int_check(memcspn("qwe", 3, "w", 1), 1); + int_check(memcspn("qwe", 3, "z", 1), 3); + int_check(memcspn("qwe", 3, "we", 2), 1); + int_check(memcspn("qwe", 3, "eq", 2), 0); + int_check(memcspn("qwe", 3, "zx", 2), 3); + int_check(memcspn("qwe", 3, "wez", 3), 1); + int_check(memcspn("qwe", 3, "ewz", 3), 1); + int_check(memcspn("qwe", 3, "zxa", 3), 3); + int_check(memcspn("qwe", 3, "weza", 4), 1); + int_check(memcspn("qwe", 3, "azew", 4), 1); + int_check(memcspn("qwe", 3, "zxab", 4), 3); +end:; +} + +static void test_memspn(void *z) +{ + const char *d = "0123456789"; + int_check(memspn(d, 10, "", 0), 0); + int_check(memspn(d, 10, "0", 1), 1); + int_check(memspn(d, 10, "1", 1), 0); + int_check(memspn(d, 10, "23", 2), 0); + int_check(memspn(d, 10, "01", 2), 2); + int_check(memspn(d, 10, "456", 3), 0); + int_check(memspn(d, 10, "012", 3), 3); + int_check(memspn(d, 10, "4567", 4), 0); + int_check(memspn(d, 10, "0123", 4), 4); + int_check(memspn(d, 10, d, 10), 10); + int_check(memspn(d, 11, d, 11), 11); +end:; +} + /* * Describe */ @@ -253,6 +346,10 @@ struct testcase_t string_tests[] = { { "strlcat", test_strlcat }, { "strerror_r", test_strerror_r }, { "memrchr", test_memrchr }, + { "memmem", test_memmem }, + { "mempbrk", test_mempbrk }, + { "memcspn", test_memcspn }, + { "memspn", test_memspn}, { "basename", test_basename }, { "dirname", test_dirname }, { "strlist", test_strlist }, |
