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