]>
git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/22_locale/time_get/get/char/4.cc
1 // { dg-do run { target c++11 } }
3 // Copyright (C) 2021-2024 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
<char>& tget
= use_facet
<time_get
<char>>(iss
.getloc());
35 typedef istreambuf_iterator
<char> iter
;
39 ios_base::iostate err
= ios_base::badbit
;
41 iss
.str("PM01:38:12");
42 string format
= "%p%I:%M:%S";
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_hour
== 13 );
49 VERIFY( time
.tm_min
== 38 );
50 VERIFY( time
.tm_sec
== 12 );
55 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
56 format
.data(), format
.data()+format
.size());
57 VERIFY( err
== ios_base::eofbit
);
59 VERIFY( time
.tm_year
== 537 - 1900 );
64 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
65 format
.data(), format
.data()+format
.size());
66 VERIFY( err
== ios_base::eofbit
);
68 VERIFY( time
.tm_year
== 2068 - 1900 );
73 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
74 format
.data(), format
.data()+format
.size());
75 VERIFY( err
== ios_base::eofbit
);
77 VERIFY( time
.tm_year
== 1969 - 1900 );
79 iss
.str("03-Feb-2003");
82 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
83 format
.data(), format
.data()+format
.size());
84 VERIFY( err
== ios_base::eofbit
);
86 VERIFY( time
.tm_year
== 2003 - 1900 );
87 VERIFY( time
.tm_mon
== 1 );
88 VERIFY( time
.tm_mday
== 3 );
89 VERIFY( time
.tm_wday
== 1 );
90 VERIFY( time
.tm_yday
== 33 );
92 iss
.str("16-Dec-2020");
95 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
96 format
.data(), format
.data()+format
.size());
97 VERIFY( err
== ios_base::eofbit
);
99 VERIFY( time
.tm_year
== 2020 - 1900 );
100 VERIFY( time
.tm_mon
== 11 );
101 VERIFY( time
.tm_mday
== 16 );
102 VERIFY( time
.tm_wday
== 3 );
103 VERIFY( time
.tm_yday
== 350 );
105 iss
.str("16-Dec-2021");
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_year
== 2021 - 1900 );
113 VERIFY( time
.tm_mon
== 11 );
114 VERIFY( time
.tm_mday
== 16 );
115 VERIFY( time
.tm_wday
== 4 );
116 VERIFY( time
.tm_yday
== 349 );
121 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
122 format
.data(), format
.data()+format
.size());
123 VERIFY( err
== ios_base::eofbit
);
124 VERIFY( ret
== end
);
125 VERIFY( time
.tm_year
== 2020 - 1900 );
126 VERIFY( time
.tm_mon
== 8 );
127 VERIFY( time
.tm_mday
== 9 );
128 VERIFY( time
.tm_wday
== 3 );
129 VERIFY( time
.tm_yday
== 252 );
134 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
135 format
.data(), format
.data()+format
.size());
136 VERIFY( err
== ios_base::eofbit
);
137 VERIFY( ret
== end
);
138 VERIFY( time
.tm_year
== 2021 - 1900 );
139 VERIFY( time
.tm_mon
== 7 );
140 VERIFY( time
.tm_mday
== 21 );
141 VERIFY( time
.tm_wday
== 6 );
142 VERIFY( time
.tm_yday
== 232 );
144 iss
.str("2020 23 3");
147 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
148 format
.data(), format
.data()+format
.size());
149 VERIFY( err
== ios_base::eofbit
);
150 VERIFY( ret
== end
);
151 VERIFY( time
.tm_year
== 2020 - 1900 );
152 VERIFY( time
.tm_mon
== 5 );
153 VERIFY( time
.tm_mday
== 10 );
154 VERIFY( time
.tm_wday
== 3 );
155 VERIFY( time
.tm_yday
== 161 );
157 iss
.str("2020 23 3");
160 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
161 format
.data(), format
.data()+format
.size());
162 VERIFY( err
== ios_base::eofbit
);
163 VERIFY( ret
== end
);
164 VERIFY( time
.tm_year
== 2020 - 1900 );
165 VERIFY( time
.tm_mon
== 5 );
166 VERIFY( time
.tm_mday
== 10 );
167 VERIFY( time
.tm_wday
== 3 );
168 VERIFY( time
.tm_yday
== 161 );
170 iss
.str("2021 43 Fri");
173 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
174 format
.data(), format
.data()+format
.size());
175 VERIFY( err
== ios_base::eofbit
);
176 VERIFY( ret
== end
);
177 VERIFY( time
.tm_year
== 2021 - 1900 );
178 VERIFY( time
.tm_mon
== 9 );
179 VERIFY( time
.tm_mday
== 29 );
180 VERIFY( time
.tm_wday
== 5 );
181 VERIFY( time
.tm_yday
== 301 );
183 iss
.str("2024 23 3");
186 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
187 format
.data(), format
.data()+format
.size());
188 VERIFY( err
== ios_base::eofbit
);
189 VERIFY( ret
== end
);
190 VERIFY( time
.tm_year
== 2024 - 1900 );
191 VERIFY( time
.tm_mon
== 5 );
192 VERIFY( time
.tm_mday
== 12 );
193 VERIFY( time
.tm_wday
== 3 );
194 VERIFY( time
.tm_yday
== 163 );
196 iss
.str("2024 23 3");
199 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
200 format
.data(), format
.data()+format
.size());
201 VERIFY( err
== ios_base::eofbit
);
202 VERIFY( ret
== end
);
203 VERIFY( time
.tm_year
== 2024 - 1900 );
204 VERIFY( time
.tm_mon
== 5 );
205 VERIFY( time
.tm_mday
== 5 );
206 VERIFY( time
.tm_wday
== 3 );
207 VERIFY( time
.tm_yday
== 156 );
209 // As an extension, parse also 4 digit years.
213 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
214 format
.data(), format
.data()+format
.size());
215 VERIFY( err
== ios_base::eofbit
);
216 VERIFY( ret
== end
);
217 VERIFY( time
.tm_year
== 68 - 1900 );
222 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
223 format
.data(), format
.data()+format
.size());
224 VERIFY( err
== ios_base::eofbit
);
225 VERIFY( ret
== end
);
226 VERIFY( time
.tm_year
== 69 - 1900 );
231 ret
= tget
.get(iter(iss
), end
, iss
, err
, &time
,
232 format
.data(), format
.data()+format
.size());
233 VERIFY( err
== ios_base::eofbit
);
234 VERIFY( ret
== end
);
235 VERIFY( time
.tm_year
== 1492 - 1900 );