diff options
author | Mike Crowe <mac@mcrowe.com> | 2020-10-05 11:07:55 +0100 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2020-10-05 11:09:03 +0100 |
commit | d5243c46266f92f8e5373c3f314aa2abc15c9db4 (patch) | |
tree | 98b550b6e83154e22e87cd9ab517a6f886c69e01 | |
parent | b98d3cc5666f36bf3cbeed7cd6a23483cc5e4eca (diff) | |
download | gcc-d5243c46266f92f8e5373c3f314aa2abc15c9db4.zip gcc-d5243c46266f92f8e5373c3f314aa2abc15c9db4.tar.gz gcc-d5243c46266f92f8e5373c3f314aa2abc15c9db4.tar.bz2 |
libstdc++: Test C++11 implementation of std::chrono::__detail::ceil
Commit 53ad6b1979f4bd7121e977c4a44151b14d8a0147 split the implementation
of std::chrono::__detail::ceil so that when compiling for C++17 and
later std::chrono::ceil is used but when compiling for earlier versions
a separate implementation is used to comply with C++11's limited
constexpr rules. Let's run the equivalent of the existing
std::chrono::ceil test cases on std::chrono::__detail::ceil too to make
sure that it doesn't get broken.
libstdc++-v3/ChangeLog:
* testsuite/20_util/duration_cast/rounding_c++11.cc: Copy
rounding.cc and alter to support compilation for C++11 and to
test std::chrono::__detail::ceil.
-rw-r--r-- | libstdc++-v3/testsuite/20_util/duration_cast/rounding_c++11.cc | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/libstdc++-v3/testsuite/20_util/duration_cast/rounding_c++11.cc b/libstdc++-v3/testsuite/20_util/duration_cast/rounding_c++11.cc new file mode 100644 index 0000000..f10d27f --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/duration_cast/rounding_c++11.cc @@ -0,0 +1,43 @@ +// Copyright (C) 2016-2020 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +// { dg-options "-std=gnu++11" } +// { dg-do compile { target c++11 } } + +#include <chrono> + +using std::chrono::seconds; +using std::chrono::milliseconds; + +using fp_seconds = std::chrono::duration<float>; + +static_assert( std::chrono::__detail::ceil<seconds>(milliseconds(1000)) + == seconds(1) ); +static_assert( std::chrono::__detail::ceil<seconds>(milliseconds(1001)) + == seconds(2) ); +static_assert( std::chrono::__detail::ceil<seconds>(milliseconds(1500)) + == seconds(2) ); +static_assert( std::chrono::__detail::ceil<seconds>(milliseconds(1999)) + == seconds(2) ); +static_assert( std::chrono::__detail::ceil<seconds>(milliseconds(2000)) + == seconds(2) ); +static_assert( std::chrono::__detail::ceil<seconds>(milliseconds(2001)) + == seconds(3) ); +static_assert( std::chrono::__detail::ceil<seconds>(milliseconds(2500)) + == seconds(3) ); +static_assert( std::chrono::__detail::ceil<fp_seconds>(milliseconds(500)) + == fp_seconds{0.5f} ); |