1570af302Sopenharmony_ci#include <string.h>
2570af302Sopenharmony_ci#include "test.h"
3570af302Sopenharmony_ci
4570af302Sopenharmony_ci#define N(s, sub) { \
5570af302Sopenharmony_ci	char *p = s; \
6570af302Sopenharmony_ci	char *q = strstr(p, sub); \
7570af302Sopenharmony_ci	if (q) \
8570af302Sopenharmony_ci		t_error("strstr(%s,%s) returned str+%d, wanted 0\n", #s, #sub, q-p); \
9570af302Sopenharmony_ci}
10570af302Sopenharmony_ci
11570af302Sopenharmony_ci#define T(s, sub, n) { \
12570af302Sopenharmony_ci	char *p = s; \
13570af302Sopenharmony_ci	char *q = strstr(p, sub); \
14570af302Sopenharmony_ci	if (q == 0) \
15570af302Sopenharmony_ci		t_error("strstr(%s,%s) returned 0, wanted str+%d\n", #s, #sub, n); \
16570af302Sopenharmony_ci	else if (q - p != n) \
17570af302Sopenharmony_ci		t_error("strstr(%s,%s) returned str+%d, wanted str+%d\n", #s, #sub, q-p, n); \
18570af302Sopenharmony_ci}
19570af302Sopenharmony_ci
20570af302Sopenharmony_ciint main(void)
21570af302Sopenharmony_ci{
22570af302Sopenharmony_ci	N("", "a")
23570af302Sopenharmony_ci	N("a", "aa")
24570af302Sopenharmony_ci	N("a", "b")
25570af302Sopenharmony_ci	N("aa", "ab")
26570af302Sopenharmony_ci	N("aa", "aaa")
27570af302Sopenharmony_ci	N("abba", "aba")
28570af302Sopenharmony_ci	N("abc abc", "abcd")
29570af302Sopenharmony_ci	N("0-1-2-3-4-5-6-7-8-9", "-3-4-56-7-8-")
30570af302Sopenharmony_ci	N("0-1-2-3-4-5-6-7-8-9", "-3-4-5+6-7-8-")
31570af302Sopenharmony_ci	N("_ _ _\xff_ _ _", "_\x7f_")
32570af302Sopenharmony_ci	N("_ _ _\x7f_ _ _", "_\xff_")
33570af302Sopenharmony_ci
34570af302Sopenharmony_ci	T("", "", 0)
35570af302Sopenharmony_ci	T("abcd", "", 0)
36570af302Sopenharmony_ci	T("abcd", "a", 0)
37570af302Sopenharmony_ci	T("abcd", "b", 1)
38570af302Sopenharmony_ci	T("abcd", "c", 2)
39570af302Sopenharmony_ci	T("abcd", "d", 3)
40570af302Sopenharmony_ci	T("abcd", "ab", 0)
41570af302Sopenharmony_ci	T("abcd", "bc", 1)
42570af302Sopenharmony_ci	T("abcd", "cd", 2)
43570af302Sopenharmony_ci	T("ababa", "baba", 1)
44570af302Sopenharmony_ci	T("ababab", "babab", 1)
45570af302Sopenharmony_ci	T("abababa", "bababa", 1)
46570af302Sopenharmony_ci	T("abababab", "bababab", 1)
47570af302Sopenharmony_ci	T("ababababa", "babababa", 1)
48570af302Sopenharmony_ci	T("abbababab", "bababa", 2)
49570af302Sopenharmony_ci	T("abbababab", "ababab", 3)
50570af302Sopenharmony_ci	T("abacabcabcab", "abcabcab", 4)
51570af302Sopenharmony_ci	T("nanabanabanana", "aba", 3)
52570af302Sopenharmony_ci	T("nanabanabanana", "ban", 4)
53570af302Sopenharmony_ci	T("nanabanabanana", "anab", 1)
54570af302Sopenharmony_ci	T("nanabanabanana", "banana", 8)
55570af302Sopenharmony_ci	T("_ _\xff_ _", "_\xff_", 2)
56570af302Sopenharmony_ci
57570af302Sopenharmony_ci	return t_status;
58570af302Sopenharmony_ci}
59