From 2e550cabead6a444bfa69e6c168df99814e05e6a Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Mon, 17 Jun 2019 18:06:30 +0000 Subject: Add tests for LWG 3206. NFC llvm-svn: 363589 --- .../time.cal.ymd.members/op.sys_days.pass.cpp | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'libcxx/test/std/utilities') diff --git a/libcxx/test/std/utilities/time/time.cal/time.cal.ymd/time.cal.ymd.members/op.sys_days.pass.cpp b/libcxx/test/std/utilities/time/time.cal/time.cal.ymd/time.cal.ymd.members/op.sys_days.pass.cpp index a9568455085..03d3bbbc895 100644 --- a/libcxx/test/std/utilities/time/time.cal/time.cal.ymd/time.cal.ymd.members/op.sys_days.pass.cpp +++ b/libcxx/test/std/utilities/time/time.cal/time.cal.ymd/time.cal.ymd.members/op.sys_days.pass.cpp @@ -90,5 +90,28 @@ int main(int, char**) assert( year_month_day{sd} == ymd); // and back } +// These two tests check the wording for LWG 3206 + { + constexpr year_month_day ymd{year{1971}, month{1}, day{0}}; // bad day + static_assert(!ymd.ok(), ""); + static_assert( ymd.year().ok(), ""); + static_assert( ymd.month().ok(), ""); + static_assert(!ymd.day().ok(), ""); + constexpr sys_days sd{ymd}; + static_assert(sd.time_since_epoch() == days{364}, ""); + static_assert(sd == sys_days{ymd.year()/ymd.month()/day{1}} + (ymd.day() - day{1}), ""); + } + + { + constexpr year_month_day ymd{year{1970}, month{12}, day{32}}; // bad day + static_assert(!ymd.ok(), ""); + static_assert( ymd.year().ok(), ""); + static_assert( ymd.month().ok(), ""); + static_assert(!ymd.day().ok(), ""); + constexpr sys_days sd{ymd}; + static_assert(sd.time_since_epoch() == days{365}, ""); + static_assert(sd == sys_days{ymd.year()/ymd.month()/day{1}} + (ymd.day() - day{1}), ""); + } + return 0; } -- cgit v1.2.3