]>
git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/std/time/year_month_weekday/3.cc
1 // { dg-options "-std=gnu++2a" }
2 // { dg-do compile { target c++2a } }
4 // Copyright (C) 2020-2022 Free Software Foundation, Inc.
6 // This file is part of the GNU ISO C++ Library. This library is free
7 // software; you can redistribute it and/or modify it under the
8 // terms of the GNU General Public License as published by the
9 // Free Software Foundation; either version 3, or (at your option)
12 // This library is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU General Public License for more details.
17 // You should have received a copy of the GNU General Public License along
18 // with this library; see the file COPYING3. If not see
19 // <http://www.gnu.org/licenses/>.
22 // Test year_month_weekday to sys_days conversion for extreme values of index().
29 using namespace std::chrono
;
30 using ymd
= year_month_day
;
32 static_assert(ymd
{sys_days
{2020y
/January
/Sunday
[0]}} == 2019y
/December
/29);
33 static_assert(ymd
{sys_days
{2020y
/January
/Monday
[0]}} == 2019y
/December
/30);
34 static_assert(ymd
{sys_days
{2020y
/January
/Tuesday
[0]}} == 2019y
/December
/31);
35 static_assert(ymd
{sys_days
{2020y
/January
/Wednesday
[0]}} == 2019y
/December
/25);
36 static_assert(ymd
{sys_days
{2020y
/January
/Thursday
[0]}} == 2019y
/December
/26);
37 static_assert(ymd
{sys_days
{2020y
/January
/Friday
[0]}} == 2019y
/December
/27);
38 static_assert(ymd
{sys_days
{2020y
/January
/Saturday
[0]}} == 2019y
/December
/28);
40 static_assert((2020y
).is_leap());
41 static_assert(ymd
{sys_days
{2020y
/March
/Sunday
[0]}} == 2020y
/February
/23);
42 static_assert(ymd
{sys_days
{2020y
/March
/Monday
[0]}} == 2020y
/February
/24);
43 static_assert(ymd
{sys_days
{2020y
/March
/Tuesday
[0]}} == 2020y
/February
/25);
44 static_assert(ymd
{sys_days
{2020y
/March
/Wednesday
[0]}} == 2020y
/February
/26);
45 static_assert(ymd
{sys_days
{2020y
/March
/Thursday
[0]}} == 2020y
/February
/27);
46 static_assert(ymd
{sys_days
{2020y
/March
/Friday
[0]}} == 2020y
/February
/28);
47 static_assert(ymd
{sys_days
{2020y
/March
/Saturday
[0]}} == 2020y
/February
/29);
49 static_assert(!(2019y
).is_leap());
50 static_assert(ymd
{sys_days
{2019y
/March
/Sunday
[0]}} == 2019y
/February
/24);
51 static_assert(ymd
{sys_days
{2019y
/March
/Monday
[0]}} == 2019y
/February
/25);
52 static_assert(ymd
{sys_days
{2019y
/March
/Tuesday
[0]}} == 2019y
/February
/26);
53 static_assert(ymd
{sys_days
{2019y
/March
/Wednesday
[0]}} == 2019y
/February
/27);
54 static_assert(ymd
{sys_days
{2019y
/March
/Thursday
[0]}} == 2019y
/February
/28);
55 static_assert(ymd
{sys_days
{2019y
/March
/Friday
[0]}} == 2019y
/February
/22);
56 static_assert(ymd
{sys_days
{2019y
/March
/Saturday
[0]}} == 2019y
/February
/23);
58 static_assert(ymd
{sys_days
{2020y
/December
/Sunday
[5]}} == 2021y
/January
/3);
59 static_assert(ymd
{sys_days
{2020y
/December
/Monday
[5]}} == 2021y
/January
/4);
60 static_assert(ymd
{sys_days
{2020y
/December
/Tuesday
[5]}} == 2020y
/December
/29);
61 static_assert(ymd
{sys_days
{2020y
/December
/Wednesday
[5]}} == 2020y
/December
/30);
62 static_assert(ymd
{sys_days
{2020y
/December
/Thursday
[5]}} == 2020y
/December
/31);
63 static_assert(ymd
{sys_days
{2020y
/December
/Friday
[5]}} == 2021y
/January
/1);
64 static_assert(ymd
{sys_days
{2020y
/December
/Saturday
[5]}} == 2021y
/January
/2);