1//===----------------------------------------------------------------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is dual licensed under the MIT and the University of Illinois Open
6// Source Licenses. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// <chrono>
11
12// time_point
13
14// template <class Clock, class Duration1, class Duration2>
15//   bool
16//   operator< (const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs);
17
18// template <class Clock, class Duration1, class Duration2>
19//   bool
20//   operator> (const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs);
21
22// template <class Clock, class Duration1, class Duration2>
23//   bool
24//   operator<=(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs);
25
26// template <class Clock, class Duration1, class Duration2>
27//   bool
28//   operator>=(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs);
29
30#include <chrono>
31#include <cassert>
32
33#include "test_macros.h"
34
35int main()
36{
37    typedef std::chrono::system_clock Clock;
38    typedef std::chrono::milliseconds Duration1;
39    typedef std::chrono::microseconds Duration2;
40    typedef std::chrono::time_point<Clock, Duration1> T1;
41    typedef std::chrono::time_point<Clock, Duration2> T2;
42
43    {
44    T1 t1(Duration1(3));
45    T1 t2(Duration1(3));
46    assert(!(t1 <  t2));
47    assert(!(t1 >  t2));
48    assert( (t1 <= t2));
49    assert( (t1 >= t2));
50    }
51    {
52    T1 t1(Duration1(3));
53    T1 t2(Duration1(4));
54    assert( (t1 <  t2));
55    assert(!(t1 >  t2));
56    assert( (t1 <= t2));
57    assert(!(t1 >= t2));
58    }
59    {
60    T1 t1(Duration1(3));
61    T2 t2(Duration2(3000));
62    assert(!(t1 <  t2));
63    assert(!(t1 >  t2));
64    assert( (t1 <= t2));
65    assert( (t1 >= t2));
66    }
67    {
68    T1 t1(Duration1(3));
69    T2 t2(Duration2(3001));
70    assert( (t1 <  t2));
71    assert(!(t1 >  t2));
72    assert( (t1 <= t2));
73    assert(!(t1 >= t2));
74    }
75
76#if TEST_STD_VER > 11
77    {
78    constexpr T1 t1(Duration1(3));
79    constexpr T1 t2(Duration1(3));
80    static_assert(!(t1 <  t2), "");
81    static_assert(!(t1 >  t2), "");
82    static_assert( (t1 <= t2), "");
83    static_assert( (t1 >= t2), "");
84    }
85    {
86    constexpr T1 t1(Duration1(3));
87    constexpr T1 t2(Duration1(4));
88    static_assert( (t1 <  t2), "");
89    static_assert(!(t1 >  t2), "");
90    static_assert( (t1 <= t2), "");
91    static_assert(!(t1 >= t2), "");
92    }
93    {
94    constexpr T1 t1(Duration1(3));
95    constexpr T2 t2(Duration2(3000));
96    static_assert(!(t1 <  t2), "");
97    static_assert(!(t1 >  t2), "");
98    static_assert( (t1 <= t2), "");
99    static_assert( (t1 >= t2), "");
100    }
101    {
102    constexpr T1 t1(Duration1(3));
103    constexpr T2 t2(Duration2(3001));
104    static_assert( (t1 <  t2), "");
105    static_assert(!(t1 >  t2), "");
106    static_assert( (t1 <= t2), "");
107    static_assert(!(t1 >= t2), "");
108    }
109#endif
110}
111