xref: /llvm-project/libcxx/test/std/time/time.cal/time.cal.ymdlast/time.cal.ymdlast.members/ctor.pass.cpp (revision 7738db2c06b177fe916ac1bcf3633449b3c1fca9)
1 //===----------------------------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 // UNSUPPORTED: c++03, c++11, c++14, c++17
9 
10 // <chrono>
11 // class year_month_day_last;
12 
13 //  constexpr year_month_day_last(const chrono::year& y,
14 //                                const chrono::month_day_last& mdl) noexcept;
15 //
16 //  Effects:  Constructs an object of type year_month_day_last by initializing
17 //                initializing y_ with y and mdl_ with mdl.
18 //
19 //  constexpr chrono::year                     year() const noexcept;
20 //  constexpr chrono::month                   month() const noexcept;
21 //  constexpr chrono::month_day_last month_day_last() const noexcept;
22 //  constexpr bool                               ok() const noexcept;
23 
24 #include <chrono>
25 #include <type_traits>
26 #include <cassert>
27 
28 #include "test_macros.h"
29 
main(int,char **)30 int main(int, char**)
31 {
32     using year                = std::chrono::year;
33     using month               = std::chrono::month;
34     using month_day_last      = std::chrono::month_day_last;
35     using year_month_day_last = std::chrono::year_month_day_last;
36 
37     ASSERT_NOEXCEPT(year_month_day_last{year{1}, month_day_last{month{1}}});
38 
39     constexpr month January = std::chrono::January;
40 
41     constexpr year_month_day_last ymdl0{year{}, month_day_last{month{}}};
42     static_assert( ymdl0.year()           == year{},                  "");
43     static_assert( ymdl0.month()          == month{},                 "");
44     static_assert( ymdl0.month_day_last() == month_day_last{month{}}, "");
45     static_assert(!ymdl0.ok(),                                        "");
46 
47     constexpr year_month_day_last ymdl1{year{2019}, month_day_last{January}};
48     static_assert( ymdl1.year()           == year{2019},              "");
49     static_assert( ymdl1.month()          == January,                 "");
50     static_assert( ymdl1.month_day_last() == month_day_last{January}, "");
51     static_assert( ymdl1.ok(),                                        "");
52 
53   return 0;
54 }
55