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 // duration
13 
14 // template <class Rep1, class Period1, class Rep2, class Period2>
15 //   constexpr
16 //   bool
17 //   operator==(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
18 
19 // template <class Rep1, class Period1, class Rep2, class Period2>
20 //   constexpr
21 //   bool
22 //   operator!=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
23 
24 #include <chrono>
25 #include <cassert>
26 
main()27 int main()
28 {
29     {
30     std::chrono::seconds s1(3);
31     std::chrono::seconds s2(3);
32     assert(s1 == s2);
33     assert(!(s1 != s2));
34     }
35     {
36     std::chrono::seconds s1(3);
37     std::chrono::seconds s2(4);
38     assert(!(s1 == s2));
39     assert(s1 != s2);
40     }
41     {
42     std::chrono::milliseconds s1(3);
43     std::chrono::microseconds s2(3000);
44     assert(s1 == s2);
45     assert(!(s1 != s2));
46     }
47     {
48     std::chrono::milliseconds s1(3);
49     std::chrono::microseconds s2(4000);
50     assert(!(s1 == s2));
51     assert(s1 != s2);
52     }
53     {
54     std::chrono::duration<int, std::ratio<2, 3> > s1(9);
55     std::chrono::duration<int, std::ratio<3, 5> > s2(10);
56     assert(s1 == s2);
57     assert(!(s1 != s2));
58     }
59     {
60     std::chrono::duration<int, std::ratio<2, 3> > s1(10);
61     std::chrono::duration<int, std::ratio<3, 5> > s2(9);
62     assert(!(s1 == s2));
63     assert(s1 != s2);
64     }
65     {
66     std::chrono::duration<int, std::ratio<2, 3> > s1(9);
67     std::chrono::duration<double, std::ratio<3, 5> > s2(10);
68     assert(s1 == s2);
69     assert(!(s1 != s2));
70     }
71 #ifndef _LIBCPP_HAS_NO_CONSTEXPR
72     {
73     constexpr std::chrono::seconds s1(3);
74     constexpr std::chrono::seconds s2(3);
75     static_assert(s1 == s2, "");
76     static_assert(!(s1 != s2), "");
77     }
78     {
79     constexpr std::chrono::seconds s1(3);
80     constexpr std::chrono::seconds s2(4);
81     static_assert(!(s1 == s2), "");
82     static_assert(s1 != s2, "");
83     }
84     {
85     constexpr std::chrono::milliseconds s1(3);
86     constexpr std::chrono::microseconds s2(3000);
87     static_assert(s1 == s2, "");
88     static_assert(!(s1 != s2), "");
89     }
90     {
91     constexpr std::chrono::milliseconds s1(3);
92     constexpr std::chrono::microseconds s2(4000);
93     static_assert(!(s1 == s2), "");
94     static_assert(s1 != s2, "");
95     }
96     {
97     constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(9);
98     constexpr std::chrono::duration<int, std::ratio<3, 5> > s2(10);
99     static_assert(s1 == s2, "");
100     static_assert(!(s1 != s2), "");
101     }
102     {
103     constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(10);
104     constexpr std::chrono::duration<int, std::ratio<3, 5> > s2(9);
105     static_assert(!(s1 == s2), "");
106     static_assert(s1 != s2, "");
107     }
108     {
109     constexpr std::chrono::duration<int, std::ratio<2, 3> > s1(9);
110     constexpr std::chrono::duration<double, std::ratio<3, 5> > s2(10);
111     static_assert(s1 == s2, "");
112     static_assert(!(s1 != s2), "");
113     }
114 #endif
115 }
116