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 | #include <ratio> |
36 | |
37 | #include "test_macros.h" |
38 | |
39 | int main(int, char**) |
40 | { |
41 | { |
42 | std::chrono::seconds s1(3); |
43 | std::chrono::seconds s2(3); |
44 | assert(!(s1 < s2)); |
45 | assert(!(s1 > s2)); |
46 | assert( (s1 <= s2)); |
47 | assert( (s1 >= s2)); |
48 | } |
49 | { |
50 | std::chrono::seconds s1(3); |
51 | std::chrono::seconds s2(4); |
52 | assert( (s1 < s2)); |
53 | assert(!(s1 > s2)); |
54 | assert( (s1 <= s2)); |
55 | assert(!(s1 >= s2)); |
56 | } |
57 | { |
58 | std::chrono::milliseconds s1(3); |
59 | std::chrono::microseconds s2(3000); |
60 | assert(!(s1 < s2)); |
61 | assert(!(s1 > s2)); |
62 | assert( (s1 <= s2)); |
63 | assert( (s1 >= s2)); |
64 | } |
65 | { |
66 | std::chrono::milliseconds s1(3); |
67 | std::chrono::microseconds s2(4000); |
68 | assert( (s1 < s2)); |
69 | assert(!(s1 > s2)); |
70 | assert( (s1 <= s2)); |
71 | assert(!(s1 >= s2)); |
72 | } |
73 | { |
74 | std::chrono::duration<int, std::ratio<2, 3> > s1(9); |
75 | std::chrono::duration<int, std::ratio<3, 5> > s2(10); |
76 | assert(!(s1 < s2)); |
77 | assert(!(s1 > s2)); |
78 | assert( (s1 <= s2)); |
79 | assert( (s1 >= s2)); |
80 | } |
81 | { |
82 | std::chrono::duration<int, std::ratio<2, 3> > s1(10); |
83 | std::chrono::duration<int, std::ratio<3, 5> > s2(9); |
84 | assert(!(s1 < s2)); |
85 | assert( (s1 > s2)); |
86 | assert(!(s1 <= s2)); |
87 | assert( (s1 >= s2)); |
88 | } |
89 | { |
90 | std::chrono::duration<int, std::ratio<2, 3> > s1(9); |
91 | std::chrono::duration<double, std::ratio<3, 5> > s2(10); |
92 | assert(!(s1 < s2)); |
93 | assert(!(s1 > s2)); |
94 | assert( (s1 <= s2)); |
95 | assert( (s1 >= s2)); |
96 | } |
97 | #if TEST_STD_VER >= 11 |
98 | { |
99 | constexpr std::chrono::seconds s1(3); |
100 | constexpr std::chrono::seconds s2(3); |
101 | static_assert(!(s1 < s2), "" ); |
102 | static_assert(!(s1 > s2), "" ); |
103 | static_assert( (s1 <= s2), "" ); |
104 | static_assert( (s1 >= s2), "" ); |
105 | } |
106 | { |
107 | constexpr std::chrono::seconds s1(3); |
108 | constexpr std::chrono::seconds s2(4); |
109 | static_assert( (s1 < s2), "" ); |
110 | static_assert(!(s1 > s2), "" ); |
111 | static_assert( (s1 <= s2), "" ); |
112 | static_assert(!(s1 >= s2), "" ); |
113 | } |
114 | { |
115 | constexpr std::chrono::milliseconds s1(3); |
116 | constexpr std::chrono::microseconds s2(3000); |
117 | static_assert(!(s1 < s2), "" ); |
118 | static_assert(!(s1 > s2), "" ); |
119 | static_assert( (s1 <= s2), "" ); |
120 | static_assert( (s1 >= s2), "" ); |
121 | } |
122 | { |
123 | constexpr std::chrono::milliseconds s1(3); |
124 | constexpr std::chrono::microseconds s2(4000); |
125 | static_assert( (s1 < s2), "" ); |
126 | static_assert(!(s1 > s2), "" ); |
127 | static_assert( (s1 <= s2), "" ); |
128 | static_assert(!(s1 >= s2), "" ); |
129 | } |
130 | { |
131 | constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(9); |
132 | constexpr std::chrono::duration<int, std::ratio<3, 5> > s2(10); |
133 | static_assert(!(s1 < s2), "" ); |
134 | static_assert(!(s1 > s2), "" ); |
135 | static_assert( (s1 <= s2), "" ); |
136 | static_assert( (s1 >= s2), "" ); |
137 | } |
138 | { |
139 | constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(10); |
140 | constexpr std::chrono::duration<int, std::ratio<3, 5> > s2(9); |
141 | static_assert(!(s1 < s2), "" ); |
142 | static_assert( (s1 > s2), "" ); |
143 | static_assert(!(s1 <= s2), "" ); |
144 | static_assert( (s1 >= s2), "" ); |
145 | } |
146 | { |
147 | constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(9); |
148 | constexpr std::chrono::duration<double, std::ratio<3, 5> > s2(10); |
149 | static_assert(!(s1 < s2), "" ); |
150 | static_assert(!(s1 > s2), "" ); |
151 | static_assert( (s1 <= s2), "" ); |
152 | static_assert( (s1 >= s2), "" ); |
153 | } |
154 | #endif |
155 | |
156 | return 0; |
157 | } |
158 | |