aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/catch2/tests/SelfTest/IntrospectiveTests/Traits.tests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/catch2/tests/SelfTest/IntrospectiveTests/Traits.tests.cpp')
-rw-r--r--contrib/catch2/tests/SelfTest/IntrospectiveTests/Traits.tests.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/contrib/catch2/tests/SelfTest/IntrospectiveTests/Traits.tests.cpp b/contrib/catch2/tests/SelfTest/IntrospectiveTests/Traits.tests.cpp
new file mode 100644
index 0000000..459e0d4
--- /dev/null
+++ b/contrib/catch2/tests/SelfTest/IntrospectiveTests/Traits.tests.cpp
@@ -0,0 +1,45 @@
+
+// Copyright Catch2 Authors
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE.txt or copy at
+// https://www.boost.org/LICENSE_1_0.txt)
+
+// SPDX-License-Identifier: BSL-1.0
+
+#include <catch2/catch_test_macros.hpp>
+#include <catch2/internal/catch_compare_traits.hpp>
+#include <helpers/type_with_lit_0_comparisons.hpp>
+
+
+#define ADD_TRAIT_TEST_CASE( op ) \
+ TEST_CASE( "is_" #op "_comparable", \
+ "[traits][is_comparable][approvals]" ) { \
+ using Catch::Detail::is_##op##_0_comparable; \
+ using Catch::Detail::is_##op##_comparable; \
+ \
+ STATIC_REQUIRE( is_##op##_comparable<int, int>::value ); \
+ STATIC_REQUIRE( \
+ is_##op##_comparable<std::string, std::string>::value ); \
+ STATIC_REQUIRE( !is_##op##_comparable<int, std::string>::value ); \
+ STATIC_REQUIRE( \
+ !is_##op##_comparable<TypeWithLit0Comparisons, int>::value ); \
+ STATIC_REQUIRE( \
+ !is_##op##_comparable<int, TypeWithLit0Comparisons>::value ); \
+ \
+ STATIC_REQUIRE( is_##op##_0_comparable<int>::value ); \
+ STATIC_REQUIRE( \
+ is_##op##_0_comparable<TypeWithLit0Comparisons>::value ); \
+ STATIC_REQUIRE( !is_##op##_0_comparable<std::string>::value ); \
+ \
+ /* This test fails with MSVC in permissive mode, because of course it does */ \
+ /* STATIC_REQUIRE( !is_##op##_0_comparable<int*>::value ); */ \
+}
+
+ADD_TRAIT_TEST_CASE(lt)
+ADD_TRAIT_TEST_CASE(gt)
+ADD_TRAIT_TEST_CASE(le)
+ADD_TRAIT_TEST_CASE(ge)
+ADD_TRAIT_TEST_CASE(eq)
+ADD_TRAIT_TEST_CASE(ne)
+
+#undef ADD_TRAIT_TEST_CASE