Fix various bugs. Comment out unresolved issues.
[kopensolaris-gnu/glibc.git] / localedata / tests-mbwc / dat_mbrlen.c
1 /*
2  *  TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY
3  *
4  *       FILE:  dat_mbrlen.c
5  *
6  *       MBRLEN:  size_t mbrlen (const char *s, size_t n, mbstate_t *ps);
7  */
8
9 /*
10  *  NOTE:
11  *        (1) A mbstate object is initialized for
12  *            every new data record by the test program.
13  *
14  *        (2) USE_MBCURMAX is defined as a value of 99.
15  *
16  */
17
18
19 TST_MBRLEN tst_mbrlen_loc [] = {
20   {
21     { Tmbrlen, TST_LOC_de },
22     {
23       { /*----------------- #01 -----------------*/
24         {
25           {
26             { 1, "",       0,              0, 0 },
27             { 1, "",       1,              0, 0 },
28             { 1, "\300",           USE_MBCURMAX,   0, 0 },
29           }
30         },
31         {
32           {
33             { 1, 0,             1,  0,               },
34             { 1, 0,             1,  0,               },
35             { 1, 0,             1,  1,               },
36           }
37         }
38       },
39       { /*----------------- #02 -----------------*/
40         {
41           {
42             { 1, "\300\001",   0,                  0, 0 },
43             { 1, "\300\001",   1,                  0, 0 },
44             { 1, "\317\001",   USE_MBCURMAX,   0, 0 },
45           }
46         },
47         {
48           {
49             { 1, 0,             1,  0,               },
50             { 1, 0,             1,  1,               },
51             { 1, 0,             1,  1,               },
52           }
53         }
54       },
55       { is_last: 1 }
56     }
57   },
58   {
59     { Tmbrlen, TST_LOC_enUS },
60     {
61       { /*----------------- #01 -----------------*/
62         {
63           {
64             { 1, "A",      0,              0, 0 },
65             { 1, "A",      1,              0, 0 },
66             { 1, "A",      USE_MBCURMAX,   0, 0 },
67           }
68         },
69         {
70           {
71             { 1, 0,             1,  0,               },
72             { 1, 0,             1,  1,               },
73             { 1, 0,             1,  1,               },
74           }
75         }
76       },
77       { /*----------------- #02 -----------------*/
78         {
79           {
80             { 1, "\317\001",   0,                  1, 0 },
81             { 1, "\317\001",   1,                  1, 0 },
82             { 1, "\317\001",   USE_MBCURMAX,   1, 0 },
83           }
84         },
85         {
86           {
87             { 1, 0,             1,  0,               },
88             { 1, EILSEQ,        1, -1,               },
89             { 1, EILSEQ,        1, -1,               },
90           }
91         }
92       },
93       { is_last: 1 }
94     }
95   },
96   {
97     { Tmbrlen, TST_LOC_eucJP },
98     {
99       { /*----------------- #01 -----------------*/
100         {
101           {
102             { 1, "\317\302",   1,                  0, 0 },
103 #ifdef SHOJI_IS_RIGHT
104             { 0, "",       0,              0, 0 },
105 #else
106             /* XXX This test depends on the internal state being empty.
107                XXX Therefore we must explicitly clean it.  */
108             { 0, "",       0,              0, 1 },
109 #endif
110             { 1, "\317\302",   USE_MBCURMAX,   0, 0 },
111           }
112         },
113         {
114           {
115             { 1, 0,             1, -2,               },
116             { 1, 0,             1,  0,               },
117             { 1, 0,             1,  2,               },
118           }
119         }
120       },
121       { /*----------------- #02 -----------------*/
122         {
123           {
124             { 1, "\317",           1,              1, 0 },
125             { 1, "\302",           1,              1, 0 },
126             { 1, "\317\302",   USE_MBCURMAX,   0, 0 },
127           }
128         },
129         {
130           {
131             { 1, 0,             1, -2,               },
132 #ifdef SHOJI_IS_RIGHT
133             { 1, 0,             1, +2,               },
134 #else
135             /* XXX ISO C explicitly says that the return value does not
136                XXX reflect the bytes contained in the state.  */
137             { 1, 0,             1, +1,               },
138 #endif
139             { 1, 0,             1,  2,               },
140           }
141         }
142       },
143       { /*----------------- #03 -----------------*/
144         {
145           {
146             { 1, "\216\217",   0,                  0, 0 },
147             { 1, "\216\217",   1,                  0, 0 },
148             { 1, "\216\217",   USE_MBCURMAX,   0, 0 },
149           }
150         },
151         {
152           {
153             { 1, 0,             1,  0,               },
154             { 1, 0,             1, -2,               },
155             { 1, EILSEQ,        1, -1,               },
156           }
157         }
158       },
159       { is_last: 1 }
160     }
161   },
162   {
163     { Tmbrlen, TST_LOC_end }
164   }
165 };