diff options
Diffstat (limited to 'libcxx/test/std/containers/sequences/array/compare.pass.cpp')
-rw-r--r-- | libcxx/test/std/containers/sequences/array/compare.pass.cpp | 103 |
1 files changed, 56 insertions, 47 deletions
diff --git a/libcxx/test/std/containers/sequences/array/compare.pass.cpp b/libcxx/test/std/containers/sequences/array/compare.pass.cpp index 972600992980..f79a638c5688 100644 --- a/libcxx/test/std/containers/sequences/array/compare.pass.cpp +++ b/libcxx/test/std/containers/sequences/array/compare.pass.cpp @@ -8,13 +8,18 @@ // <array> -// bool operator==(array<T, N> const&, array<T, N> const&); // constexpr in C++20 -// bool operator!=(array<T, N> const&, array<T, N> const&); // constexpr in C++20 -// bool operator<(array<T, N> const&, array<T, N> const&); // constexpr in C++20 -// bool operator<=(array<T, N> const&, array<T, N> const&); // constexpr in C++20 -// bool operator>(array<T, N> const&, array<T, N> const&); // constexpr in C++20 -// bool operator>=(array<T, N> const&, array<T, N> const&); // constexpr in C++20 - +// template <class T, size_t N> +// bool operator==(const array<T,N>& x, const array<T,N>& y); // constexpr in C++20 +// template <class T, size_t N> +// bool operator!=(const array<T,N>& x, const array<T,N>& y); // removed in C++20 +// template <class T, size_t N> +// bool operator<(const array<T,N>& x, const array<T,N>& y); // removed in C++20 +// template <class T, size_t N> +// bool operator>(const array<T,N>& x, const array<T,N>& y); // removed in C++20 +// template <class T, size_t N> +// bool operator<=(const array<T,N>& x, const array<T,N>& y); // removed in C++20 +// template <class T, size_t N> +// bool operator>=(const array<T,N>& x, const array<T,N>& y); // removed in C++20 #include <array> #include <cassert> @@ -22,49 +27,53 @@ #include "test_macros.h" #include "test_comparisons.h" -TEST_CONSTEXPR_CXX20 bool tests() -{ - { - typedef std::array<int, 3> C; - const C c1 = {1, 2, 3}; - const C c2 = {1, 2, 3}; - const C c3 = {3, 2, 1}; - const C c4 = {1, 2, 1}; - assert(testComparisons(c1, c2, true, false)); - assert(testComparisons(c1, c3, false, true)); - assert(testComparisons(c1, c4, false, false)); - } - { - typedef std::array<int, 0> C; - const C c1 = {}; - const C c2 = {}; - assert(testComparisons(c1, c2, true, false)); - } - { - typedef std::array<LessAndEqComp, 3> C; - const C c1 = {LessAndEqComp(1), LessAndEqComp(2), LessAndEqComp(3)}; - const C c2 = {LessAndEqComp(1), LessAndEqComp(2), LessAndEqComp(3)}; - const C c3 = {LessAndEqComp(3), LessAndEqComp(2), LessAndEqComp(1)}; - const C c4 = {LessAndEqComp(1), LessAndEqComp(2), LessAndEqComp(1)}; - assert(testComparisons(c1, c2, true, false)); - assert(testComparisons(c1, c3, false, true)); - assert(testComparisons(c1, c4, false, false)); - } - { - typedef std::array<LessAndEqComp, 0> C; - const C c1 = {}; - const C c2 = {}; - assert(testComparisons(c1, c2, true, false)); - } +TEST_CONSTEXPR_CXX20 bool tests() { + // Arrays where the elements support all comparison operators + AssertComparisonsReturnBool<std::array<int, 3> >(); + { + typedef std::array<int, 3> C; + const C c1 = {1, 2, 3}; + const C c2 = {1, 2, 3}; + const C c3 = {3, 2, 1}; + const C c4 = {1, 2, 1}; + assert(testComparisons(c1, c2, true, false)); + assert(testComparisons(c1, c3, false, true)); + assert(testComparisons(c1, c4, false, false)); + } + // Empty array + { + typedef std::array<int, 0> C; + const C c1 = {}; + const C c2 = {}; + assert(testComparisons(c1, c2, true, false)); + } + // Arrays where the elements support only less and equality comparisons + AssertComparisonsReturnBool<std::array<LessAndEqComp, 3> >(); + { + typedef std::array<LessAndEqComp, 3> C; + const C c1 = {LessAndEqComp(1), LessAndEqComp(2), LessAndEqComp(3)}; + const C c2 = {LessAndEqComp(1), LessAndEqComp(2), LessAndEqComp(3)}; + const C c3 = {LessAndEqComp(3), LessAndEqComp(2), LessAndEqComp(1)}; + const C c4 = {LessAndEqComp(1), LessAndEqComp(2), LessAndEqComp(1)}; + assert(testComparisons(c1, c2, true, false)); + assert(testComparisons(c1, c3, false, true)); + assert(testComparisons(c1, c4, false, false)); + } + // Empty array where the elements support only less and equality comparisons + { + typedef std::array<LessAndEqComp, 0> C; + const C c1 = {}; + const C c2 = {}; + assert(testComparisons(c1, c2, true, false)); + } - return true; + return true; } -int main(int, char**) -{ - tests(); +int main(int, char**) { + tests(); #if TEST_STD_VER >= 20 - static_assert(tests(), ""); + static_assert(tests()); #endif - return 0; + return 0; } |