1/*
2 * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
3 *
4 * FILE: dat_wcswidth.c
5 *
6 * WCSWIDTH: int wcswidth (const wchar_t *ws, size_t n);
7 */
8
9TST_WCSWIDTH tst_wcswidth_loc [] = {
10 {
11 { Twcswidth, TST_LOC_de },
12 {
13 { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 0 }, /* 01 */
14 /*expect*/ { 0,1,0 },
15 },
16 { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 1 }, /* 02 */
17 /*expect*/ { 0,1,1 },
18 },
19 { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 2 }, /* 03 */
20 /*expect*/ { 0,1,2 },
21 },
22 { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 3 }, /* 04 */
23 /*expect*/ { 0,1,3 },
24 },
25 { /*input.*/ { { 0x00C1,0x00C2,0x00C3,0x0000 }, 4 }, /* 05 */
26 /*expect*/ { 0,1,3 },
27 },
28 { /*input.*/ { { 0x0000 }, 1 }, /* 06 */
29 /*expect*/ { 0,1,0 },
30 },
31 { /*input.*/ { { 0x00C1,0x0001,0x0000 }, 2 }, /* 07 */
32 /*expect*/ { 0,1,-1 },
33 },
34 { /*input.*/ { { 0x00C1,0x0001,0x0000 }, 1 }, /* 08 */
35 /*expect*/ { 0,1,1 },
36 },
37 { /*input.*/ { { 0x00C1,0x0001,0x0000 }, 2 }, /* 09 */
38 /*expect*/ { 0,1,-1 },
39 },
40 { /*input.*/ { { 0x00C1,0x0092,0x0000 }, 2 }, /* 10 */
41 /*expect*/ { 0,1,-1 },
42 },
43 { /*input.*/ { { 0x00C1,0x0020,0x0000 }, 2 }, /* 11 */
44 /*expect*/ { 0,1,2 },
45 },
46 { /*input.*/ { { 0x00C1,0x0021,0x0000 }, 2 }, /* 12 */
47 /*expect*/ { 0,1,2 },
48 },
49 { /*input.*/ { { 0x00C1,0x007E,0x0000 }, 2 }, /* 13 */
50 /*expect*/ { 0,1,2 },
51 },
52 { /*input.*/ { { 0x00C1,0x007F,0x0000 }, 2 }, /* 14 */
53 /*expect*/ { 0,1,-1 },
54 },
55 { /*input.*/ { { 0x00C1,0x0080,0x0000 }, 2 }, /* 15 */
56 /*expect*/ { 0,1,-1 },
57 },
58 { /*input.*/ { { 0x00C1,0x00A0,0x0000 }, 2 }, /* 16 */
59 /*expect*/ { 0,1,2 },
60 },
61 { /*input.*/ { { 0x00C1,0x00A1,0x0000 }, 2 }, /* 17 */
62 /*expect*/ { 0,1,2 },
63 },
64 { /*input.*/ { { 0x00C1,0x00FF,0x0000 }, 2 }, /* 18 */
65 /*expect*/ { 0,1,2 },
66 },
67 { /*input.*/ { { 0x00C1,0x3042,0x0000 }, 2 }, /* 19 */
68 /*expect*/ { 0,1,-1 },
69 },
70 { /*input.*/ { { 0x00C1,0x3044,0x0000 }, 2 }, /* 20 */
71 /*expect*/ { 0,1,-1 },
72 },
73 { .is_last = 1 }
74 }
75 },
76 {
77 { Twcswidth, TST_LOC_enUS },
78 {
79 { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 }, 0 }, /* 01 */
80 /*expect*/ { 0,1,0 },
81 },
82 { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 }, 1 }, /* 02 */
83 /*expect*/ { 0,1,1 },
84 },
85 { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 }, 2 }, /* 03 */
86 /*expect*/ { 0,1,2 },
87 },
88 { /*input.*/ { { 0x0041,0x0042,0x00C3,0x0000 }, 3 }, /* 04 */
89 /*expect*/ { 0,1,-1 },
90 },
91 { /*input.*/ { { 0x0041,0x0042,0x0043,0x0000 }, 4 }, /* 05 */
92 /*expect*/ { 0,1,3 },
93 },
94 { /*input.*/ { { 0x0000 }, 1 }, /* 06 */
95 /*expect*/ { 0,1,0 },
96 },
97 { /*input.*/ { { 0x0041,0x0001,0x0000 }, 2 }, /* 07 */
98 /*expect*/ { 0,1,-1 },
99 },
100 { /*input.*/ { { 0x0041,0x0001,0x0000 }, 1 }, /* 08 */
101 /*expect*/ { 0,1,1 },
102 },
103 { /*input.*/ { { 0x0041,0x0001,0x0000 }, 2 }, /* 09 */
104 /*expect*/ { 0,1,-1 },
105 },
106 { /*input.*/ { { 0x0041,0x0092,0x0000 }, 2 }, /* 10 */
107 /*expect*/ { 0,1,-1 },
108 },
109 { /*input.*/ { { 0x0041,0x0020,0x0000 }, 2 }, /* 11 */
110 /*expect*/ { 0,1,2 },
111 },
112 { /*input.*/ { { 0x0041,0x0021,0x0000 }, 2 }, /* 12 */
113 /*expect*/ { 0,1,2 },
114 },
115 { /*input.*/ { { 0x0041,0x007E,0x0000 }, 2 }, /* 13 */
116 /*expect*/ { 0,1,2 },
117 },
118 { /*input.*/ { { 0x0041,0x007F,0x0000 }, 2 }, /* 14 */
119 /*expect*/ { 0,1,-1 },
120 },
121 { /*input.*/ { { 0x0041,0x0080,0x0000 }, 2 }, /* 15 */
122 /*expect*/ { 0,1,-1 },
123 },
124 { /*input.*/ { { 0x0041,0x00A0,0x0000 }, 2 }, /* 16 */
125 /*expect*/ { 0,1,-1 },
126 },
127 { /*input.*/ { { 0x0041,0x007E,0x0000 }, 2 }, /* 17 */
128 /*expect*/ { 0,1,2 },
129 },
130 { /*input.*/ { { 0x0041,0x0020,0x0000 }, 2 }, /* 18 */
131 /*expect*/ { 0,1,2 },
132 },
133 { /*input.*/ { { 0x0041,0x3042,0x0000 }, 2 }, /* 19 */
134 /*expect*/ { 0,1,-1 },
135 },
136 { /*input.*/ { { 0x0041,0x3044,0x0000 }, 2 }, /* 20 */
137 /*expect*/ { 0,1,-1 },
138 },
139 { .is_last = 1 }
140 }
141 },
142 {
143 { Twcswidth, TST_LOC_eucJP },
144 {
145 { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 0 }, /* 01 */
146 /*expect*/ { 0,1,0 },
147 },
148 { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 1 }, /* 02 */
149 /*expect*/ { 0,1,2 },
150 },
151 { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 2 }, /* 03 */
152 /*expect*/ { 0,1,4 },
153 },
154 { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 3 }, /* 04 */
155 /*expect*/ { 0,1,6 },
156 },
157 { /*input.*/ { { 0x3041,0x3042,0x3043,0x0000 }, 4 }, /* 05 */
158 /*expect*/ { 0,1,6 },
159 },
160 { /*input.*/ { { 0x0000 }, 1 }, /* 06 */
161 /*expect*/ { 0,1,0 },
162 },
163 { /*input.*/ { { 0x008E,0x0001,0x0000 }, 2 }, /* 07 */
164 /*expect*/ { 0,1,-1 },
165 },
166 { /*input.*/ { { 0x3041,0x008E,0x0000 }, 1 }, /* 08 */
167 /*expect*/ { 0,1,2 },
168 },
169 { /*input.*/ { { 0x3041,0x008E,0x0000 }, 2 }, /* 09 */
170 /*expect*/ { 0,1,-1 },
171 },
172 { /*input.*/ { { 0x3041,0x0001,0x0000 }, 2 }, /* 10 */
173 /*expect*/ { 0,1,-1 },
174 },
175 { /*input.*/ { { 0x3041,0x3000,0x0000 }, 2 }, /* 11 */
176 /*expect*/ { 0,1,4 },
177 },
178 { /*input.*/ { { 0x0041,0x0021,0x0000 }, 2 }, /* 12 */
179 /*expect*/ { 0,1,2 },
180 },
181 { /*input.*/ { { 0x0041,0x007E,0x0000 }, 2 }, /* 13 */
182 /*expect*/ { 0,1,2 },
183 },
184 { /*input.*/ { { 0x0041,0x007F,0x0000 }, 2 }, /* 14 */
185 /*expect*/ { 0,1,-1 },
186 },
187 { /*input.*/ { { 0x0041,0x0080,0x0000 }, 2 }, /* 15 */
188 /*expect*/ { 0,1,-1 },
189 },
190 { /*input.*/ { { 0x0041,0x00A0,0x0000 }, 2 }, /* 16 */
191 /*expect*/ { 0,1,-1 },
192 },
193#ifdef NO_WAIVER
194 /* <NO_WAIVER> */ /* returns 3 */
195 { /*input.*/ { { 0x0041,0x00A1,0x0000 }, 2 }, /* 17 */
196 /*expect*/ { 0,1,-1 },
197 },
198#else
199 /* XXX U00A1 is valid -> /x8f/xa2/xc4 in JIS X 0212 */
200 { /*input.*/ { { 0x0041,0x00A1,0x0000 }, 2 }, /* 17 */
201 /*expect*/ { 0,1,3 },
202 },
203#endif
204 { /*input.*/ { { 0x0041,0xFF71,0x0000 }, 2 }, /* 18 */
205 /*expect*/ { 0,1,2 },
206 },
207 { /*input.*/ { { 0x0041,0x3042,0x0000 }, 2 }, /* 19 */
208 /*expect*/ { 0,1,3 },
209 },
210 { /*input.*/ { { 0x0041,0x3044,0x0000 }, 2 }, /* 20 */
211 /*expect*/ { 0,1,3 },
212 },
213 { .is_last = 1 }
214 }
215 },
216 {
217 { Twcswidth, TST_LOC_end }
218 }
219};
220

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