//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03, c++11, c++14, c++17 // // class vector // template // constexpr synth-three-way-result operator<=>(const vector& x, // const vector& y); #include #include #include "test_comparisons.h" constexpr bool test_sequence_container_spaceship_vectorbool() { // Empty containers { std::vector l1; std::vector l2; assert(testOrder(l1, l2, std::strong_ordering::equivalent)); } // Identical contents { std::vector t1{true, true}; std::vector t2{true, true}; assert(testOrder(t1, t2, std::strong_ordering::equivalent)); std::vector f1{false, false}; std::vector f2{false, false}; assert(testOrder(f1, f2, std::strong_ordering::equivalent)); } // Less, due to contained values { std::vector l1{true, false}; std::vector l2{true, true}; assert(testOrder(l1, l2, std::strong_ordering::less)); } // Greater, due to contained values { std::vector l1{true, true}; std::vector l2{true, false}; assert(testOrder(l1, l2, std::strong_ordering::greater)); } // Shorter list { std::vector l1{true}; std::vector l2{true, false}; assert(testOrder(l1, l2, std::strong_ordering::less)); std::vector t1{true}; std::vector t2{true, true}; assert(testOrder(t1, t2, std::strong_ordering::less)); std::vector f1{false}; std::vector f2{false, false}; assert(testOrder(f1, f2, std::strong_ordering::less)); std::vector e; assert(testOrder(e, t1, std::strong_ordering::less)); assert(testOrder(e, f1, std::strong_ordering::less)); } // Longer list { std::vector l1{true, false}; std::vector l2{true}; assert(testOrder(l1, l2, std::strong_ordering::greater)); std::vector t1{true, true}; std::vector t2{true}; assert(testOrder(t1, t2, std::strong_ordering::greater)); std::vector f1{false, false}; std::vector f2{false}; assert(testOrder(f1, f2, std::strong_ordering::greater)); std::vector e; assert(testOrder(t2, e, std::strong_ordering::greater)); assert(testOrder(f2, e, std::strong_ordering::greater)); } return true; } int main(int, char**) { assert(test_sequence_container_spaceship_vectorbool()); static_assert(test_sequence_container_spaceship_vectorbool()); return 0; }