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