tizen 2.4 release
[framework/base/tizen-locale.git] / localedata / tests-mbwc / dat_wcswidth.c
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 };