From 62a26a269d7825d4d60630c3915d804fa18f9022 Mon Sep 17 00:00:00 2001 From: nsz Date: Mon, 22 Oct 2012 21:03:55 +0200 Subject: [PATCH] general: add memmem and strstr tests --- src/general/string_memmem.c | 58 +++++++++++++++++++++++++++++++++++++ src/general/string_strstr.c | 55 +++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 src/general/string_memmem.c create mode 100644 src/general/string_strstr.c diff --git a/src/general/string_memmem.c b/src/general/string_memmem.c new file mode 100644 index 0000000..d21164a --- /dev/null +++ b/src/general/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; +} diff --git a/src/general/string_strstr.c b/src/general/string_strstr.c new file mode 100644 index 0000000..2e3b352 --- /dev/null +++ b/src/general/string_strstr.c @@ -0,0 +1,55 @@ +#include +#include "test.h" + +#define N(s, sub) { \ + char *p = s; \ + char *q = strstr(p, sub); \ + if (q) \ + error("strstr(%s,%s) returned str+%d, wanted 0\n", #s, #sub, q-p); \ +} + +#define T(s, sub, n) { \ + char *p = s; \ + char *q = strstr(p, sub); \ + if (q == 0) \ + error("strstr(%s,%s) returned 0, wanted str+%d\n", #s, #sub, n); \ + else if (q - p != n) \ + error("strstr(%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; +} -- 2.20.1