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 	    { 0,		1,  0,		     },
34 	    { 0,		1,  0,		     },
35 	    { 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 	    { 0,		1,  0,		     },
50 	    { 0,		1,  1,		     },
51 	    { 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 	    { 0,		1,  0,		     },
72 	    { 0,		1,  1,		     },
73 	    { 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 	    { 0,		1,  0,		     },
88 	    { EILSEQ,	1, -1,		     },
89 	    { EILSEQ,	1, -1,		     },
90 	  }
91 	}
92       },
93       { .is_last = 1 }
94     }
95   },
96 #if 0
97   {
98     { Tmbrlen, TST_LOC_eucJP },
99     {
100       { /*----------------- #01 -----------------*/
101 	{
102 	  {
103 	    { 1, "\317\302",   1,		   1, 1 },
104 	    { 0, "",	       0,		   1, 0 },
105 	    { 1, "\317\302",   USE_MBCURMAX,	   1, 1 },
106 	  }
107 	},
108 	{
109 	  {
110 	    { 0,		1, -2,		     },
111 	    { 0,		1, -1,		     },
112 	    { 0,		1,  2,		     },
113 	  }
114 	}
115       },
116       { /*----------------- #02 -----------------*/
117 	{
118 	  {
119 	    { 1, "\317",	   1,		   1, 0 },
120 	    { 1, "\302",	   1,		   1, 0 },
121 	    { 1, "\317\302",   USE_MBCURMAX,   0, 0 },
122 	  }
123 	},
124 	{
125 	  {
126 	    { 0,		1, -2,		     },
127 #ifdef SHOJI_IS_RIGHT
128 	    { 0,		1, +2,		     },
129 #else
130 	    /* XXX ISO C explicitly says that the return value does not
131 	       XXX reflect the bytes contained in the state.  */
132 	    { 0,		1, +1,		     },
133 #endif
134 	    { 0,		1,  2,		     },
135 	  }
136 	}
137       },
138       { /*----------------- #03 -----------------*/
139 	{
140 	  {
141 	    { 1, "\216\217",   0,		   0, 0 },
142 	    { 1, "\216\217",   1,		   0, 0 },
143 	    { 1, "\216\217",   USE_MBCURMAX,   0, 0 },
144 	  }
145 	},
146 	{
147 	  {
148 	    { 0,		1,  0,		     },
149 	    { 0,		1, -2,		     },
150 	    { EILSEQ,	1, -1,		     },
151 	  }
152 	}
153       },
154       { .is_last = 1 }
155     }
156   },
157 #else
158   {
159     { Tmbrlen, TST_LOC_ja_UTF8 },
160     {
161       { /*----------------- #01 -----------------*/
162 	{
163 	  {
164 	    { 1, "\345\222\214",   1,		   1, 1 },
165 	    { 0, "",	       0,		   1, 0 },
166 	    { 1, "\345\222\214",   USE_MBCURMAX,	   1, 1 },
167 	  }
168 	},
169 	{
170 	  {
171 	    { 0,		1, -2,		     },
172 	    { 0,		1, -1,		     },
173 	    { 0,		1,  3,		     },
174 	  }
175 	}
176       },
177       { /*----------------- #02 -----------------*/
178 	{
179 	  {
180 	    { 1, "\317",	   1,		   1, 0 },
181 	    { 1, "\266",	   1,		   1, 0 },
182 	    { 1, "\345\222\214",   USE_MBCURMAX,   0, 0 },
183 	  }
184 	},
185 	{
186 	  {
187 	    { 0,		1, -2,		     },
188 #ifdef SHOJI_IS_RIGHT
189 	    { 0,		1, +2,		     },
190 #else
191 	    /* XXX ISO C explicitly says that the return value does not
192 	       XXX reflect the bytes contained in the state.  */
193 	    { 0,		1, +1,		     },
194 #endif
195 	    { 0,		1,  3,		     },
196 	  }
197 	}
198       },
199       { /*----------------- #03 -----------------*/
200 	{
201 	  {
202 	    { 1, "\302\303",   0,		   0, 0 },
203 	    { 1, "\302\303",   1,		   0, 0 },
204 	    { 1, "\302\303",   USE_MBCURMAX,   0, 0 },
205 	  }
206 	},
207 	{
208 	  {
209 	    { 0,		1,  0,		     },
210 	    { 0,		1, -2,		     },
211 	    { EILSEQ,	1, -1,		     },
212 	  }
213 	}
214       },
215       { .is_last = 1 }
216     }
217   },
218 #endif
219   {
220     { Tmbrlen, TST_LOC_end }
221   }
222 };
223