X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Ffunctional%2Fstring_memmem.c;fp=src%2Ffunctional%2Fstring_memmem.c;h=d21164ab3cd1b0ad9af6b5c45fd587cdbe0fe7d6;hb=2cf89517c5b25c2524fe0c0c01ed277d7307a852;hp=0000000000000000000000000000000000000000;hpb=e248db1c46f61cf34548e739bc6ff106013b1ba2;p=libc-test diff --git a/src/functional/string_memmem.c b/src/functional/string_memmem.c new file mode 100644 index 0000000..d21164a --- /dev/null +++ b/src/functional/string_memmem.c @@ -0,0 +1,58 @@ +#ifndef _GNU_SOURCE +#define _GNU_SOURCE 1 +#endif +#include +#include "test.h" + +#define N(s, sub) { \ + char *p = s; \ + char *q = memmem(p, strlen(p), sub, strlen(sub)); \ + if (q) \ + error("memmem(%s,%s) returned str+%d, wanted 0\n", #s, #sub, q-p); \ +} + +#define T(s, sub, n) { \ + char *p = s; \ + char *q = memmem(p, strlen(p), sub, strlen(sub)); \ + if (q == 0) \ + error("memmem(%s,%s) returned 0, wanted str+%d\n", #s, #sub, n); \ + else if (q - p != n) \ + error("memmem(%s,%s) returned str+%d, wanted str+%d\n", #s, #sub, q-p, n); \ +} + +int main(void) +{ + N("", "a") + N("a", "aa") + N("a", "b") + N("aa", "ab") + N("aa", "aaa") + N("abba", "aba") + N("abc abc", "abcd") + N("0-1-2-3-4-5-6-7-8-9", "-3-4-56-7-8-") + N("0-1-2-3-4-5-6-7-8-9", "-3-4-5+6-7-8-") + N("_ _ _\xff_ _ _", "_\x7f_") + N("_ _ _\x7f_ _ _", "_\xff_") + + T("", "", 0) + T("abcd", "", 0) + T("abcd", "a", 0) + T("abcd", "b", 1) + T("abcd", "c", 2) + T("abcd", "d", 3) + T("abcd", "ab", 0) + T("abcd", "bc", 1) + T("abcd", "cd", 2) + T("ababa", "baba", 1) + T("ababab", "babab", 1) + T("abababa", "bababa", 1) + T("abababab", "bababab", 1) + T("ababababa", "babababa", 1) + T("nanabanabanana", "aba", 3) + T("nanabanabanana", "ban", 4) + T("nanabanabanana", "anab", 1) + T("nanabanabanana", "banana", 8) + T("_ _\xff_ _", "_\xff_", 2) + + return test_status; +}