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