1570af302Sopenharmony_ci#include <stddef.h>
2570af302Sopenharmony_ci#include <string.h>
3570af302Sopenharmony_ci#include "test.h"
4570af302Sopenharmony_ci
5570af302Sopenharmony_ci#define T(s, c, n) { \
6570af302Sopenharmony_ci	char *p = s; \
7570af302Sopenharmony_ci	char *q = c; \
8570af302Sopenharmony_ci	size_t r = strcspn(p, q); \
9570af302Sopenharmony_ci	if (r != n) \
10570af302Sopenharmony_ci		t_error("strcspn(%s,%s) returned %lu, wanted %lu\n", #s, #c, (unsigned long)r, (unsigned long)(n)); \
11570af302Sopenharmony_ci}
12570af302Sopenharmony_ci
13570af302Sopenharmony_ciint main(void)
14570af302Sopenharmony_ci{
15570af302Sopenharmony_ci	int i;
16570af302Sopenharmony_ci	char a[128];
17570af302Sopenharmony_ci	char s[256];
18570af302Sopenharmony_ci
19570af302Sopenharmony_ci	for (i = 0; i < 128; i++)
20570af302Sopenharmony_ci		a[i] = (i+1) & 127;
21570af302Sopenharmony_ci	for (i = 0; i < 256; i++)
22570af302Sopenharmony_ci		*((unsigned char*)s+i) = i+1;
23570af302Sopenharmony_ci
24570af302Sopenharmony_ci	T("", "", 0)
25570af302Sopenharmony_ci	T("a", "", 1)
26570af302Sopenharmony_ci	T("", "a", 0)
27570af302Sopenharmony_ci	T("abc", "cde", 2)
28570af302Sopenharmony_ci	T("abc", "ccc", 2)
29570af302Sopenharmony_ci	T("abc", a, 0)
30570af302Sopenharmony_ci	T("\xff\x80 abc", a, 2)
31570af302Sopenharmony_ci	T(s, "\xff", 254)
32570af302Sopenharmony_ci
33570af302Sopenharmony_ci	return t_status;
34570af302Sopenharmony_ci}
35