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// test ratio_less
11
12#include <ratio>
13
14int main()
15{
16    {
17    typedef std::ratio<1, 1> R1;
18    typedef std::ratio<1, 1> R2;
19    static_assert((!std::ratio_less<R1, R2>::value), "");
20    }
21    {
22    typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R1;
23    typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R2;
24    static_assert((!std::ratio_less<R1, R2>::value), "");
25    }
26    {
27    typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R1;
28    typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R2;
29    static_assert((!std::ratio_less<R1, R2>::value), "");
30    }
31    {
32    typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R1;
33    typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R2;
34    static_assert((!std::ratio_less<R1, R2>::value), "");
35    }
36    {
37    typedef std::ratio<1, 1> R1;
38    typedef std::ratio<1, -1> R2;
39    static_assert((!std::ratio_less<R1, R2>::value), "");
40    }
41    {
42    typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R1;
43    typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R2;
44    static_assert((!std::ratio_less<R1, R2>::value), "");
45    }
46    {
47    typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 1> R1;
48    typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 1> R2;
49    static_assert((std::ratio_less<R1, R2>::value), "");
50    }
51    {
52    typedef std::ratio<1, 0x7FFFFFFFFFFFFFFFLL> R1;
53    typedef std::ratio<1, -0x7FFFFFFFFFFFFFFFLL> R2;
54    static_assert((!std::ratio_less<R1, R2>::value), "");
55    }
56    {
57    typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 0x7FFFFFFFFFFFFFFELL> R1;
58    typedef std::ratio<0x7FFFFFFFFFFFFFFDLL, 0x7FFFFFFFFFFFFFFCLL> R2;
59    static_assert((std::ratio_less<R1, R2>::value), "");
60    }
61    {
62    typedef std::ratio<0x7FFFFFFFFFFFFFFDLL, 0x7FFFFFFFFFFFFFFCLL> R1;
63    typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 0x7FFFFFFFFFFFFFFELL> R2;
64    static_assert((!std::ratio_less<R1, R2>::value), "");
65    }
66    {
67    typedef std::ratio<-0x7FFFFFFFFFFFFFFDLL, 0x7FFFFFFFFFFFFFFCLL> R1;
68    typedef std::ratio<-0x7FFFFFFFFFFFFFFFLL, 0x7FFFFFFFFFFFFFFELL> R2;
69    static_assert((std::ratio_less<R1, R2>::value), "");
70    }
71    {
72    typedef std::ratio<0x7FFFFFFFFFFFFFFFLL, 0x7FFFFFFFFFFFFFFELL> R1;
73    typedef std::ratio<0x7FFFFFFFFFFFFFFELL, 0x7FFFFFFFFFFFFFFDLL> R2;
74    static_assert((std::ratio_less<R1, R2>::value), "");
75    }
76    {
77    typedef std::ratio<641981, 1339063> R1;
78    typedef std::ratio<1291640, 2694141LL> R2;
79    static_assert((!std::ratio_less<R1, R2>::value), "");
80    }
81    {
82    typedef std::ratio<1291640, 2694141LL> R1;
83    typedef std::ratio<641981, 1339063> R2;
84    static_assert((std::ratio_less<R1, R2>::value), "");
85    }
86}
87