Blame src/functional/string_strstr.c

nsz 62a26a
#include <string.h>
nsz 62a26a
#include "test.h"
nsz 62a26a
nsz 62a26a
#define N(s, sub) { \
nsz 62a26a
	char *p = s; \
nsz 62a26a
	char *q = strstr(p, sub); \
nsz 62a26a
	if (q) \
Szabolcs Nagy cfa23c
		t_error("strstr(%s,%s) returned str+%d, wanted 0\n", #s, #sub, q-p); \
nsz 62a26a
}
nsz 62a26a
nsz 62a26a
#define T(s, sub, n) { \
nsz 62a26a
	char *p = s; \
nsz 62a26a
	char *q = strstr(p, sub); \
nsz 62a26a
	if (q == 0) \
Szabolcs Nagy cfa23c
		t_error("strstr(%s,%s) returned 0, wanted str+%d\n", #s, #sub, n); \
nsz 62a26a
	else if (q - p != n) \
Szabolcs Nagy cfa23c
		t_error("strstr(%s,%s) returned str+%d, wanted str+%d\n", #s, #sub, q-p, n); \
nsz 62a26a
}
nsz 62a26a
nsz 62a26a
int main(void)
nsz 62a26a
{
nsz 62a26a
	N("", "a")
nsz 62a26a
	N("a", "aa")
nsz 62a26a
	N("a", "b")
nsz 62a26a
	N("aa", "ab")
nsz 62a26a
	N("aa", "aaa")
nsz 62a26a
	N("abba", "aba")
nsz 62a26a
	N("abc abc", "abcd")
nsz 62a26a
	N("0-1-2-3-4-5-6-7-8-9", "-3-4-56-7-8-")
nsz 62a26a
	N("0-1-2-3-4-5-6-7-8-9", "-3-4-5+6-7-8-")
nsz 62a26a
	N("_ _ _\xff_ _ _", "_\x7f_")
nsz 62a26a
	N("_ _ _\x7f_ _ _", "_\xff_")
nsz 62a26a
nsz 62a26a
	T("", "", 0)
nsz 62a26a
	T("abcd", "", 0)
nsz 62a26a
	T("abcd", "a", 0)
nsz 62a26a
	T("abcd", "b", 1)
nsz 62a26a
	T("abcd", "c", 2)
nsz 62a26a
	T("abcd", "d", 3)
nsz 62a26a
	T("abcd", "ab", 0)
nsz 62a26a
	T("abcd", "bc", 1)
nsz 62a26a
	T("abcd", "cd", 2)
nsz 62a26a
	T("ababa", "baba", 1)
nsz 62a26a
	T("ababab", "babab", 1)
nsz 62a26a
	T("abababa", "bababa", 1)
nsz 62a26a
	T("abababab", "bababab", 1)
nsz 62a26a
	T("ababababa", "babababa", 1)
nsz 62a26a
	T("nanabanabanana", "aba", 3)
nsz 62a26a
	T("nanabanabanana", "ban", 4)
nsz 62a26a
	T("nanabanabanana", "anab", 1)
nsz 62a26a
	T("nanabanabanana", "banana", 8)
nsz 62a26a
	T("_ _\xff_ _", "_\xff_", 2)
nsz 62a26a
Szabolcs Nagy cfa23c
	return t_status;
nsz 62a26a
}