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