diff options
Diffstat (limited to 'libcxx/test/utilities/time/time.traits')
7 files changed, 216 insertions, 0 deletions
diff --git a/libcxx/test/utilities/time/time.traits/nothing_to_do.pass.cpp b/libcxx/test/utilities/time/time.traits/nothing_to_do.pass.cpp new file mode 100644 index 00000000000..fa4d462f18d --- /dev/null +++ b/libcxx/test/utilities/time/time.traits/nothing_to_do.pass.cpp @@ -0,0 +1,12 @@ +//===----------------------------------------------------------------------===// +// +// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +int main() +{ +} diff --git a/libcxx/test/utilities/time/time.traits/time.traits.duration_values/max.pass.cpp b/libcxx/test/utilities/time/time.traits/time.traits.duration_values/max.pass.cpp new file mode 100644 index 00000000000..2d18f4acf0b --- /dev/null +++ b/libcxx/test/utilities/time/time.traits/time.traits.duration_values/max.pass.cpp @@ -0,0 +1,28 @@ +//===----------------------------------------------------------------------===// +// +// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <chrono> + +// duration_values::max + +#include <chrono> +#include <limits> +#include <cassert> + +#include "../../rep.h" + +int main() +{ + assert(std::chrono::duration_values<int>::max() == + std::numeric_limits<int>::max()); + assert(std::chrono::duration_values<double>::max() == + std::numeric_limits<double>::max()); + assert(std::chrono::duration_values<Rep>::max() == + std::numeric_limits<Rep>::max()); +} diff --git a/libcxx/test/utilities/time/time.traits/time.traits.duration_values/min.pass.cpp b/libcxx/test/utilities/time/time.traits/time.traits.duration_values/min.pass.cpp new file mode 100644 index 00000000000..73c4baa2b5d --- /dev/null +++ b/libcxx/test/utilities/time/time.traits/time.traits.duration_values/min.pass.cpp @@ -0,0 +1,28 @@ +//===----------------------------------------------------------------------===// +// +// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <chrono> + +// duration_values::min + +#include <chrono> +#include <limits> +#include <cassert> + +#include "../../rep.h" + +int main() +{ + assert(std::chrono::duration_values<int>::min() == + std::numeric_limits<int>::lowest()); + assert(std::chrono::duration_values<double>::min() == + std::numeric_limits<double>::lowest()); + assert(std::chrono::duration_values<Rep>::min() == + std::numeric_limits<Rep>::lowest()); +} diff --git a/libcxx/test/utilities/time/time.traits/time.traits.duration_values/zero.pass.cpp b/libcxx/test/utilities/time/time.traits/time.traits.duration_values/zero.pass.cpp new file mode 100644 index 00000000000..6651841a64f --- /dev/null +++ b/libcxx/test/utilities/time/time.traits/time.traits.duration_values/zero.pass.cpp @@ -0,0 +1,23 @@ +//===----------------------------------------------------------------------===// +// +// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <chrono> + +// duration_values::zero + +#include <chrono> +#include <cassert> + +#include "../../rep.h" + +int main() +{ + assert(std::chrono::duration_values<int>::zero() == 0); + assert(std::chrono::duration_values<Rep>::zero() == 0); +} diff --git a/libcxx/test/utilities/time/time.traits/time.traits.is_fp/treat_as_floating_point.pass.cpp b/libcxx/test/utilities/time/time.traits/time.traits.is_fp/treat_as_floating_point.pass.cpp new file mode 100644 index 00000000000..466e09d08d7 --- /dev/null +++ b/libcxx/test/utilities/time/time.traits/time.traits.is_fp/treat_as_floating_point.pass.cpp @@ -0,0 +1,37 @@ +//===----------------------------------------------------------------------===// +// +// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <chrono> + +// treat_as_floating_point + +#include <chrono> +#include <type_traits> + +template <class T> +void +test() +{ + static_assert((std::is_base_of<std::is_floating_point<T>, + std::chrono::treat_as_floating_point<T> >::value), ""); +} + +struct A {}; + +int main() +{ + test<int>(); + test<unsigned>(); + test<char>(); + test<bool>(); + test<float>(); + test<double>(); + test<long double>(); + test<A>(); +} diff --git a/libcxx/test/utilities/time/time.traits/time.traits.specializations/duration.pass.cpp b/libcxx/test/utilities/time/time.traits/time.traits.specializations/duration.pass.cpp new file mode 100644 index 00000000000..1d76bfc6f62 --- /dev/null +++ b/libcxx/test/utilities/time/time.traits/time.traits.specializations/duration.pass.cpp @@ -0,0 +1,42 @@ +//===----------------------------------------------------------------------===// +// +// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <chrono> + +// template <class Rep1, class Period1, class Rep2, class Period2> +// struct common_type<chrono::duration<Rep1, Period1>, chrono::duration<Rep2, Period2>> +// { +// typedef chrono::duration<typename common_type<Rep1, Rep2>::type, see below }> type; +// }; + +#include <chrono> + +template <class D1, class D2, class De> +void +test() +{ + typedef typename std::common_type<D1, D2>::type Dc; + static_assert((std::is_same<Dc, De>::value), ""); +} + +int main() +{ + test<std::chrono::duration<int, std::ratio<1, 100> >, + std::chrono::duration<long, std::ratio<1, 1000> >, + std::chrono::duration<long, std::ratio<1, 1000> > >(); + test<std::chrono::duration<long, std::ratio<1, 100> >, + std::chrono::duration<int, std::ratio<1, 1000> >, + std::chrono::duration<long, std::ratio<1, 1000> > >(); + test<std::chrono::duration<char, std::ratio<1, 30> >, + std::chrono::duration<short, std::ratio<1, 1000> >, + std::chrono::duration<int, std::ratio<1, 3000> > >(); + test<std::chrono::duration<double, std::ratio<21, 1> >, + std::chrono::duration<short, std::ratio<15, 1> >, + std::chrono::duration<double, std::ratio<3, 1> > >(); +} diff --git a/libcxx/test/utilities/time/time.traits/time.traits.specializations/time_point.pass.cpp b/libcxx/test/utilities/time/time.traits/time.traits.specializations/time_point.pass.cpp new file mode 100644 index 00000000000..b3e95c46596 --- /dev/null +++ b/libcxx/test/utilities/time/time.traits/time.traits.specializations/time_point.pass.cpp @@ -0,0 +1,46 @@ +//===----------------------------------------------------------------------===// +// +// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// <chrono> + +// template <class Clock, class Duration1, class Duration2> +// struct common_type<chrono::time_point<Clock, Duration1>, chrono::time_point<Clock, Duration2>> +// { +// typedef chrono::time_point<Clock, typename common_type<Duration1, Duration2>::type> type; +// }; + +#include <chrono> + +template <class D1, class D2, class De> +void +test() +{ + typedef std::chrono::system_clock C; + typedef std::chrono::time_point<C, D1> T1; + typedef std::chrono::time_point<C, D2> T2; + typedef std::chrono::time_point<C, De> Te; + typedef typename std::common_type<T1, T2>::type Tc; + static_assert((std::is_same<Tc, Te>::value), ""); +} + +int main() +{ + test<std::chrono::duration<int, std::ratio<1, 100> >, + std::chrono::duration<long, std::ratio<1, 1000> >, + std::chrono::duration<long, std::ratio<1, 1000> > >(); + test<std::chrono::duration<long, std::ratio<1, 100> >, + std::chrono::duration<int, std::ratio<1, 1000> >, + std::chrono::duration<long, std::ratio<1, 1000> > >(); + test<std::chrono::duration<char, std::ratio<1, 30> >, + std::chrono::duration<short, std::ratio<1, 1000> >, + std::chrono::duration<int, std::ratio<1, 3000> > >(); + test<std::chrono::duration<double, std::ratio<21, 1> >, + std::chrono::duration<short, std::ratio<15, 1> >, + std::chrono::duration<double, std::ratio<3, 1> > >(); +} |

