summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMarko Kreen2014-06-22 14:37:49 +0000
committerMarko Kreen2014-06-27 13:56:02 +0000
commit98655be803733da090074cf4d8f7ae355990f142 (patch)
treea85203a7220bfc330922f22d75f28e328a426099 /test
parent1183d59f789646b85452977b76010fd8b7795590 (diff)
string: memstring functions
Diffstat (limited to 'test')
-rw-r--r--test/test_string.c97
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 },