add RUN_WRAP make var to run tests in qemu (app level emulation)
[libc-test] / src / functional / string_strchr.c
1 #include <string.h>
2 #include "test.h"
3
4 #define N(s, c) { \
5         char *p = s; \
6         char *q = strchr(p, c); \
7         if (q) \
8                 t_error("strchr(%s,%s) returned str+%d, wanted 0\n", #s, #c, q-p); \
9 }
10
11 #define T(s, c, n) { \
12         char *p = s; \
13         char *q = strchr(p, c); \
14         if (q == 0) \
15                 t_error("strchr(%s,%s) returned 0, wanted str+%d\n", #s, #c, n); \
16         else if (q - p != n) \
17                 t_error("strchr(%s,%s) returned str+%d, wanted str+%d\n", #s, #c, q-p, n); \
18 }
19
20 int main(void)
21 {
22         int i;
23         char a[128];
24         char s[256];
25
26         for (i = 0; i < 128; i++)
27                 a[i] = (i+1) & 127;
28         for (i = 0; i < 256; i++)
29                 *((unsigned char*)s+i) = i+1;
30
31         N("", 'a')
32         N("a", 'b')
33         N("abc abc", 'x')
34         N(a, 128)
35         N(a, 255)
36
37         T("", 0, 0)
38         T("a", 'a', 0)
39         T("a", 'a'+256, 0)
40         T("a", 0, 1)
41         T("ab", 'b', 1)
42         T("aab", 'b', 2)
43         T("aaab", 'b', 3)
44         T("aaaab", 'b', 4)
45         T("aaaaab", 'b', 5)
46         T("aaaaaab", 'b', 6)
47         T("abc abc", 'c', 2)
48         T(s, 1, 0)
49         T(s, 2, 1)
50         T(s, 10, 9)
51         T(s, 11, 10)
52         T(s, 127, 126)
53         T(s, 128, 127)
54         T(s, 255, 254)
55         T(s, 0, 255)
56
57         return t_status;
58 }