0039-mbrtowc.c - scc - simple c99 compiler
(HTM) git clone git://git.simple-cc.org/scc
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) Submodules
(DIR) README
(DIR) LICENSE
---
0039-mbrtowc.c (1268B)
---
1 #include <assert.h>
2 #include <errno.h>
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <string.h>
6 #include <wchar.h>
7
8 #include "mbtest.h"
9
10 /*
11 output:
12 testing
13 testing mbrtowc1
14 testing mbrtowc2
15 testing mbtowc
16 done
17 end:
18 */
19
20 #define NELEM(x) (sizeof(x)/sizeof(x[0]))
21
22 void
23 tests_mbrtowc(void)
24 {
25 struct mbtest *tp;
26 int r;
27 mbstate_t s;
28
29 puts("testing mbrtowc1");
30 for (tp = tests; tp < &tests[NELEM(tests)]; ++tp) {
31 wc = -1;
32 errno = 0;
33 r = mbrtowc(tp->pwc, tp->s, tp->l, NULL);
34 assert(tp->rmbr == r);
35 assert(tp->syserr == errno);
36 if (tp->rmbr != -1)
37 assert(tp->wc == wc);
38 }
39
40 puts("testing mbrtowc2");
41 memset(&s, 0, sizeof(s));
42 for (tp = tests; tp < &tests[NELEM(tests)]; ++tp) {
43 wc = -1;
44 errno = 0;
45 r = mbrtowc(tp->pwc, tp->s, tp->l, &s);
46 assert(tp->rmbr == r);
47 assert(tp->syserr == errno);
48 if (tp->rmbr != -1)
49 assert(tp->wc == wc);
50 assert(mbsinit(&s) != 0 == tp->mbstate);
51 }
52 }
53
54 void
55 tests_mbtowc(void)
56 {
57 struct mbtest *tp;
58 int r, rt;
59
60 puts("testing mbtowc");
61 for (tp = tests; tp < &tests[NELEM(tests)]; ++tp) {
62 wc = -1;
63 r = mbtowc(tp->pwc, tp->s, tp->l);
64 assert(tp->rmb == r);
65 if (tp->rmb >= 0)
66 assert(tp->wc == wc);
67 }
68 }
69
70 int
71 main()
72 {
73 puts("testing");
74 tests_mbrtowc();
75 tests_mbtowc();
76 puts("done");
77 return 0;
78 }