1 //===----------------------------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8
9 // <chrono>
10
11 // duration
12
13 // template <class Rep1, class Period1, class Rep2, class Period2>
14 // constexpr
15 // bool
16 // operator< (const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
17
18 // template <class Rep1, class Period1, class Rep2, class Period2>
19 // constexpr
20 // bool
21 // operator> (const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
22
23 // template <class Rep1, class Period1, class Rep2, class Period2>
24 // constexpr
25 // bool
26 // operator<=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
27
28 // template <class Rep1, class Period1, class Rep2, class Period2>
29 // constexpr
30 // bool
31 // operator>=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
32
33 #include <chrono>
34 #include <cassert>
35
36 #include "test_macros.h"
37
main(int,char **)38 int main(int, char**)
39 {
40 {
41 std::chrono::seconds s1(3);
42 std::chrono::seconds s2(3);
43 assert(!(s1 < s2));
44 assert(!(s1 > s2));
45 assert( (s1 <= s2));
46 assert( (s1 >= s2));
47 }
48 {
49 std::chrono::seconds s1(3);
50 std::chrono::seconds s2(4);
51 assert( (s1 < s2));
52 assert(!(s1 > s2));
53 assert( (s1 <= s2));
54 assert(!(s1 >= s2));
55 }
56 {
57 std::chrono::milliseconds s1(3);
58 std::chrono::microseconds s2(3000);
59 assert(!(s1 < s2));
60 assert(!(s1 > s2));
61 assert( (s1 <= s2));
62 assert( (s1 >= s2));
63 }
64 {
65 std::chrono::milliseconds s1(3);
66 std::chrono::microseconds s2(4000);
67 assert( (s1 < s2));
68 assert(!(s1 > s2));
69 assert( (s1 <= s2));
70 assert(!(s1 >= s2));
71 }
72 {
73 std::chrono::duration<int, std::ratio<2, 3> > s1(9);
74 std::chrono::duration<int, std::ratio<3, 5> > s2(10);
75 assert(!(s1 < s2));
76 assert(!(s1 > s2));
77 assert( (s1 <= s2));
78 assert( (s1 >= s2));
79 }
80 {
81 std::chrono::duration<int, std::ratio<2, 3> > s1(10);
82 std::chrono::duration<int, std::ratio<3, 5> > s2(9);
83 assert(!(s1 < s2));
84 assert( (s1 > s2));
85 assert(!(s1 <= s2));
86 assert( (s1 >= s2));
87 }
88 {
89 std::chrono::duration<int, std::ratio<2, 3> > s1(9);
90 std::chrono::duration<double, std::ratio<3, 5> > s2(10);
91 assert(!(s1 < s2));
92 assert(!(s1 > s2));
93 assert( (s1 <= s2));
94 assert( (s1 >= s2));
95 }
96 #if TEST_STD_VER >= 11
97 {
98 constexpr std::chrono::seconds s1(3);
99 constexpr std::chrono::seconds s2(3);
100 static_assert(!(s1 < s2), "");
101 static_assert(!(s1 > s2), "");
102 static_assert( (s1 <= s2), "");
103 static_assert( (s1 >= s2), "");
104 }
105 {
106 constexpr std::chrono::seconds s1(3);
107 constexpr std::chrono::seconds s2(4);
108 static_assert( (s1 < s2), "");
109 static_assert(!(s1 > s2), "");
110 static_assert( (s1 <= s2), "");
111 static_assert(!(s1 >= s2), "");
112 }
113 {
114 constexpr std::chrono::milliseconds s1(3);
115 constexpr std::chrono::microseconds s2(3000);
116 static_assert(!(s1 < s2), "");
117 static_assert(!(s1 > s2), "");
118 static_assert( (s1 <= s2), "");
119 static_assert( (s1 >= s2), "");
120 }
121 {
122 constexpr std::chrono::milliseconds s1(3);
123 constexpr std::chrono::microseconds s2(4000);
124 static_assert( (s1 < s2), "");
125 static_assert(!(s1 > s2), "");
126 static_assert( (s1 <= s2), "");
127 static_assert(!(s1 >= s2), "");
128 }
129 {
130 constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(9);
131 constexpr std::chrono::duration<int, std::ratio<3, 5> > s2(10);
132 static_assert(!(s1 < s2), "");
133 static_assert(!(s1 > s2), "");
134 static_assert( (s1 <= s2), "");
135 static_assert( (s1 >= s2), "");
136 }
137 {
138 constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(10);
139 constexpr std::chrono::duration<int, std::ratio<3, 5> > s2(9);
140 static_assert(!(s1 < s2), "");
141 static_assert( (s1 > s2), "");
142 static_assert(!(s1 <= s2), "");
143 static_assert( (s1 >= s2), "");
144 }
145 {
146 constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(9);
147 constexpr std::chrono::duration<double, std::ratio<3, 5> > s2(10);
148 static_assert(!(s1 < s2), "");
149 static_assert(!(s1 > s2), "");
150 static_assert( (s1 <= s2), "");
151 static_assert( (s1 >= s2), "");
152 }
153 #endif
154
155 return 0;
156 }
157