]>
Commit | Line | Data |
---|---|---|
7e0ad15c | 1 | /* Test that C/POSIX and C.UTF-8 are consistent. |
dff8da6b | 2 | Copyright (C) 2022-2024 Free Software Foundation, Inc. |
7e0ad15c CD |
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, 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 ("info: using setlocale and nl_langinfo"); | |
523 | one_pass (); | |
524 | ||
525 | puts ("info: using nl_langinfo_l"); | |
526 | ||
527 | c_utf8 = newlocale (LC_ALL_MASK, "C.UTF-8", (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 (c_utf8); | |
535 | ||
536 | return 0; | |
537 | } | |
538 | ||
539 | #include <support/test-driver.c> |