summaryrefslogtreecommitdiffstats
path: root/googletest/test
diff options
context:
space:
mode:
authorAbseil Team <absl-team@google.com>2024-12-10 19:22:24 (GMT)
committerCopybara-Service <copybara-worker@google.com>2024-12-10 19:23:04 (GMT)
commitd122c0d435a6d305cdd50526127c84a98b77d87b (patch)
treeb31546480ac7fd0779533dccf0cd8d8aeedfdf16 /googletest/test
parent35d0c365609296fa4730d62057c487e3cfa030ff (diff)
downloadgoogletest-d122c0d435a6d305cdd50526127c84a98b77d87b.zip
googletest-d122c0d435a6d305cdd50526127c84a98b77d87b.tar.gz
googletest-d122c0d435a6d305cdd50526127c84a98b77d87b.tar.bz2
Add support for printing C++20 std::*_ordering types to gtest.
Adds feature test macro for C++20 <compare> header, a pretty-printer, and tests. Inexplicably, these types aren't enums, so can't be handled with a switch. PiperOrigin-RevId: 704783038 Change-Id: I29688989d18f43520fe610c12a447a20d2f98c95
Diffstat (limited to 'googletest/test')
-rw-r--r--googletest/test/googletest-printers-test.cc24
1 files changed, 24 insertions, 0 deletions
diff --git a/googletest/test/googletest-printers-test.cc b/googletest/test/googletest-printers-test.cc
index d5061be..cf49af0 100644
--- a/googletest/test/googletest-printers-test.cc
+++ b/googletest/test/googletest-printers-test.cc
@@ -64,6 +64,10 @@
#include <span> // NOLINT
#endif // GTEST_INTERNAL_HAS_STD_SPAN
+#if GTEST_INTERNAL_HAS_COMPARE_LIB
+#include <compare> // NOLINT
+#endif // GTEST_INTERNAL_HAS_COMPARE_LIB
+
// Some user-defined types for testing the universal value printer.
// An anonymous enum type.
@@ -1970,6 +1974,26 @@ TEST(PrintOneofTest, Basic) {
PrintToString(Type(NonPrintable{})));
}
#endif // GTEST_INTERNAL_HAS_VARIANT
+
+#if GTEST_INTERNAL_HAS_COMPARE_LIB
+TEST(PrintOrderingTest, Basic) {
+ EXPECT_EQ("(less)", PrintToString(std::strong_ordering::less));
+ EXPECT_EQ("(greater)", PrintToString(std::strong_ordering::greater));
+ // equal == equivalent for strong_ordering.
+ EXPECT_EQ("(equal)", PrintToString(std::strong_ordering::equivalent));
+ EXPECT_EQ("(equal)", PrintToString(std::strong_ordering::equal));
+
+ EXPECT_EQ("(less)", PrintToString(std::weak_ordering::less));
+ EXPECT_EQ("(greater)", PrintToString(std::weak_ordering::greater));
+ EXPECT_EQ("(equivalent)", PrintToString(std::weak_ordering::equivalent));
+
+ EXPECT_EQ("(less)", PrintToString(std::partial_ordering::less));
+ EXPECT_EQ("(greater)", PrintToString(std::partial_ordering::greater));
+ EXPECT_EQ("(equivalent)", PrintToString(std::partial_ordering::equivalent));
+ EXPECT_EQ("(unordered)", PrintToString(std::partial_ordering::unordered));
+}
+#endif
+
namespace {
class string_ref;