]>
git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/3.cc
1 // { dg-do run { target c++11 } }
3 // Copyright (C) 2021-2022 Free Software Foundation, Inc.
5 // This file is part of the GNU ISO C++ Library. This library is free
6 // software; you can redistribute it and/or modify it under the
7 // terms of the GNU General Public License as published by the
8 // Free Software Foundation; either version 3, or (at your option)
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License along
17 // with this library; see the file COPYING3. If not see
18 // <http://www.gnu.org/licenses/>.
23 #include <testsuite_hooks.h>
30 locale loc_c
= locale::classic();
34 const time_get
<wchar_t>& tget
= use_facet
<time_get
<wchar_t>>(iss
.getloc());
35 typedef istreambuf_iterator
<wchar_t> iter
;
39 ios_base::iostate err
= ios_base::badbit
;
43 wstring format
= L
"%a";
44 auto ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
45 format
.data(), format
.data()+format
.size());
46 VERIFY( err
== ios_base::eofbit
);
48 VERIFY( time
.tm_wday
== 1 );
52 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
53 format
.data(), format
.data()+format
.size());
54 VERIFY( err
== ios_base::goodbit
);
55 VERIFY( ret
!= end
&& *ret
== L
' ' );
56 VERIFY( time
.tm_wday
== 2 );
58 iss
.str(L
"Wednesday");
60 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
61 format
.data(), format
.data()+format
.size());
62 VERIFY( err
== ios_base::eofbit
);
64 VERIFY( time
.tm_wday
== 3 );
68 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
69 format
.data(), format
.data()+format
.size());
70 VERIFY( err
== ios_base::eofbit
);
72 VERIFY( time
.tm_wday
== 4 );
76 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
77 format
.data(), format
.data()+format
.size());
78 VERIFY( err
== ios_base::goodbit
);
79 VERIFY( ret
!= end
&& *ret
== L
' ' );
80 VERIFY( time
.tm_wday
== 5 );
84 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
85 format
.data(), format
.data()+format
.size());
86 VERIFY( err
== ios_base::eofbit
);
88 VERIFY( time
.tm_wday
== 6 );
92 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
93 format
.data(), format
.data()+format
.size());
94 VERIFY( err
== ios_base::eofbit
);
96 VERIFY( time
.tm_mon
== 1 );
100 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
101 format
.data(), format
.data()+format
.size());
102 VERIFY( err
== ios_base::goodbit
);
103 VERIFY( ret
!= end
&& *ret
== L
' ' );
104 VERIFY( time
.tm_mon
== 2 );
108 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
109 format
.data(), format
.data()+format
.size());
110 VERIFY( err
== ios_base::eofbit
);
111 VERIFY( ret
== end
);
112 VERIFY( time
.tm_mon
== 3 );
116 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
117 format
.data(), format
.data()+format
.size());
118 VERIFY( err
== ios_base::eofbit
);
119 VERIFY( ret
== end
);
120 VERIFY( time
.tm_mon
== 4 );
124 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
125 format
.data(), format
.data()+format
.size());
126 VERIFY( err
== ios_base::goodbit
);
127 VERIFY( ret
!= end
&& *ret
== L
' ' );
128 VERIFY( time
.tm_mon
== 5 );
132 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
133 format
.data(), format
.data()+format
.size());
134 VERIFY( err
== ios_base::eofbit
);
135 VERIFY( ret
== end
);
136 VERIFY( time
.tm_mon
== 6 );
140 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
141 format
.data(), format
.data()+format
.size());
142 VERIFY( err
== ios_base::eofbit
);
143 VERIFY( ret
== end
);
144 VERIFY( time
.tm_mon
== 7 );
148 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
149 format
.data(), format
.data()+format
.size());
150 VERIFY( err
== ios_base::goodbit
);
151 VERIFY( ret
!= end
&& *ret
== L
' ' );
152 VERIFY( time
.tm_mon
== 4 );
156 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
157 format
.data(), format
.data()+format
.size());
158 VERIFY( err
== ios_base::eofbit
);
159 VERIFY( ret
== end
);
160 VERIFY( time
.tm_mon
== 9 );
165 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
166 format
.data(), format
.data()+format
.size());
167 VERIFY( err
== ios_base::goodbit
);
168 VERIFY( ret
== end
);
169 VERIFY( time
.tm_mday
== 1 );
173 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
174 format
.data(), format
.data()+format
.size());
175 VERIFY( err
== ios_base::goodbit
);
176 VERIFY( ret
== end
);
177 VERIFY( time
.tm_mday
== 2 );
181 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
182 format
.data(), format
.data()+format
.size());
183 VERIFY( err
== ios_base::goodbit
);
184 VERIFY( ret
== end
);
185 VERIFY( time
.tm_mday
== 3 );
189 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
190 format
.data(), format
.data()+format
.size());
191 VERIFY( err
== ios_base::failbit
);
192 VERIFY( ret
!= end
&& *ret
== L
'.' );
196 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
197 format
.data(), format
.data()+format
.size());
198 VERIFY( err
== ios_base::failbit
);
199 VERIFY( ret
!= end
&& *ret
== L
'2' );
203 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
204 format
.data(), format
.data()+format
.size());
205 VERIFY( err
== ios_base::goodbit
);
206 VERIFY( ret
== end
);
207 VERIFY( time
.tm_mday
== 4 );
211 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
212 format
.data(), format
.data()+format
.size());
213 VERIFY( err
== ios_base::goodbit
);
214 VERIFY( ret
== end
);
215 VERIFY( time
.tm_mday
== 5 );
219 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
220 format
.data(), format
.data()+format
.size());
221 VERIFY( err
== ios_base::goodbit
);
222 VERIFY( ret
== end
);
223 VERIFY( time
.tm_mday
== 6 );
227 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
228 format
.data(), format
.data()+format
.size());
229 VERIFY( err
== ios_base::failbit
|ios_base::eofbit
);
230 VERIFY( ret
== end
);
234 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
235 format
.data(), format
.data()+format
.size());
236 VERIFY( err
== ios_base::failbit
);
237 VERIFY( ret
!= end
&& *ret
== L
'5' );
239 iss
.str(L
" \t\t 02");
241 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
242 format
.data(), format
.data()+format
.size());
243 VERIFY( err
== ios_base::eofbit
);
244 VERIFY( ret
== end
);
245 VERIFY( time
.tm_mon
== 1 );
247 iss
.str(L
" \t \t 03");
249 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
250 format
.data(), format
.data()+format
.size());
251 VERIFY( err
== ios_base::eofbit
);
252 VERIFY( ret
== end
);
253 VERIFY( time
.tm_mon
== 2 );
255 iss
.str(L
" \t \t 4");
257 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
258 format
.data(), format
.data()+format
.size());
259 VERIFY( err
== ios_base::eofbit
);
260 VERIFY( ret
== end
);
261 VERIFY( time
.tm_mon
== 3 );
263 iss
.str(L
" \t \t 5");
265 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
266 format
.data(), format
.data()+format
.size());
267 VERIFY( err
== ios_base::eofbit
);
268 VERIFY( ret
== end
);
269 VERIFY( time
.tm_mon
== 4 );
273 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
274 format
.data(), format
.data()+format
.size());
275 VERIFY( err
== ios_base::eofbit
);
276 VERIFY( ret
== end
);
277 VERIFY( time
.tm_hour
== 0 );
278 VERIFY( time
.tm_min
== 0 );
282 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
283 format
.data(), format
.data()+format
.size());
284 VERIFY( err
== ios_base::eofbit
);
285 VERIFY( ret
== end
);
286 VERIFY( time
.tm_hour
== 0 );
287 VERIFY( time
.tm_min
== 37 );
291 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
292 format
.data(), format
.data()+format
.size());
293 VERIFY( err
== ios_base::eofbit
);
294 VERIFY( ret
== end
);
295 VERIFY( time
.tm_hour
== 1 );
296 VERIFY( time
.tm_min
== 25 );
300 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
301 format
.data(), format
.data()+format
.size());
302 VERIFY( err
== ios_base::eofbit
);
303 VERIFY( ret
== end
);
304 VERIFY( time
.tm_hour
== 12 );
305 VERIFY( time
.tm_min
== 0 );
309 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
310 format
.data(), format
.data()+format
.size());
311 VERIFY( err
== ios_base::eofbit
);
312 VERIFY( ret
== end
);
313 VERIFY( time
.tm_hour
== 12 );
314 VERIFY( time
.tm_min
== 42 );
318 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
319 format
.data(), format
.data()+format
.size());
320 VERIFY( err
== ios_base::eofbit
);
321 VERIFY( ret
== end
);
322 VERIFY( time
.tm_hour
== 19 );
323 VERIFY( time
.tm_min
== 23 );
327 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
328 format
.data(), format
.data()+format
.size());
329 VERIFY( err
== ios_base::eofbit
);
330 VERIFY( ret
== end
);
331 VERIFY( time
.tm_hour
== 17 );
332 VERIFY( time
.tm_min
== 20 );
336 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
337 format
.data(), format
.data()+format
.size());
338 VERIFY( err
== ios_base::failbit
);
339 VERIFY( ret
!= end
&& *ret
== L
'4' );
341 // This one behaves differently from strptime, in a single
342 // pass scaning we can't go back.
343 iss
.str(L
"Novembur");
345 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
346 format
.data(), format
.data()+format
.size());
347 VERIFY( err
== ios_base::failbit
);
348 VERIFY( ret
!= end
&& *ret
== L
'u' );