1*d7ac595fSKonstantin Boyarinov //===----------------------------------------------------------------------===//
2*d7ac595fSKonstantin Boyarinov //
3*d7ac595fSKonstantin Boyarinov // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*d7ac595fSKonstantin Boyarinov // See https://llvm.org/LICENSE.txt for license information.
5*d7ac595fSKonstantin Boyarinov // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*d7ac595fSKonstantin Boyarinov //
7*d7ac595fSKonstantin Boyarinov //===----------------------------------------------------------------------===//
8*d7ac595fSKonstantin Boyarinov 
9*d7ac595fSKonstantin Boyarinov // <vector>
10*d7ac595fSKonstantin Boyarinov 
11*d7ac595fSKonstantin Boyarinov // bool operator==( const vector& lhs, const vector& rhs );
12*d7ac595fSKonstantin Boyarinov // bool operator!=( const vector& lhs, const vector& rhs );
13*d7ac595fSKonstantin Boyarinov // bool operator< ( const vector& lhs, const vector& rhs );
14*d7ac595fSKonstantin Boyarinov // bool operator<=( const vector& lhs, const vector& rhs );
15*d7ac595fSKonstantin Boyarinov // bool operator> ( const vector& lhs, const vector& rhs );
16*d7ac595fSKonstantin Boyarinov // bool operator>=( const vector& lhs, const vector& rhs );
17*d7ac595fSKonstantin Boyarinov 
18*d7ac595fSKonstantin Boyarinov #include <vector>
19*d7ac595fSKonstantin Boyarinov #include <cassert>
20*d7ac595fSKonstantin Boyarinov 
21*d7ac595fSKonstantin Boyarinov #include "test_comparisons.h"
22*d7ac595fSKonstantin Boyarinov 
23*d7ac595fSKonstantin Boyarinov int main(int, char**) {
24*d7ac595fSKonstantin Boyarinov     typedef std::vector<bool> VB;
25*d7ac595fSKonstantin Boyarinov     {
26*d7ac595fSKonstantin Boyarinov         const VB v1, v2;
27*d7ac595fSKonstantin Boyarinov         assert(testComparisons6(v1, v2, true, false));
28*d7ac595fSKonstantin Boyarinov     }
29*d7ac595fSKonstantin Boyarinov     {
30*d7ac595fSKonstantin Boyarinov         const VB v1(1, true);
31*d7ac595fSKonstantin Boyarinov         const VB v2(1, true);
32*d7ac595fSKonstantin Boyarinov         assert(testComparisons6(v1, v2, true, false));
33*d7ac595fSKonstantin Boyarinov     }
34*d7ac595fSKonstantin Boyarinov     {
35*d7ac595fSKonstantin Boyarinov         const VB v1(1, false);
36*d7ac595fSKonstantin Boyarinov         const VB v2(1, true);
37*d7ac595fSKonstantin Boyarinov         assert(testComparisons6(v1, v2, false, true));
38*d7ac595fSKonstantin Boyarinov     }
39*d7ac595fSKonstantin Boyarinov     {
40*d7ac595fSKonstantin Boyarinov         const VB v1, v2(1, true);
41*d7ac595fSKonstantin Boyarinov         assert(testComparisons6(v1, v2, false, true));
42*d7ac595fSKonstantin Boyarinov     }
43*d7ac595fSKonstantin Boyarinov     {
44*d7ac595fSKonstantin Boyarinov         bool items1[3] = {false, true, false};
45*d7ac595fSKonstantin Boyarinov         bool items2[3] = {false, true, true};
46*d7ac595fSKonstantin Boyarinov         const VB v1(items1, items1 + 3);
47*d7ac595fSKonstantin Boyarinov         const VB v2(items2, items2 + 3);
48*d7ac595fSKonstantin Boyarinov         assert(testComparisons6(v1, v2, false, true));
49*d7ac595fSKonstantin Boyarinov     }
50*d7ac595fSKonstantin Boyarinov     {
51*d7ac595fSKonstantin Boyarinov         bool items1[3] = {false, false, false};
52*d7ac595fSKonstantin Boyarinov         bool items2[3] = {false, true, false};
53*d7ac595fSKonstantin Boyarinov         const VB v1(items1, items1 + 3);
54*d7ac595fSKonstantin Boyarinov         const VB v2(items2, items2 + 3);
55*d7ac595fSKonstantin Boyarinov         assert(testComparisons6(v1, v2, false, true));
56*d7ac595fSKonstantin Boyarinov     }
57*d7ac595fSKonstantin Boyarinov     {
58*d7ac595fSKonstantin Boyarinov         bool items1[2] = {false, true};
59*d7ac595fSKonstantin Boyarinov         bool items2[3] = {false, true, false};
60*d7ac595fSKonstantin Boyarinov         const VB v1(items1, items1 + 2);
61*d7ac595fSKonstantin Boyarinov         const VB v2(items2, items2 + 3);
62*d7ac595fSKonstantin Boyarinov         assert(testComparisons6(v1, v2, false, true));
63*d7ac595fSKonstantin Boyarinov     }
64*d7ac595fSKonstantin Boyarinov     {
65*d7ac595fSKonstantin Boyarinov         bool items[3] = {false, true, false};
66*d7ac595fSKonstantin Boyarinov         const VB v1(items, items + 3);
67*d7ac595fSKonstantin Boyarinov         const VB v2(1, true);
68*d7ac595fSKonstantin Boyarinov         assert(testComparisons6(v1, v2, false, true));
69*d7ac595fSKonstantin Boyarinov     }
70*d7ac595fSKonstantin Boyarinov     {
71*d7ac595fSKonstantin Boyarinov         assert( (std::vector<bool>() == std::vector<bool>()));
72*d7ac595fSKonstantin Boyarinov         assert(!(std::vector<bool>() != std::vector<bool>()));
73*d7ac595fSKonstantin Boyarinov         assert(!(std::vector<bool>() < std::vector<bool>()));
74*d7ac595fSKonstantin Boyarinov         assert( (std::vector<bool>() <= std::vector<bool>()));
75*d7ac595fSKonstantin Boyarinov         assert(!(std::vector<bool>() > std::vector<bool>()));
76*d7ac595fSKonstantin Boyarinov         assert( (std::vector<bool>() >= std::vector<bool>()));
77*d7ac595fSKonstantin Boyarinov     }
78*d7ac595fSKonstantin Boyarinov 
79*d7ac595fSKonstantin Boyarinov     return 0;
80*d7ac595fSKonstantin Boyarinov }
81