Add support for gtest custom printers.

This commit is contained in:
kosak
2015-07-14 21:26:09 +00:00
parent 1cc9514de5
commit f025eba07b
3 changed files with 62 additions and 31 deletions

View File

@@ -58,6 +58,10 @@
# include <hash_set> // NOLINT
#endif // GTEST_OS_WINDOWS
#if GTEST_HAS_STD_FORWARD_LIST_
# include <forward_list> // NOLINT
#endif // GTEST_HAS_STD_FORWARD_LIST_
// Some user-defined types for testing the universal value printer.
// An anonymous enum type.
@@ -913,6 +917,17 @@ TEST(PrintStlContainerTest, MultiSet) {
EXPECT_EQ("{ 1, 1, 1, 2, 5 }", Print(set1));
}
#if GTEST_HAS_STD_FORWARD_LIST_
// <slist> is available on Linux in the google3 mode, but not on
// Windows or Mac OS X.
TEST(PrintStlContainerTest, SinglyLinkedList) {
int a[] = { 9, 2, 8 };
const std::forward_list<int> ints(a, a + 3);
EXPECT_EQ("{ 9, 2, 8 }", Print(ints));
}
#endif // GTEST_HAS_STD_FORWARD_LIST_
TEST(PrintStlContainerTest, Pair) {
pair<const bool, int> p(true, 5);
EXPECT_EQ("(true, 5)", Print(p));
@@ -1162,37 +1177,6 @@ TEST(PrintPrintableTypeTest, TemplateInUserNamespace) {
Print(::foo::PrintableViaPrintToTemplate<int>(5)));
}
#if GTEST_HAS_PROTOBUF_
// Tests printing a short proto2 message.
TEST(PrintProto2MessageTest, PrintsShortDebugStringWhenItIsShort) {
testing::internal::FooMessage msg;
msg.set_int_field(2);
msg.set_string_field("hello");
EXPECT_PRED2(RE::FullMatch, Print(msg),
"<int_field:\\s*2\\s+string_field:\\s*\"hello\">");
}
// Tests printing a long proto2 message.
TEST(PrintProto2MessageTest, PrintsDebugStringWhenItIsLong) {
testing::internal::FooMessage msg;
msg.set_int_field(2);
msg.set_string_field("hello");
msg.add_names("peter");
msg.add_names("paul");
msg.add_names("mary");
EXPECT_PRED2(RE::FullMatch, Print(msg),
"<\n"
"int_field:\\s*2\n"
"string_field:\\s*\"hello\"\n"
"names:\\s*\"peter\"\n"
"names:\\s*\"paul\"\n"
"names:\\s*\"mary\"\n"
">");
}
#endif // GTEST_HAS_PROTOBUF_
// Tests that the universal printer prints both the address and the
// value of a reference.
TEST(PrintReferenceTest, PrintsAddressAndValue) {