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