op_less.pass.cpp revision f5256e16dfc425c1d466f6308d4026d529ce9e0b
1//===----------------------------------------------------------------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. 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//   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//   bool
20//   operator> (const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
21
22// template <class Rep1, class Period1, class Rep2, class Period2>
23//   bool
24//   operator<=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
25
26// template <class Rep1, class Period1, class Rep2, class Period2>
27//   bool
28//   operator>=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
29
30#include <chrono>
31#include <cassert>
32
33int main()
34{
35    {
36    std::chrono::seconds s1(3);
37    std::chrono::seconds s2(3);
38    assert(!(s1 < s2));
39    assert(!(s1 > s2));
40    assert( (s1 <= s2));
41    assert( (s1 >= s2));
42    }
43    {
44    std::chrono::seconds s1(3);
45    std::chrono::seconds s2(4);
46    assert( (s1 < s2));
47    assert(!(s1 > s2));
48    assert( (s1 <= s2));
49    assert(!(s1 >= s2));
50    }
51    {
52    std::chrono::milliseconds s1(3);
53    std::chrono::microseconds s2(3000);
54    assert(!(s1 < s2));
55    assert(!(s1 > s2));
56    assert( (s1 <= s2));
57    assert( (s1 >= s2));
58    }
59    {
60    std::chrono::milliseconds s1(3);
61    std::chrono::microseconds s2(4000);
62    assert( (s1 < s2));
63    assert(!(s1 > s2));
64    assert( (s1 <= s2));
65    assert(!(s1 >= s2));
66    }
67    {
68    std::chrono::duration<int, std::ratio<2, 3> > s1(9);
69    std::chrono::duration<int, std::ratio<3, 5> > s2(10);
70    assert(!(s1 < s2));
71    assert(!(s1 > s2));
72    assert( (s1 <= s2));
73    assert( (s1 >= s2));
74    }
75    {
76    std::chrono::duration<int, std::ratio<2, 3> > s1(10);
77    std::chrono::duration<int, std::ratio<3, 5> > s2(9);
78    assert(!(s1 < s2));
79    assert( (s1 > s2));
80    assert(!(s1 <= s2));
81    assert( (s1 >= s2));
82    }
83    {
84    std::chrono::duration<int, std::ratio<2, 3> > s1(9);
85    std::chrono::duration<double, std::ratio<3, 5> > s2(10);
86    assert(!(s1 < s2));
87    assert(!(s1 > s2));
88    assert( (s1 <= s2));
89    assert( (s1 >= s2));
90    }
91}
92