diff options
Diffstat (limited to 'libcxx/test/std/utilities/time/time.traits/time.traits.specializations')
2 files changed, 88 insertions, 0 deletions
diff --git a/libcxx/test/std/utilities/time/time.traits/time.traits.specializations/duration.pass.cpp b/libcxx/test/std/utilities/time/time.traits/time.traits.specializations/duration.pass.cpp new file mode 100644 index 00000000000..f942844b60a --- /dev/null +++ b/libcxx/test/std/utilities/time/time.traits/time.traits.specializations/duration.pass.cpp @@ -0,0 +1,42 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. 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/std/utilities/time/time.traits/time.traits.specializations/time_point.pass.cpp b/libcxx/test/std/utilities/time/time.traits/time.traits.specializations/time_point.pass.cpp new file mode 100644 index 00000000000..a0786b49924 --- /dev/null +++ b/libcxx/test/std/utilities/time/time.traits/time.traits.specializations/time_point.pass.cpp @@ -0,0 +1,46 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. 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> > >(); +} |