diff options
Diffstat (limited to 'googletest/test/googletest-printers-test.cc')
-rw-r--r-- | googletest/test/googletest-printers-test.cc | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/googletest/test/googletest-printers-test.cc b/googletest/test/googletest-printers-test.cc index f44f29a..bee0ca4 100644 --- a/googletest/test/googletest-printers-test.cc +++ b/googletest/test/googletest-printers-test.cc @@ -55,6 +55,10 @@ #include "gtest/gtest-printers.h" #include "gtest/gtest.h" +#ifdef GTEST_HAS_ABSL +#include "absl/strings/str_format.h" +#endif + // Some user-defined types for testing the universal value printer. // An anonymous enum type. @@ -119,6 +123,19 @@ void operator<<(::std::ostream& os, const StreamableInGlobal* /* x */) { os << "StreamableInGlobal*"; } +#ifdef GTEST_HAS_ABSL +// A user-defined type with AbslStringify +struct Point { + template <typename Sink> + friend void AbslStringify(Sink& sink, const Point& p) { + absl::Format(&sink, "(%d, %d)", p.x, p.y); + } + + int x = 10; + int y = 20; +}; +#endif + namespace foo { // A user-defined unprintable type in a user namespace. @@ -317,6 +334,11 @@ TEST(PrintEnumTest, EnumWithPrintTo) { EXPECT_EQ("invalid", Print(static_cast<EnumWithPrintTo>(0))); } +#ifdef GTEST_HAS_ABSL +// Tests printing a class that defines AbslStringify +TEST(PrintClassTest, AbslStringify) { EXPECT_EQ("(10, 20)", Print(Point())); } +#endif + // Tests printing a class implicitly convertible to BiggestInt. TEST(PrintClassTest, BiggestIntConvertible) { @@ -1636,6 +1658,12 @@ TEST(PrintToStringTest, PrintReferenceToStreamableInGlobal) { EXPECT_STREQ("StreamableInGlobal", PrintToString(r).c_str()); } +#ifdef GTEST_HAS_ABSL +TEST(PrintToStringTest, AbslStringify) { + EXPECT_PRINT_TO_STRING_(Point(), "(10, 20)"); +} +#endif + TEST(IsValidUTF8Test, IllFormedUTF8) { // The following test strings are ill-formed UTF-8 and are printed // as hex only (or ASCII, in case of ASCII bytes) because IsValidUTF8() is |