xref: /llvm-project/libcxx/test/std/containers/sequences/list/compare.pass.cpp (revision 984f5f3f6249ffac6a238da2d23ae20a433a0e99)
1 //===----------------------------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 // <list>
10 
11 // template< class T, class Alloc >
12 // bool operator==( const std::list<T,Alloc>& lhs,
13 //                  const std::list<T,Alloc>& rhs );
14 
15 // template< class T, class Alloc >
16 // bool operator!=( const std::list<T,Alloc>& lhs,
17 //                  const std::list<T,Alloc>& rhs );
18 
19 // template< class T, class Alloc >
20 // bool operator<( const std::list<T,Alloc>& lhs,
21 //                 const std::list<T,Alloc>& rhs );
22 
23 // template< class T, class Alloc >
24 // bool operator<=( const std::list<T,Alloc>& lhs,
25 //                  const std::list<T,Alloc>& rhs );
26 
27 // template< class T, class Alloc >
28 // bool operator>( const std::list<T,Alloc>& lhs,
29 //                 const std::list<T,Alloc>& rhs );
30 
31 // template< class T, class Alloc >
32 // bool operator>=( const std::list<T,Alloc>& lhs,
33 //                  const std::list<T,Alloc>& rhs );
34 
35 #include <list>
36 #include <cassert>
37 
38 #include "test_comparisons.h"
39 
main(int,char **)40 int main(int, char**) {
41     {
42         const std::list<int> l1, l2;
43         assert(testComparisons(l1, l2, true, false));
44     }
45     {
46         const std::list<int> l1(1, 1), l2(1, 1);
47         assert(testComparisons(l1, l2, true, false));
48     }
49     {
50         int items[3] = {1, 2, 3};
51         const std::list<int> l1(items, items + 3);
52         const std::list<int> l2(items, items + 3);
53         assert(testComparisons(l1, l2, true, false));
54     }
55     {
56         const std::list<int> l1(1, 1), l2;
57         assert(testComparisons(l1, l2, false, false));
58     }
59     {
60         const std::list<int> l1(1, 1), l2(1, 2);
61         assert(testComparisons(l1, l2, false, true));
62     }
63     {
64         int items1[2] = {1, 2};
65         int items2[2] = {1, 3};
66         const std::list<int> l1(items1, items1 + 2);
67         const std::list<int> l2(items2, items2 + 2);
68         assert(testComparisons(l1, l2, false, true));
69     }
70     {
71         int items1[2] = {2, 2};
72         int items2[2] = {1, 3};
73         const std::list<int> l1(items1, items1 + 2);
74         const std::list<int> l2(items2, items2 + 2);
75         assert(testComparisons(l1, l2, false, false));
76     }
77     {
78         const std::list<LessAndEqComp> l1, l2;
79         assert(testComparisons(l1, l2, true, false));
80     }
81     {
82         const std::list<LessAndEqComp> l1(1, LessAndEqComp(1));
83         const std::list<LessAndEqComp> l2(1, LessAndEqComp(1));
84         assert(testComparisons(l1, l2, true, false));
85     }
86     {
87         LessAndEqComp items[3] = {LessAndEqComp(1), LessAndEqComp(2), LessAndEqComp(3)};
88         const std::list<LessAndEqComp> l1(items, items + 3);
89         const std::list<LessAndEqComp> l2(items, items + 3);
90         assert(testComparisons(l1, l2, true, false));
91     }
92     {
93         const std::list<LessAndEqComp> l1(1, LessAndEqComp(1));
94         const std::list<LessAndEqComp> l2;
95         assert(testComparisons(l1, l2, false, false));
96     }
97     {
98         const std::list<LessAndEqComp> l1(1, LessAndEqComp(1));
99         const std::list<LessAndEqComp> l2(1, LessAndEqComp(2));
100         assert(testComparisons(l1, l2, false, true));
101     }
102     {
103         LessAndEqComp items1[2] = {LessAndEqComp(1), LessAndEqComp(2)};
104         LessAndEqComp items2[2] = {LessAndEqComp(1), LessAndEqComp(3)};
105         const std::list<LessAndEqComp> l1(items1, items1 + 2);
106         const std::list<LessAndEqComp> l2(items2, items2 + 2);
107         assert(testComparisons(l1, l2, false, true));
108     }
109     {
110         LessAndEqComp items1[2] = {LessAndEqComp(2), LessAndEqComp(2)};
111         LessAndEqComp items2[2] = {LessAndEqComp(1), LessAndEqComp(3)};
112         const std::list<LessAndEqComp> l1(items1, items1 + 2);
113         const std::list<LessAndEqComp> l2(items2, items2 + 2);
114         assert(testComparisons(l1, l2, false, false));
115     }
116     return 0;
117 }
118