blob: 2d2f633b4b7ab7d23bd66bc81bf6c650c1aa0472 [file]
// { dg-do run { target c++20 } }
// Bug 126543 - chrono::parse should accept "60" seconds for a utc_time
// that is a valid leap second
#include <chrono>
#include <sstream>
#include <testsuite_hooks.h>
int main()
{
std::istringstream in;
std::chrono::utc_seconds ut;
std::chrono::sys_seconds st;
in.str("2016-12-31 24:59:59"); // invalid hour
in >> parse("%F %T", ut);
VERIFY(in.fail());
in.clear();
in.str("2016-12-31 23:60:59"); // invalid minute
in >> parse("%F %T", ut);
VERIFY(in.fail());
in.clear();
in.str("2016-12-31 23:59:60"); // valid leap second
in >> parse("%F %T", ut);
VERIFY(in.good());
in.clear();
in.str("2016-12-31 23:58:60"); // invalid leap second
in >> parse("%F %T", ut);
VERIFY(in.fail());
in.clear();
in.str("2016-12-31 23:59:60");
in >> parse("%F %T", st);
VERIFY(in.fail()); // sys_time doesn't use leap seconds
in.clear();
}