1 | /* Test that C/POSIX and C.UTF-8 are consistent. |
2 | Copyright (C) 2022-2024 Free Software Foundation, Inc. |
3 | This file is part of the GNU C Library. |
4 | |
5 | The GNU C Library is free software; you can redistribute it and/or |
6 | modify it under the terms of the GNU Lesser General Public |
7 | License as published by the Free Software Foundation; either |
8 | version 2.1 of the License, or (at your option) any later version. |
9 | |
10 | The GNU C Library is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
13 | Lesser General Public License for more details. |
14 | |
15 | You should have received a copy of the GNU Lesser General Public |
16 | License along with the GNU C Library; if not, see |
17 | <https://www.gnu.org/licenses/>. */ |
18 | |
19 | #include <langinfo.h> |
20 | #include <locale.h> |
21 | #include <stdbool.h> |
22 | #include <stdio.h> |
23 | #include <support/check.h> |
24 | |
25 | /* Initialized by do_test using newlocale. */ |
26 | static locale_t c_utf8; |
27 | |
28 | /* Set to true for second pass. */ |
29 | static bool use_nl_langinfo_l; |
30 | |
31 | static void |
32 | switch_to_c (void) |
33 | { |
34 | if (setlocale (LC_ALL, "C" ) == NULL) |
35 | FAIL_EXIT1 ("setlocale (LC_ALL, \"C\")" ); |
36 | } |
37 | |
38 | static void |
39 | switch_to_c_utf8 (void) |
40 | { |
41 | if (setlocale (LC_ALL, "C.UTF-8" ) == NULL) |
42 | FAIL_EXIT1 ("setlocale (LC_ALL, \"C.UTF-8\")" ); |
43 | } |
44 | |
45 | static char * |
46 | str (nl_item item) |
47 | { |
48 | if (!use_nl_langinfo_l) |
49 | switch_to_c (); |
50 | return nl_langinfo (item); |
51 | } |
52 | |
53 | static char * |
54 | str_utf8 (nl_item item) |
55 | { |
56 | if (use_nl_langinfo_l) |
57 | return nl_langinfo_l (item: item, l: c_utf8); |
58 | else |
59 | { |
60 | switch_to_c_utf8 (); |
61 | return nl_langinfo (item); |
62 | } |
63 | } |
64 | |
65 | static wchar_t * |
66 | wstr (nl_item item) |
67 | { |
68 | return (wchar_t *) str (item); |
69 | } |
70 | |
71 | static wchar_t * |
72 | wstr_utf8 (nl_item item) |
73 | { |
74 | return (wchar_t *) str_utf8 (item); |
75 | } |
76 | |
77 | static int |
78 | byte (nl_item item) |
79 | { |
80 | return (signed char) *str (item); |
81 | } |
82 | |
83 | static int |
84 | byte_utf8 (nl_item item) |
85 | { |
86 | return (signed char) *str_utf8 (item); |
87 | } |
88 | |
89 | static int |
90 | word (nl_item item) |
91 | { |
92 | union |
93 | { |
94 | char *ptr; |
95 | int word; |
96 | } u; |
97 | u.ptr = str (item); |
98 | return u.word; |
99 | } |
100 | |
101 | static int |
102 | word_utf8 (nl_item item) |
103 | { |
104 | union |
105 | { |
106 | char *ptr; |
107 | int word; |
108 | } u; |
109 | u.ptr = str_utf8 (item); |
110 | return u.word; |
111 | } |
112 | |
113 | static void |
114 | one_pass (void) |
115 | { |
116 | /* LC_TIME. */ |
117 | TEST_COMPARE_STRING (str (ABDAY_1), str_utf8 (ABDAY_1)); |
118 | TEST_COMPARE_STRING (str (ABDAY_2), str_utf8 (ABDAY_2)); |
119 | TEST_COMPARE_STRING (str (ABDAY_3), str_utf8 (ABDAY_3)); |
120 | TEST_COMPARE_STRING (str (ABDAY_4), str_utf8 (ABDAY_4)); |
121 | TEST_COMPARE_STRING (str (ABDAY_5), str_utf8 (ABDAY_5)); |
122 | TEST_COMPARE_STRING (str (ABDAY_6), str_utf8 (ABDAY_6)); |
123 | TEST_COMPARE_STRING (str (ABDAY_7), str_utf8 (ABDAY_7)); |
124 | |
125 | TEST_COMPARE_STRING (str (DAY_1), str_utf8 (DAY_1)); |
126 | TEST_COMPARE_STRING (str (DAY_2), str_utf8 (DAY_2)); |
127 | TEST_COMPARE_STRING (str (DAY_3), str_utf8 (DAY_3)); |
128 | TEST_COMPARE_STRING (str (DAY_4), str_utf8 (DAY_4)); |
129 | TEST_COMPARE_STRING (str (DAY_5), str_utf8 (DAY_5)); |
130 | TEST_COMPARE_STRING (str (DAY_6), str_utf8 (DAY_6)); |
131 | TEST_COMPARE_STRING (str (DAY_7), str_utf8 (DAY_7)); |
132 | |
133 | TEST_COMPARE_STRING (str (ABMON_1), str_utf8 (ABMON_1)); |
134 | TEST_COMPARE_STRING (str (ABMON_2), str_utf8 (ABMON_2)); |
135 | TEST_COMPARE_STRING (str (ABMON_3), str_utf8 (ABMON_3)); |
136 | TEST_COMPARE_STRING (str (ABMON_4), str_utf8 (ABMON_4)); |
137 | TEST_COMPARE_STRING (str (ABMON_5), str_utf8 (ABMON_5)); |
138 | TEST_COMPARE_STRING (str (ABMON_6), str_utf8 (ABMON_6)); |
139 | TEST_COMPARE_STRING (str (ABMON_7), str_utf8 (ABMON_7)); |
140 | TEST_COMPARE_STRING (str (ABMON_8), str_utf8 (ABMON_8)); |
141 | TEST_COMPARE_STRING (str (ABMON_9), str_utf8 (ABMON_9)); |
142 | TEST_COMPARE_STRING (str (ABMON_10), str_utf8 (ABMON_10)); |
143 | TEST_COMPARE_STRING (str (ABMON_11), str_utf8 (ABMON_11)); |
144 | TEST_COMPARE_STRING (str (ABMON_12), str_utf8 (ABMON_12)); |
145 | |
146 | TEST_COMPARE_STRING (str (MON_1), str_utf8 (MON_1)); |
147 | TEST_COMPARE_STRING (str (MON_2), str_utf8 (MON_2)); |
148 | TEST_COMPARE_STRING (str (MON_3), str_utf8 (MON_3)); |
149 | TEST_COMPARE_STRING (str (MON_4), str_utf8 (MON_4)); |
150 | TEST_COMPARE_STRING (str (MON_5), str_utf8 (MON_5)); |
151 | TEST_COMPARE_STRING (str (MON_6), str_utf8 (MON_6)); |
152 | TEST_COMPARE_STRING (str (MON_7), str_utf8 (MON_7)); |
153 | TEST_COMPARE_STRING (str (MON_8), str_utf8 (MON_8)); |
154 | TEST_COMPARE_STRING (str (MON_9), str_utf8 (MON_9)); |
155 | TEST_COMPARE_STRING (str (MON_10), str_utf8 (MON_10)); |
156 | TEST_COMPARE_STRING (str (MON_11), str_utf8 (MON_11)); |
157 | TEST_COMPARE_STRING (str (MON_12), str_utf8 (MON_12)); |
158 | |
159 | TEST_COMPARE_STRING (str (AM_STR), str_utf8 (AM_STR)); |
160 | TEST_COMPARE_STRING (str (PM_STR), str_utf8 (PM_STR)); |
161 | |
162 | TEST_COMPARE_STRING (str (D_T_FMT), str_utf8 (D_T_FMT)); |
163 | TEST_COMPARE_STRING (str (D_FMT), str_utf8 (D_FMT)); |
164 | TEST_COMPARE_STRING (str (T_FMT), str_utf8 (T_FMT)); |
165 | TEST_COMPARE_STRING (str (T_FMT_AMPM), |
166 | str_utf8 (T_FMT_AMPM)); |
167 | |
168 | TEST_COMPARE_STRING (str (ERA), str_utf8 (ERA)); |
169 | TEST_COMPARE_STRING (str (ERA_YEAR), str_utf8 (ERA_YEAR)); |
170 | TEST_COMPARE_STRING (str (ERA_D_FMT), str_utf8 (ERA_D_FMT)); |
171 | TEST_COMPARE_STRING (str (ALT_DIGITS), str_utf8 (ALT_DIGITS)); |
172 | TEST_COMPARE_STRING (str (ERA_D_T_FMT), str_utf8 (ERA_D_T_FMT)); |
173 | TEST_COMPARE_STRING (str (ERA_T_FMT), str_utf8 (ERA_T_FMT)); |
174 | TEST_COMPARE (word (_NL_TIME_ERA_NUM_ENTRIES), |
175 | word_utf8 (_NL_TIME_ERA_NUM_ENTRIES)); |
176 | /* No array elements, so nothing to compare for _NL_TIME_ERA_ENTRIES. */ |
177 | TEST_COMPARE (word (_NL_TIME_ERA_NUM_ENTRIES), 0); |
178 | |
179 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABDAY_1), wstr_utf8 (_NL_WABDAY_1)); |
180 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABDAY_2), wstr_utf8 (_NL_WABDAY_2)); |
181 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABDAY_3), wstr_utf8 (_NL_WABDAY_3)); |
182 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABDAY_4), wstr_utf8 (_NL_WABDAY_4)); |
183 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABDAY_5), wstr_utf8 (_NL_WABDAY_5)); |
184 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABDAY_6), wstr_utf8 (_NL_WABDAY_6)); |
185 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABDAY_7), wstr_utf8 (_NL_WABDAY_7)); |
186 | |
187 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WDAY_1), wstr_utf8 (_NL_WDAY_1)); |
188 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WDAY_2), wstr_utf8 (_NL_WDAY_2)); |
189 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WDAY_3), wstr_utf8 (_NL_WDAY_3)); |
190 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WDAY_4), wstr_utf8 (_NL_WDAY_4)); |
191 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WDAY_5), wstr_utf8 (_NL_WDAY_5)); |
192 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WDAY_6), wstr_utf8 (_NL_WDAY_6)); |
193 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WDAY_7), wstr_utf8 (_NL_WDAY_7)); |
194 | |
195 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABMON_1), wstr_utf8 (_NL_WABMON_1)); |
196 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABMON_2), wstr_utf8 (_NL_WABMON_2)); |
197 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABMON_3), wstr_utf8 (_NL_WABMON_3)); |
198 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABMON_4), wstr_utf8 (_NL_WABMON_4)); |
199 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABMON_5), wstr_utf8 (_NL_WABMON_5)); |
200 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABMON_6), wstr_utf8 (_NL_WABMON_6)); |
201 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABMON_7), wstr_utf8 (_NL_WABMON_7)); |
202 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABMON_8), wstr_utf8 (_NL_WABMON_8)); |
203 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABMON_9), wstr_utf8 (_NL_WABMON_9)); |
204 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABMON_10), wstr_utf8 (_NL_WABMON_10)); |
205 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABMON_11), wstr_utf8 (_NL_WABMON_11)); |
206 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABMON_12), wstr_utf8 (_NL_WABMON_12)); |
207 | |
208 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WMON_1), wstr_utf8 (_NL_WMON_1)); |
209 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WMON_2), wstr_utf8 (_NL_WMON_2)); |
210 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WMON_3), wstr_utf8 (_NL_WMON_3)); |
211 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WMON_4), wstr_utf8 (_NL_WMON_4)); |
212 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WMON_5), wstr_utf8 (_NL_WMON_5)); |
213 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WMON_6), wstr_utf8 (_NL_WMON_6)); |
214 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WMON_7), wstr_utf8 (_NL_WMON_7)); |
215 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WMON_8), wstr_utf8 (_NL_WMON_8)); |
216 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WMON_9), wstr_utf8 (_NL_WMON_9)); |
217 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WMON_10), wstr_utf8 (_NL_WMON_10)); |
218 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WMON_11), wstr_utf8 (_NL_WMON_11)); |
219 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WMON_12), wstr_utf8 (_NL_WMON_12)); |
220 | |
221 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WAM_STR), wstr_utf8 (_NL_WAM_STR)); |
222 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WPM_STR), wstr_utf8 (_NL_WPM_STR)); |
223 | |
224 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WD_T_FMT), wstr_utf8 (_NL_WD_T_FMT)); |
225 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WD_FMT), wstr_utf8 (_NL_WD_FMT)); |
226 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WT_FMT), wstr_utf8 (_NL_WT_FMT)); |
227 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WT_FMT_AMPM), |
228 | wstr_utf8 (_NL_WT_FMT_AMPM)); |
229 | |
230 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WERA_YEAR), wstr_utf8 (_NL_WERA_YEAR)); |
231 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WERA_D_FMT), wstr_utf8 (_NL_WERA_D_FMT)); |
232 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WALT_DIGITS), |
233 | wstr_utf8 (_NL_WALT_DIGITS)); |
234 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WERA_D_T_FMT), |
235 | wstr_utf8 (_NL_WERA_D_T_FMT)); |
236 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WERA_T_FMT), wstr_utf8 (_NL_WERA_T_FMT)); |
237 | |
238 | /* This is somewhat inconsistent, but see locale/categories.def. */ |
239 | TEST_COMPARE (byte (_NL_TIME_WEEK_NDAYS), byte_utf8 (_NL_TIME_WEEK_NDAYS)); |
240 | TEST_COMPARE (word (_NL_TIME_WEEK_1STDAY), |
241 | word_utf8 (_NL_TIME_WEEK_1STDAY)); |
242 | TEST_COMPARE (byte (_NL_TIME_WEEK_1STWEEK), |
243 | byte_utf8 (_NL_TIME_WEEK_1STWEEK)); |
244 | TEST_COMPARE (byte (_NL_TIME_FIRST_WEEKDAY), |
245 | byte_utf8 (_NL_TIME_FIRST_WEEKDAY)); |
246 | TEST_COMPARE (byte (_NL_TIME_FIRST_WORKDAY), |
247 | byte_utf8 (_NL_TIME_FIRST_WORKDAY)); |
248 | TEST_COMPARE (byte (_NL_TIME_CAL_DIRECTION), |
249 | byte_utf8 (_NL_TIME_CAL_DIRECTION)); |
250 | TEST_COMPARE_STRING (str (_NL_TIME_TIMEZONE), str_utf8 (_NL_TIME_TIMEZONE)); |
251 | |
252 | TEST_COMPARE_STRING (str (_DATE_FMT), str_utf8 (_DATE_FMT)); |
253 | TEST_COMPARE_STRING_WIDE (wstr (_NL_W_DATE_FMT), wstr_utf8 (_NL_W_DATE_FMT)); |
254 | |
255 | /* Expected difference. */ |
256 | TEST_COMPARE_STRING (str (_NL_TIME_CODESET), "ANSI_X3.4-1968" ); |
257 | TEST_COMPARE_STRING (str_utf8 (_NL_TIME_CODESET), "UTF-8" ); |
258 | |
259 | TEST_COMPARE_STRING (str (ALTMON_1), str_utf8 (ALTMON_1)); |
260 | TEST_COMPARE_STRING (str (ALTMON_2), str_utf8 (ALTMON_2)); |
261 | TEST_COMPARE_STRING (str (ALTMON_3), str_utf8 (ALTMON_3)); |
262 | TEST_COMPARE_STRING (str (ALTMON_4), str_utf8 (ALTMON_4)); |
263 | TEST_COMPARE_STRING (str (ALTMON_5), str_utf8 (ALTMON_5)); |
264 | TEST_COMPARE_STRING (str (ALTMON_6), str_utf8 (ALTMON_6)); |
265 | TEST_COMPARE_STRING (str (ALTMON_7), str_utf8 (ALTMON_7)); |
266 | TEST_COMPARE_STRING (str (ALTMON_8), str_utf8 (ALTMON_8)); |
267 | TEST_COMPARE_STRING (str (ALTMON_9), str_utf8 (ALTMON_9)); |
268 | TEST_COMPARE_STRING (str (ALTMON_10), str_utf8 (ALTMON_10)); |
269 | TEST_COMPARE_STRING (str (ALTMON_11), str_utf8 (ALTMON_11)); |
270 | TEST_COMPARE_STRING (str (ALTMON_12), str_utf8 (ALTMON_12)); |
271 | |
272 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WALTMON_1), wstr_utf8 (_NL_WALTMON_1)); |
273 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WALTMON_2), wstr_utf8 (_NL_WALTMON_2)); |
274 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WALTMON_3), wstr_utf8 (_NL_WALTMON_3)); |
275 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WALTMON_4), wstr_utf8 (_NL_WALTMON_4)); |
276 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WALTMON_5), wstr_utf8 (_NL_WALTMON_5)); |
277 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WALTMON_6), wstr_utf8 (_NL_WALTMON_6)); |
278 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WALTMON_7), wstr_utf8 (_NL_WALTMON_7)); |
279 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WALTMON_8), wstr_utf8 (_NL_WALTMON_8)); |
280 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WALTMON_9), wstr_utf8 (_NL_WALTMON_9)); |
281 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WALTMON_10), wstr_utf8 (_NL_WALTMON_10)); |
282 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WALTMON_11), wstr_utf8 (_NL_WALTMON_11)); |
283 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WALTMON_12), wstr_utf8 (_NL_WALTMON_12)); |
284 | |
285 | TEST_COMPARE_STRING (str (_NL_ABALTMON_1), str_utf8 (_NL_ABALTMON_1)); |
286 | TEST_COMPARE_STRING (str (_NL_ABALTMON_2), str_utf8 (_NL_ABALTMON_2)); |
287 | TEST_COMPARE_STRING (str (_NL_ABALTMON_3), str_utf8 (_NL_ABALTMON_3)); |
288 | TEST_COMPARE_STRING (str (_NL_ABALTMON_4), str_utf8 (_NL_ABALTMON_4)); |
289 | TEST_COMPARE_STRING (str (_NL_ABALTMON_5), str_utf8 (_NL_ABALTMON_5)); |
290 | TEST_COMPARE_STRING (str (_NL_ABALTMON_6), str_utf8 (_NL_ABALTMON_6)); |
291 | TEST_COMPARE_STRING (str (_NL_ABALTMON_7), str_utf8 (_NL_ABALTMON_7)); |
292 | TEST_COMPARE_STRING (str (_NL_ABALTMON_8), str_utf8 (_NL_ABALTMON_8)); |
293 | TEST_COMPARE_STRING (str (_NL_ABALTMON_9), str_utf8 (_NL_ABALTMON_9)); |
294 | TEST_COMPARE_STRING (str (_NL_ABALTMON_10), str_utf8 (_NL_ABALTMON_10)); |
295 | TEST_COMPARE_STRING (str (_NL_ABALTMON_11), str_utf8 (_NL_ABALTMON_11)); |
296 | TEST_COMPARE_STRING (str (_NL_ABALTMON_12), str_utf8 (_NL_ABALTMON_12)); |
297 | |
298 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABALTMON_1), |
299 | wstr_utf8 (_NL_WABALTMON_1)); |
300 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABALTMON_2), |
301 | wstr_utf8 (_NL_WABALTMON_2)); |
302 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABALTMON_3), |
303 | wstr_utf8 (_NL_WABALTMON_3)); |
304 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABALTMON_4), |
305 | wstr_utf8 (_NL_WABALTMON_4)); |
306 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABALTMON_5), |
307 | wstr_utf8 (_NL_WABALTMON_5)); |
308 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABALTMON_6), |
309 | wstr_utf8 (_NL_WABALTMON_6)); |
310 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABALTMON_7), |
311 | wstr_utf8 (_NL_WABALTMON_7)); |
312 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABALTMON_8), |
313 | wstr_utf8 (_NL_WABALTMON_8)); |
314 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABALTMON_9), |
315 | wstr_utf8 (_NL_WABALTMON_9)); |
316 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABALTMON_10), |
317 | wstr_utf8 (_NL_WABALTMON_10)); |
318 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABALTMON_11), |
319 | wstr_utf8 (_NL_WABALTMON_11)); |
320 | TEST_COMPARE_STRING_WIDE (wstr (_NL_WABALTMON_12), |
321 | wstr_utf8 (_NL_WABALTMON_12)); |
322 | |
323 | /* LC_COLLATE. Mostly untested, only expected differences. */ |
324 | TEST_COMPARE_STRING (str (_NL_COLLATE_CODESET), "ANSI_X3.4-1968" ); |
325 | TEST_COMPARE_STRING (str_utf8 (_NL_COLLATE_CODESET), "UTF-8" ); |
326 | |
327 | /* LC_CTYPE. Mostly untested, only expected differences. */ |
328 | TEST_COMPARE_STRING (str (CODESET), "ANSI_X3.4-1968" ); |
329 | TEST_COMPARE_STRING (str_utf8 (CODESET), "UTF-8" ); |
330 | |
331 | /* LC_MONETARY. */ |
332 | TEST_COMPARE_STRING (str (INT_CURR_SYMBOL), str_utf8 (INT_CURR_SYMBOL)); |
333 | TEST_COMPARE_STRING (str (CURRENCY_SYMBOL), str_utf8 (CURRENCY_SYMBOL)); |
334 | TEST_COMPARE_STRING (str (MON_DECIMAL_POINT), str_utf8 (MON_DECIMAL_POINT)); |
335 | TEST_COMPARE_STRING (str (MON_THOUSANDS_SEP), str_utf8 (MON_THOUSANDS_SEP)); |
336 | TEST_COMPARE_STRING (str (MON_GROUPING), str_utf8 (MON_GROUPING)); |
337 | TEST_COMPARE_STRING (str (POSITIVE_SIGN), str_utf8 (POSITIVE_SIGN)); |
338 | TEST_COMPARE_STRING (str (NEGATIVE_SIGN), str_utf8 (NEGATIVE_SIGN)); |
339 | TEST_COMPARE (byte (INT_FRAC_DIGITS), byte_utf8 (INT_FRAC_DIGITS)); |
340 | TEST_COMPARE (byte (FRAC_DIGITS), byte_utf8 (FRAC_DIGITS)); |
341 | TEST_COMPARE (byte (P_CS_PRECEDES), byte_utf8 (P_CS_PRECEDES)); |
342 | TEST_COMPARE (byte (P_SEP_BY_SPACE), byte_utf8 (P_SEP_BY_SPACE)); |
343 | TEST_COMPARE (byte (N_CS_PRECEDES), byte_utf8 (N_CS_PRECEDES)); |
344 | TEST_COMPARE (byte (N_SEP_BY_SPACE), byte_utf8 (N_SEP_BY_SPACE)); |
345 | TEST_COMPARE (byte (P_SIGN_POSN), byte_utf8 (P_SIGN_POSN)); |
346 | TEST_COMPARE (byte (N_SIGN_POSN), byte_utf8 (N_SIGN_POSN)); |
347 | TEST_COMPARE_STRING (str (CRNCYSTR), str_utf8 (CRNCYSTR)); |
348 | TEST_COMPARE (byte (INT_P_CS_PRECEDES), byte_utf8 (INT_P_CS_PRECEDES)); |
349 | TEST_COMPARE (byte (INT_P_SEP_BY_SPACE), byte_utf8 (INT_P_SEP_BY_SPACE)); |
350 | TEST_COMPARE (byte (INT_N_CS_PRECEDES), byte_utf8 (INT_N_CS_PRECEDES)); |
351 | TEST_COMPARE (byte (INT_N_SEP_BY_SPACE), byte_utf8 (INT_N_SEP_BY_SPACE)); |
352 | TEST_COMPARE (byte (INT_P_SIGN_POSN), byte_utf8 (INT_P_SIGN_POSN)); |
353 | TEST_COMPARE (byte (INT_N_SIGN_POSN), byte_utf8 (INT_N_SIGN_POSN)); |
354 | TEST_COMPARE_STRING (str (_NL_MONETARY_DUO_INT_CURR_SYMBOL), |
355 | str_utf8 (_NL_MONETARY_DUO_INT_CURR_SYMBOL)); |
356 | TEST_COMPARE_STRING (str (_NL_MONETARY_DUO_CURRENCY_SYMBOL), |
357 | str_utf8 (_NL_MONETARY_DUO_CURRENCY_SYMBOL)); |
358 | TEST_COMPARE (byte (_NL_MONETARY_DUO_INT_FRAC_DIGITS), |
359 | byte_utf8 (_NL_MONETARY_DUO_INT_FRAC_DIGITS)); |
360 | TEST_COMPARE (byte (_NL_MONETARY_DUO_FRAC_DIGITS), |
361 | byte_utf8 (_NL_MONETARY_DUO_FRAC_DIGITS)); |
362 | TEST_COMPARE (byte (_NL_MONETARY_DUO_P_CS_PRECEDES), |
363 | byte_utf8 (_NL_MONETARY_DUO_P_CS_PRECEDES)); |
364 | TEST_COMPARE (byte (_NL_MONETARY_DUO_P_SEP_BY_SPACE), |
365 | byte_utf8 (_NL_MONETARY_DUO_P_SEP_BY_SPACE)); |
366 | TEST_COMPARE (byte (_NL_MONETARY_DUO_N_CS_PRECEDES), |
367 | byte_utf8 (_NL_MONETARY_DUO_N_CS_PRECEDES)); |
368 | TEST_COMPARE (byte (_NL_MONETARY_DUO_N_SEP_BY_SPACE), |
369 | byte_utf8 (_NL_MONETARY_DUO_N_SEP_BY_SPACE)); |
370 | TEST_COMPARE (byte (_NL_MONETARY_DUO_INT_P_CS_PRECEDES), |
371 | byte_utf8 (_NL_MONETARY_DUO_INT_P_CS_PRECEDES)); |
372 | TEST_COMPARE (byte (_NL_MONETARY_DUO_INT_P_SEP_BY_SPACE), |
373 | byte_utf8 (_NL_MONETARY_DUO_INT_P_SEP_BY_SPACE)); |
374 | TEST_COMPARE (byte (_NL_MONETARY_DUO_INT_N_CS_PRECEDES), |
375 | byte_utf8 (_NL_MONETARY_DUO_INT_N_CS_PRECEDES)); |
376 | TEST_COMPARE (byte (_NL_MONETARY_DUO_INT_N_SEP_BY_SPACE), |
377 | byte_utf8 (_NL_MONETARY_DUO_INT_N_SEP_BY_SPACE)); |
378 | TEST_COMPARE (byte (_NL_MONETARY_DUO_INT_P_SIGN_POSN), |
379 | byte_utf8 (_NL_MONETARY_DUO_INT_P_SIGN_POSN)); |
380 | TEST_COMPARE (byte (_NL_MONETARY_DUO_INT_N_SIGN_POSN), |
381 | byte_utf8 (_NL_MONETARY_DUO_INT_N_SIGN_POSN)); |
382 | TEST_COMPARE (byte (_NL_MONETARY_DUO_P_SIGN_POSN), |
383 | byte_utf8 (_NL_MONETARY_DUO_P_SIGN_POSN)); |
384 | TEST_COMPARE (byte (_NL_MONETARY_DUO_N_SIGN_POSN), |
385 | byte_utf8 (_NL_MONETARY_DUO_N_SIGN_POSN)); |
386 | TEST_COMPARE (byte (_NL_MONETARY_DUO_INT_P_SIGN_POSN), |
387 | byte_utf8 (_NL_MONETARY_DUO_INT_P_SIGN_POSN)); |
388 | TEST_COMPARE (byte (_NL_MONETARY_DUO_INT_N_SIGN_POSN), |
389 | byte_utf8 (_NL_MONETARY_DUO_INT_N_SIGN_POSN)); |
390 | TEST_COMPARE (word (_NL_MONETARY_UNO_VALID_FROM), |
391 | word_utf8 (_NL_MONETARY_UNO_VALID_FROM)); |
392 | TEST_COMPARE (word (_NL_MONETARY_UNO_VALID_TO), |
393 | word_utf8 (_NL_MONETARY_UNO_VALID_TO)); |
394 | TEST_COMPARE (word (_NL_MONETARY_DUO_VALID_FROM), |
395 | word_utf8 (_NL_MONETARY_DUO_VALID_FROM)); |
396 | TEST_COMPARE (word (_NL_MONETARY_DUO_VALID_TO), |
397 | word_utf8 (_NL_MONETARY_DUO_VALID_TO)); |
398 | /* _NL_MONETARY_CONVERSION_RATE cannot be tested (word array). */ |
399 | TEST_COMPARE (word (_NL_MONETARY_DECIMAL_POINT_WC), |
400 | word_utf8 (_NL_MONETARY_DECIMAL_POINT_WC)); |
401 | TEST_COMPARE (word (_NL_MONETARY_THOUSANDS_SEP_WC), |
402 | word_utf8 (_NL_MONETARY_THOUSANDS_SEP_WC)); |
403 | /* Expected difference. */ |
404 | TEST_COMPARE_STRING (str (_NL_MONETARY_CODESET), "ANSI_X3.4-1968" ); |
405 | TEST_COMPARE_STRING (str_utf8 (_NL_MONETARY_CODESET), "UTF-8" ); |
406 | |
407 | /* LC_NUMERIC. */ |
408 | |
409 | TEST_COMPARE_STRING (str (DECIMAL_POINT), str_utf8 (DECIMAL_POINT)); |
410 | TEST_COMPARE_STRING (str (RADIXCHAR), str_utf8 (RADIXCHAR)); |
411 | TEST_COMPARE_STRING (str (THOUSANDS_SEP), str_utf8 (THOUSANDS_SEP)); |
412 | TEST_COMPARE_STRING (str (THOUSEP), str_utf8 (THOUSEP)); |
413 | TEST_COMPARE_STRING (str (GROUPING), str_utf8 (GROUPING)); |
414 | TEST_COMPARE (word (_NL_NUMERIC_DECIMAL_POINT_WC), |
415 | word_utf8 (_NL_NUMERIC_DECIMAL_POINT_WC)); |
416 | TEST_COMPARE (word (_NL_NUMERIC_THOUSANDS_SEP_WC), |
417 | word_utf8 (_NL_NUMERIC_THOUSANDS_SEP_WC)); |
418 | /* Expected difference. */ |
419 | TEST_COMPARE_STRING (str (_NL_NUMERIC_CODESET), "ANSI_X3.4-1968" ); |
420 | TEST_COMPARE_STRING (str_utf8 (_NL_NUMERIC_CODESET), "UTF-8" ); |
421 | |
422 | /* LC_MESSAGES. */ |
423 | |
424 | TEST_COMPARE_STRING (str (YESEXPR), str_utf8 (YESEXPR)); |
425 | TEST_COMPARE_STRING (str (NOEXPR), str_utf8 (NOEXPR)); |
426 | TEST_COMPARE_STRING (str (YESSTR), str_utf8 (YESSTR)); |
427 | TEST_COMPARE_STRING (str (NOSTR), str_utf8 (NOSTR)); |
428 | /* Expected difference. */ |
429 | TEST_COMPARE_STRING (str (_NL_MESSAGES_CODESET), "ANSI_X3.4-1968" ); |
430 | TEST_COMPARE_STRING (str_utf8 (_NL_MESSAGES_CODESET), "UTF-8" ); |
431 | |
432 | /* LC_PAPER. */ |
433 | |
434 | TEST_COMPARE (word (_NL_PAPER_HEIGHT), word_utf8 (_NL_PAPER_HEIGHT)); |
435 | TEST_COMPARE (word (_NL_PAPER_WIDTH), word_utf8 (_NL_PAPER_WIDTH)); |
436 | /* Expected difference. */ |
437 | TEST_COMPARE_STRING (str (_NL_PAPER_CODESET), "ANSI_X3.4-1968" ); |
438 | TEST_COMPARE_STRING (str_utf8 (_NL_PAPER_CODESET), "UTF-8" ); |
439 | |
440 | /* LC_NAME. */ |
441 | |
442 | TEST_COMPARE_STRING (str (_NL_NAME_NAME_FMT), |
443 | str_utf8 (_NL_NAME_NAME_FMT)); |
444 | TEST_COMPARE_STRING (str (_NL_NAME_NAME_GEN), |
445 | str_utf8 (_NL_NAME_NAME_GEN)); |
446 | TEST_COMPARE_STRING (str (_NL_NAME_NAME_MR), |
447 | str_utf8 (_NL_NAME_NAME_MR)); |
448 | TEST_COMPARE_STRING (str (_NL_NAME_NAME_MRS), |
449 | str_utf8 (_NL_NAME_NAME_MRS)); |
450 | TEST_COMPARE_STRING (str (_NL_NAME_NAME_MISS), |
451 | str_utf8 (_NL_NAME_NAME_MISS)); |
452 | TEST_COMPARE_STRING (str (_NL_NAME_NAME_MS), |
453 | str_utf8 (_NL_NAME_NAME_MS)); |
454 | /* Expected difference. */ |
455 | TEST_COMPARE_STRING (str (_NL_NAME_CODESET), "ANSI_X3.4-1968" ); |
456 | TEST_COMPARE_STRING (str_utf8 (_NL_NAME_CODESET), "UTF-8" ); |
457 | |
458 | /* LC_ADDRESS. */ |
459 | |
460 | TEST_COMPARE_STRING (str (_NL_ADDRESS_POSTAL_FMT), |
461 | str_utf8 (_NL_ADDRESS_POSTAL_FMT)); |
462 | TEST_COMPARE_STRING (str (_NL_ADDRESS_COUNTRY_NAME), |
463 | str_utf8 (_NL_ADDRESS_COUNTRY_NAME)); |
464 | TEST_COMPARE_STRING (str (_NL_ADDRESS_COUNTRY_POST), |
465 | str_utf8 (_NL_ADDRESS_COUNTRY_POST)); |
466 | TEST_COMPARE_STRING (str (_NL_ADDRESS_COUNTRY_AB2), |
467 | str_utf8 (_NL_ADDRESS_COUNTRY_AB2)); |
468 | TEST_COMPARE_STRING (str (_NL_ADDRESS_COUNTRY_AB3), |
469 | str_utf8 (_NL_ADDRESS_COUNTRY_AB3)); |
470 | TEST_COMPARE_STRING (str (_NL_ADDRESS_COUNTRY_CAR), |
471 | str_utf8 (_NL_ADDRESS_COUNTRY_CAR)); |
472 | TEST_COMPARE (word (_NL_ADDRESS_COUNTRY_NUM), |
473 | word_utf8 (_NL_ADDRESS_COUNTRY_NUM)); |
474 | TEST_COMPARE_STRING (str (_NL_ADDRESS_COUNTRY_ISBN), |
475 | str_utf8 (_NL_ADDRESS_COUNTRY_ISBN)); |
476 | TEST_COMPARE_STRING (str (_NL_ADDRESS_LANG_NAME), |
477 | str_utf8 (_NL_ADDRESS_LANG_NAME)); |
478 | TEST_COMPARE_STRING (str (_NL_ADDRESS_LANG_AB), |
479 | str_utf8 (_NL_ADDRESS_LANG_AB)); |
480 | TEST_COMPARE_STRING (str (_NL_ADDRESS_LANG_TERM), |
481 | str_utf8 (_NL_ADDRESS_LANG_TERM)); |
482 | TEST_COMPARE_STRING (str (_NL_ADDRESS_LANG_LIB), |
483 | str_utf8 (_NL_ADDRESS_LANG_LIB)); |
484 | /* Expected difference. */ |
485 | TEST_COMPARE_STRING (str (_NL_ADDRESS_CODESET), "ANSI_X3.4-1968" ); |
486 | TEST_COMPARE_STRING (str_utf8 (_NL_ADDRESS_CODESET), "UTF-8" ); |
487 | |
488 | /* LC_TELEPHONE. */ |
489 | |
490 | TEST_COMPARE_STRING (str (_NL_TELEPHONE_TEL_INT_FMT), |
491 | str_utf8 (_NL_TELEPHONE_TEL_INT_FMT)); |
492 | TEST_COMPARE_STRING (str (_NL_TELEPHONE_TEL_DOM_FMT), |
493 | str_utf8 (_NL_TELEPHONE_TEL_DOM_FMT)); |
494 | TEST_COMPARE_STRING (str (_NL_TELEPHONE_INT_SELECT), |
495 | str_utf8 (_NL_TELEPHONE_INT_SELECT)); |
496 | TEST_COMPARE_STRING (str (_NL_TELEPHONE_INT_PREFIX), |
497 | str_utf8 (_NL_TELEPHONE_INT_PREFIX)); |
498 | /* Expected difference. */ |
499 | TEST_COMPARE_STRING (str (_NL_TELEPHONE_CODESET), "ANSI_X3.4-1968" ); |
500 | TEST_COMPARE_STRING (str_utf8 (_NL_TELEPHONE_CODESET), "UTF-8" ); |
501 | |
502 | /* LC_MEASUREMENT. */ |
503 | |
504 | TEST_COMPARE (byte (_NL_MEASUREMENT_MEASUREMENT), |
505 | byte_utf8 (_NL_MEASUREMENT_MEASUREMENT)); |
506 | /* Expected difference. */ |
507 | TEST_COMPARE_STRING (str (_NL_MEASUREMENT_CODESET), "ANSI_X3.4-1968" ); |
508 | TEST_COMPARE_STRING (str_utf8 (_NL_MEASUREMENT_CODESET), "UTF-8" ); |
509 | |
510 | /* LC_IDENTIFICATION is skipped since C.UTF-8 is distinct from C. */ |
511 | |
512 | /* _NL_IDENTIFICATION_CATEGORY cannot be tested because it is a |
513 | string array. */ |
514 | /* Expected difference. */ |
515 | TEST_COMPARE_STRING (str (_NL_IDENTIFICATION_CODESET), "ANSI_X3.4-1968" ); |
516 | TEST_COMPARE_STRING (str_utf8 (_NL_IDENTIFICATION_CODESET), "UTF-8" ); |
517 | } |
518 | |
519 | static int |
520 | do_test (void) |
521 | { |
522 | puts (s: "info: using setlocale and nl_langinfo" ); |
523 | one_pass (); |
524 | |
525 | puts (s: "info: using nl_langinfo_l" ); |
526 | |
527 | c_utf8 = newlocale (LC_ALL_MASK, locale: "C.UTF-8" , base: (locale_t) 0); |
528 | TEST_VERIFY_EXIT (c_utf8 != (locale_t) 0); |
529 | |
530 | switch_to_c (); |
531 | use_nl_langinfo_l = true; |
532 | one_pass (); |
533 | |
534 | freelocale (dataset: c_utf8); |
535 | |
536 | return 0; |
537 | } |
538 | |
539 | #include <support/test-driver.c> |
540 | |