comparison.pass.cpp revision 9c2683d77c84eeec74ec4166ed25bbc2ebb0c3f6
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// <utility>
11
12// template <class T1, class T2> struct pair
13
14// template <class T1, class T2> bool operator==(const pair<T1,T2>&, const pair<T1,T2>&);
15// template <class T1, class T2> bool operator!=(const pair<T1,T2>&, const pair<T1,T2>&);
16// template <class T1, class T2> bool operator< (const pair<T1,T2>&, const pair<T1,T2>&);
17// template <class T1, class T2> bool operator> (const pair<T1,T2>&, const pair<T1,T2>&);
18// template <class T1, class T2> bool operator>=(const pair<T1,T2>&, const pair<T1,T2>&);
19// template <class T1, class T2> bool operator<=(const pair<T1,T2>&, const pair<T1,T2>&);
20
21#include <utility>
22#include <cassert>
23
24int main()
25{
26    {
27        typedef std::pair<int, short> P;
28        P p1(3, 4);
29        P p2(3, 4);
30        assert( (p1 == p2));
31        assert(!(p1 != p2));
32        assert(!(p1 <  p2));
33        assert( (p1 <= p2));
34        assert(!(p1 >  p2));
35        assert( (p1 >= p2));
36    }
37    {
38        typedef std::pair<int, short> P;
39        P p1(2, 4);
40        P p2(3, 4);
41        assert(!(p1 == p2));
42        assert( (p1 != p2));
43        assert( (p1 <  p2));
44        assert( (p1 <= p2));
45        assert(!(p1 >  p2));
46        assert(!(p1 >= p2));
47    }
48    {
49        typedef std::pair<int, short> P;
50        P p1(3, 2);
51        P p2(3, 4);
52        assert(!(p1 == p2));
53        assert( (p1 != p2));
54        assert( (p1 <  p2));
55        assert( (p1 <= p2));
56        assert(!(p1 >  p2));
57        assert(!(p1 >= p2));
58    }
59    {
60        typedef std::pair<int, short> P;
61        P p1(3, 4);
62        P p2(2, 4);
63        assert(!(p1 == p2));
64        assert( (p1 != p2));
65        assert(!(p1 <  p2));
66        assert(!(p1 <= p2));
67        assert( (p1 >  p2));
68        assert( (p1 >= p2));
69    }
70    {
71        typedef std::pair<int, short> P;
72        P p1(3, 4);
73        P p2(3, 2);
74        assert(!(p1 == p2));
75        assert( (p1 != p2));
76        assert(!(p1 <  p2));
77        assert(!(p1 <= p2));
78        assert( (p1 >  p2));
79        assert( (p1 >= p2));
80    }
81}
82