]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/std/time/day/1.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / std / time / day / 1.cc
CommitLineData
03d5044b
PP
1// { dg-options "-std=gnu++2a" }
2// { dg-do compile { target c++2a } }
3
99dee823 4// Copyright (C) 2020-2021 Free Software Foundation, Inc.
03d5044b
PP
5//
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)
10// any later version.
11
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.
16
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/>.
20
21// Class template day [time.cal.day]
22
23#include <chrono>
24
25constexpr void
26constexpr_day()
27{
28 using namespace std::chrono;
29
30 day dd{};
31 ++(++dd);
32 dd++;
33 --(--dd);
34 dd--;
35 dd += days{3};
36 dd -= days{3};
37
38 static_assert(day{1} + days{2} == day{3});
39 static_assert(days{2} + day{1} == day{3});
40 static_assert(day{3} - day{1} == days{2});
41 static_assert(day{3} - days{1} == day{2});
42
43 static_assert(++day{4} == day{5});
44 static_assert(day{4}++ == day{4});
45 static_assert(--day{4} == day{3});
46 static_assert(day{4}-- == day{4});
47 static_assert((day{4} += days{3}) == day{7});
48 static_assert((day{4} -= days{3}) == day{1});
49
50 static_assert(!day{}.ok());
51 static_assert(day{1}.ok());
52 static_assert(day{31}.ok());
53 static_assert(!day{32}.ok());
54
55 static_assert(unsigned{day{7}} == 7);
56
57 static_assert(!(day{0} == day{1}));
58 static_assert( (day{0} != day{2}));
59 static_assert( (day{0} < day{3}));
60 static_assert(!(day{0} > day{4}));
61 static_assert( (day{0} <= day{5}));
62 static_assert(!(day{0} >= day{6}));
63
64 static_assert(day{0} <=> day{1} == std::strong_ordering::less);
65 static_assert(day{3} <=> day{3} == std::strong_ordering::equal);
66 static_assert(day{5} <=> day{2} == std::strong_ordering::greater);
67}