1 /* 2 * TEST SUITE FOR MB/WC FUNCTIONS IN C LIBRARY 3 * 4 * FILE: dat_wcstombs.c 5 * 6 * WCSTOMBS: size_t wcstombs (char *s, const wchar_t *ws, size_t n) 7 */ 8 9 10 /* 11 * CAUTION: 12 * Do not use a value 0x01 for string data. The test program 13 * uses it. 14 * 15 */ 16 17 18 TST_WCSTOMBS tst_wcstombs_loc [] = { 19 { 20 { Twcstombs, TST_LOC_de }, 21 { 22 /* #01 : Any chars including a null char should not be stored in s. */ 23 { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 0 }, 24 /*expect*/ { 0,1,0, "" }, 25 }, 26 /* #02 : Only one chars should be stored in s. No null termination. */ 27 { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 1 }, 28 /*expect*/ { 0,1,1, "�" }, 29 }, 30 /* #03 : Only two chars should be stored in s. No null termination. */ 31 { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 2 }, 32 /*expect*/ { 0,1,2, "��" }, 33 }, 34 /* #04 : Only three chars should be stored in s. No null 35 termination. */ 36 { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 3 }, 37 /*expect*/ { 0,1,3, "���" }, 38 }, 39 /* #05 : Only three chars should be stored in s with a null 40 termination. */ 41 { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 4 }, 42 /*expect*/ { 0,1,3, "���" }, 43 }, 44 /* #06 : Only three chars should be stored in s with a null 45 termination. */ 46 { /*input.*/ { 1,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 5 }, 47 /*expect*/ { 0,1,3, "���" }, 48 }, 49 /* #07 : Invalid mb sequence. No chars should be stored in s. */ 50 { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2 }, 51 /*expect*/ { EILSEQ,1,(size_t)-1, "" }, 52 }, 53 /* #08 : s is a null pointer, no chars should be stored in s. */ 54 { /*input.*/ { 0,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 0 }, 55 /*expect*/ { 0,1,3, "" }, 56 }, 57 /* #09 : s is a null pointer, no chars should be stored in s. */ 58 { /*input.*/ { 0,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 1 }, 59 /*expect*/ { 0,1,3, "" }, 60 }, 61 /* #10 : s is a null pointer, no chars should be stored in s. */ 62 { /*input.*/ { 0,1, { 0x00C4,0x00D6,0x00DC,0x0000 }, 5 }, 63 /*expect*/ { 0,1,3, "" }, 64 }, 65 /* #11 : s is a null pointer. No chars should be stored in s. */ 66 { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5 }, 67 /*expect*/ { EILSEQ,1,(size_t)-1, "" }, 68 }, 69 /* #12 : ws is a null wc string, no chars should be stored in s. */ 70 { /*input.*/ { 1,1, { 0x0000 }, 5 }, 71 /*expect*/ { 0,1,0, "" }, 72 }, 73 /* #13 : s is a null pointer, no chars should be stored in s. */ 74 { /*input.*/ { 0,1, { 0x0000 }, 5 }, 75 /*expect*/ { 0,1,0, "" }, 76 }, 77 { .is_last = 1 } 78 } 79 }, 80 { 81 { Twcstombs, TST_LOC_enUS }, 82 { 83 /* #01 : Any chars including a null char should not be stored in s. */ 84 { /*input.*/ { 1,1, { 0x00C4,0x0042,0x0043,0x0000 }, 0 }, 85 /*expect*/ { 0,1,0, "" }, 86 }, 87 /* #02 : Only one chars should be stored in s. No null termination. */ 88 { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 1 }, 89 /*expect*/ { 0,1,1, "A" }, 90 }, 91 /* #03 : Only two chars should be stored in s. No null termination. */ 92 { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 2 }, 93 /*expect*/ { 0,1,2, "AB" }, 94 }, 95 /* #04 : Only three chars should be stored in s. No null 96 termination. */ 97 { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 3 }, 98 /*expect*/ { 0,1,3, "ABC" }, 99 }, 100 /* #05 : Only three chars should be stored in s with a null 101 termination. */ 102 { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 4 }, 103 /*expect*/ { 0,1,3, "ABC" }, 104 }, 105 /* #06 : Only three chars should be stored in s with a null 106 termination. */ 107 { /*input.*/ { 1,1, { 0x0041,0x0042,0x0043,0x0000 }, 5 }, 108 /*expect*/ { 0,1,3, "ABC" }, 109 }, 110 /* #07 : Invalid mb sequence. No chars should be stored in s. */ 111 { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2 }, 112 /*expect*/ { EILSEQ,1,(size_t)-1, "" }, 113 }, 114 /* #08 : s is a null pointer, no chars should be stored in s. */ 115 { /*input.*/ { 0,1, { 0x0041,0x0042,0x0043,0x0000 }, 0 }, 116 /*expect*/ { 0,1,3, "" }, 117 }, 118 /* #09 : s is a null pointer, no chars should be stored in s. */ 119 { /*input.*/ { 0,1, { 0x0041,0x0042,0x0043,0x0000 }, 1 }, 120 /*expect*/ { 0,1,3, "" }, 121 }, 122 /* #10 : s is a null pointer, no chars should be stored in s. */ 123 { /*input.*/ { 0,1, { 0x0041,0x0042,0x0043,0x0000 }, 5 }, 124 /*expect*/ { 0,1,3, "" }, 125 }, 126 /* #11 : s is a null pointer. No chars should be stored in s. */ 127 { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5 }, 128 /*expect*/ { EILSEQ,1,(size_t)-1, "" }, 129 }, 130 /* #12 : ws is a null wc string, no chars should be stored in s. */ 131 { /*input.*/ { 1,1, { 0x0000 }, 5, }, 132 /*expect*/ { 0,1,0, "" }, 133 }, 134 /* #13 : s is a null pointer, no chars should be stored in s. */ 135 { /*input.*/ { 0,1, { 0x0000 }, 5 }, 136 /*expect*/ { 0,1,0, "" }, 137 }, 138 { .is_last = 1 } 139 } 140 }, 141 { 142 { Twcstombs, TST_LOC_eucJP }, 143 { 144 145 /* #01 : Any chars including a null char should not be stored in s. */ 146 { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0 }, 147 /*expect*/ { 0,1,0, "" }, 148 }, 149 /* #02 : Only one chars should be stored in s. No null termination. */ 150 { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 2 }, 151 /*expect*/ { 0,1,2, "\244\242" }, 152 }, 153 /* #03 : Only two chars should be stored in s. No null termination. */ 154 { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 4 }, 155 /*expect*/ { 0,1,4, "\244\242\244\244" }, 156 }, 157 /* #04 : Only three chars should be stored in s. No null 158 termination. */ 159 { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 6 }, 160 /*expect*/ { 0,1,6, "\244\242\244\244\216\263" }, 161 }, 162 /* #05 : Only three chars should be stored in s with a null 163 termination. */ 164 { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 7 }, 165 /*expect*/ { 0,1,6, "\244\242\244\244\216\263" }, 166 }, 167 /* #06 : Only three chars should be stored in s with a null 168 termination. */ 169 { /*input.*/ { 1,1, { 0x3042,0x3044,0xFF73,0x0000 }, 8 }, 170 /*expect*/ { 0,1,6, "\244\242\244\244\216\263" }, 171 }, 172 /* #07 : Invalid mb sequence. No chars should be stored in s. */ 173 { /*input.*/ { 1,1, { 0x0201,0x0221,0x0000,0x0000 }, 2 }, 174 /*expect*/ { EILSEQ,1,-1, "" }, 175 }, 176 /* #08 : s is a null pointer, no chars should be stored in s. */ 177 { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 0 }, 178 /*expect*/ { 0,1,6, "" }, 179 }, 180 /* #09 : s is a null pointer, no chars should be stored in s. */ 181 { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 1 }, 182 /*expect*/ { 0,1,6, "" }, 183 }, 184 /* #10 : s is a null pointer, no chars should be stored in s. */ 185 { /*input.*/ { 0,1, { 0x3042,0x3044,0xFF73,0x0000 }, 8 }, 186 /*expect*/ { 0,1,6, "" }, 187 }, 188 /* #11 : s is a null pointer. No chars should be stored in s. */ 189 { /*input.*/ { 0,1, { 0x0201,0x0221,0x0000,0x0000 }, 5 }, 190 /*expect*/ { EILSEQ,1,(size_t)-1, "" }, 191 }, 192 /* #12 : ws is a null wc string, no chars should be stored in s. */ 193 { /*input.*/ { 1,1, { 0x0000 }, 5 }, 194 /*expect*/ { 0,1,0, "" }, 195 }, 196 /* #13 : s is a null pointer, no chars should be stored in s. */ 197 { /*input.*/ { 0,1, { 0x0000 }, 5 }, 198 /*expect*/ { 0,1,0, "" }, 199 }, 200 { .is_last = 1 } 201 } 202 }, 203 { 204 { Twcstombs, TST_LOC_end } 205 } 206 }; 207