Blame src/functional/wcsstr.c

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