1/*
2 * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
3 *
4 * FILE: dat_wcsrtombs.c
5 *
6 * WCSTOMBS: size_t wcsrtombs (char *s, const wchar_t **ws,
7 * size_t n, mbstate *ps)
8 */
9
10
11/*
12 * CAUTION:
13 * Do not use a value 0x01 for string data. The test program
14 * uses it.
15 *
16 */
17
18
19TST_WCSRTOMBS tst_wcsrtombs_loc [] = {
20 {
21 { Twcsrtombs, TST_LOC_de },
22 {
23 /* #01 : Any chars including a null char should not be stored in s. */
24 { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 0, 0, 0},
25 /*expect*/ { 0,1,0, "" },
26 },
27 /* #02 : Only one chars should be stored in s. No null termination. */
28 { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 1, 0, 0 },
29 /*expect*/ { 0,1,1, "Ä" },
30 },
31 /* #03 : Only two chars should be stored in s. No null termination. */
32 { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 2, 0, 0 },
33 /*expect*/ { 0,1,2, "ÄÖ" },
34 },
35 /* #04 : Only three chars should be stored in s. No null
36 termination. */
37 { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 3, 0, 0 },
38 /*expect*/ { 0,1,3, "ÄÖÜ" },
39 },
40 /* #05 : Only three chars should be stored in s with a null
41 termination. */
42 { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 4, 0, 0 },
43 /*expect*/ { 0,1,3, "ÄÖÜ" },
44 },
45 /* #06 : Only three chars should be stored in s with a null
46 termination. */
47 { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 5, 0, 0 },
48 /*expect*/ { 0,1,3, "ÄÖÜ" },
49 },
50 /* #07 : Invalid mb sequence. No chars should be stored in s. */
51 { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2, 0, 0 },
52 /*expect*/ { EILSEQ,1,(size_t)-1, "" },
53 },
54 /* #08 : s is a null pointer, no chars should be stored in s. */
55 { /*input.*/ { 0,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 0, 0, 0 },
56 /*expect*/ { 0,1,3, "" },
57 },
58 /* #09 : s is a null pointer, no chars should be stored in s. */
59 { /*input.*/ { 0,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 1, 0, 0 },
60 /*expect*/ { 0,1,3, "" },
61 },
62 /* #10 : s is a null pointer, no chars should be stored in s. */
63 { /*input.*/ { 0,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 5, 0, 0 },
64 /*expect*/ { 0,1,3, "" },
65 },
66 /* #11 : s is a null pointer. No chars should be stored in s. */
67 { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5, 0, 0 },
68 /*expect*/ { EILSEQ,1,(size_t)-1, "" },
69 },
70 /* #12 : ws is a null wc string, no chars should be stored in s. */
71 { /*input.*/ { 1,1, { 0x0000 }, 5, 0, 0 },
72 /*expect*/ { 0,1,0, "" },
73 },
74 /* #13 : s is a null pointer, no chars should be stored in s. */
75 { /*input.*/ { 0,1, { 0x0000 }, 5, 0, 0 },
76 /*expect*/ { 0,1,0, "" },
77 },
78 { .is_last = 1 }
79 }
80 },
81 {
82 { Twcsrtombs, TST_LOC_enUS },
83 {
84 /* #01 : Any chars including a null char should not be stored in s. */
85 { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 0, 0, 0 },
86 /*expect*/ { 0,1,0, "" },
87 },
88 /* #02 : Only one chars should be stored in s. No null termination. */
89 { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 1, 0, 0 },
90 /*expect*/ { 0,1,1, "A" },
91 },
92 /* #03 : Only two chars should be stored in s. No null termination. */
93 { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 2, 0, 0 },
94 /*expect*/ { 0,1,2, "AB" },
95 },
96 /* #04 : Only three chars should be stored in s. No null
97 termination. */
98 { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 3, 0, 0 },
99 /*expect*/ { 0,1,3, "ABC" },
100 },
101 /* #05 : Only three chars should be stored in s with a null
102 termination. */
103 { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 4, 0, 0 },
104 /*expect*/ { 0,1,3, "ABC" },
105 },
106 /* #06 : Only three chars should be stored in s with a null
107 termination. */
108 { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 5, 0, 0 },
109 /*expect*/ { 0,1,3, "ABC" },
110 },
111 /* #07 : Invalid mb sequence. No chars should be stored in s. */
112 { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2, 0, 0 },
113 /*expect*/ { EILSEQ,1,(size_t)-1, "" },
114 },
115 /* #08 : s is a null pointer, no chars should be stored in s. */
116 { /*input.*/ { 0,1, { 0x0041,0x0042,0x0043,0x0000 }, 0, 0, 0 },
117 /*expect*/ { 0,1,3, "" },
118 },
119 /* #09 : s is a null pointer, no chars should be stored in s. */
120 { /*input.*/ { 0,1, { 0x0041,0x0042,0x0043,0x0000 }, 1, 0, 0 },
121 /*expect*/ { 0,1,3, "" },
122 },
123 /* #10 : s is a null pointer, no chars should be stored in s. */
124 { /*input.*/ { 0,1, { 0x0041,0x0042,0x0043,0x0000 }, 5, 0, 0 },
125 /*expect*/ { 0,1,3, "" },
126 },
127 /* #11 : s is a null pointer. No chars should be stored in s. */
128 { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5, 0, 0 },
129 /*expect*/ { EILSEQ,1,(size_t)-1, "" },
130 },
131 /* #12 : ws is a null wc string, no chars should be stored in s. */
132 { /*input.*/ { 1,1, { 0x0000 }, 5, 0, 0 },
133 /*expect*/ { 0,1,0, "" },
134 },
135 /* #13 : s is a null pointer, no chars should be stored in s. */
136 { /*input.*/ { 0,1, { 0x0000 }, 5, 0, 0 },
137 /*expect*/ { 0,1,0, "" },
138 },
139 { .is_last = 1 }
140 }
141 },
142 {
143 { Twcsrtombs, TST_LOC_eucJP },
144 {
145
146 /* #01 : Any chars including a null char should not be stored in s. */
147 { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0, 0, 0 },
148 /*expect*/ { 0,1,0, "" },
149 },
150 /* #02 : Only one chars should be stored in s. No null termination. */
151 { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 2, 0, 0 },
152 /*expect*/ { 0,1,2, "\244\242" },
153 },
154 /* #03 : Only two chars should be stored in s. No null termination. */
155 { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 4, 0, 0 },
156 /*expect*/ { 0,1,4, "\244\242\244\244" },
157 },
158 /* #04 : Only three chars should be stored in s. No null
159 termination. */
160 { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 6, 0, 0 },
161 /*expect*/ { 0,1,6, "\244\242\244\244\216\263" },
162 },
163 /* #05 : Only three chars should be stored in s with a null
164 termination. */
165 { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 7, 0, 0 },
166 /*expect*/ { 0,1,6, "\244\242\244\244\216\263" },
167 },
168 /* #06 : Only three chars should be stored in s with a null
169 termination. */
170 { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 8, 0, 0 },
171 /*expect*/ { 0,1,6, "\244\242\244\244\216\263" },
172 },
173 /* #07 : Invalid mb sequence. No chars should be stored in s. */
174 { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2, 0, 0 },
175 /*expect*/ { EILSEQ,1,-1, "" },
176 },
177 /* #08 : s is a null pointer, no chars should be stored in s. */
178 { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0, 0, 0 },
179 /*expect*/ { 0,1,6, "" },
180 },
181 /* #09 : s is a null pointer, no chars should be stored in s. */
182 { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 1, 0, 0 },
183 /*expect*/ { 0,1,6, "" },
184 },
185 /* #10 : s is a null pointer, no chars should be stored in s. */
186 { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 8, 0, 0 },
187 /*expect*/ { 0,1,6, "" },
188 },
189 /* #11 : s is a null pointer. No chars should be stored in s. */
190 { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5, 0, 0 },
191 /*expect*/ { EILSEQ,1,(size_t)-1, "" },
192 },
193 /* #12 : ws is a null wc string, no chars should be stored in s. */
194 { /*input.*/ { 1,1, { 0x0000 }, 5, 0, 0 },
195 /*expect*/ { 0,1,0, "" },
196 },
197 /* #13 : s is a null pointer, no chars should be stored in s. */
198 { /*input.*/ { 0,1, { 0x0000 }, 5, 0, 0 },
199 /*expect*/ { 0,1,0, "" },
200 },
201 { .is_last = 1 }
202 }
203 },
204 {
205 { Twcsrtombs, TST_LOC_end }
206 }
207};
208

source code of glibc/localedata/tests-mbwc/dat_wcsrtombs.c