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 
9 TST_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