Add support for gtest custom printers.
This commit is contained in:
parent
1cc9514de5
commit
f025eba07b
|
@ -888,4 +888,9 @@ template <typename T>
|
||||||
|
|
||||||
} // namespace testing
|
} // namespace testing
|
||||||
|
|
||||||
|
// Include any custom printer added by the local installation.
|
||||||
|
// We must include this header at the end to make sure it can use the
|
||||||
|
// declarations from this file.
|
||||||
|
#include "gtest/internal/custom/gtest-printers.h"
|
||||||
|
|
||||||
#endif // GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
|
#endif // GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
|
||||||
|
|
42
include/gtest/internal/custom/gtest-printers.h
Normal file
42
include/gtest/internal/custom/gtest-printers.h
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
// Copyright 2015, Google Inc.
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without
|
||||||
|
// modification, are permitted provided that the following conditions are
|
||||||
|
// met:
|
||||||
|
//
|
||||||
|
// * Redistributions of source code must retain the above copyright
|
||||||
|
// notice, this list of conditions and the following disclaimer.
|
||||||
|
// * Redistributions in binary form must reproduce the above
|
||||||
|
// copyright notice, this list of conditions and the following disclaimer
|
||||||
|
// in the documentation and/or other materials provided with the
|
||||||
|
// distribution.
|
||||||
|
// * Neither the name of Google Inc. nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from
|
||||||
|
// this software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
//
|
||||||
|
// This file provides an injection point for custom printers in a local
|
||||||
|
// installation of gTest.
|
||||||
|
// It will be included from gtest-printers.h and the overrides in this file
|
||||||
|
// will be visible to everyone.
|
||||||
|
// See documentation at gtest/gtest-printers.h for details on how to define a
|
||||||
|
// custom printer.
|
||||||
|
//
|
||||||
|
// ** Custom implementation starts here **
|
||||||
|
|
||||||
|
#ifndef GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_
|
||||||
|
#define GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_
|
||||||
|
|
||||||
|
#endif // GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_
|
|
@ -58,6 +58,10 @@
|
||||||
# include <hash_set> // NOLINT
|
# include <hash_set> // NOLINT
|
||||||
#endif // GTEST_OS_WINDOWS
|
#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.
|
// Some user-defined types for testing the universal value printer.
|
||||||
|
|
||||||
// An anonymous enum type.
|
// An anonymous enum type.
|
||||||
|
@ -913,6 +917,17 @@ TEST(PrintStlContainerTest, MultiSet) {
|
||||||
EXPECT_EQ("{ 1, 1, 1, 2, 5 }", Print(set1));
|
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) {
|
TEST(PrintStlContainerTest, Pair) {
|
||||||
pair<const bool, int> p(true, 5);
|
pair<const bool, int> p(true, 5);
|
||||||
EXPECT_EQ("(true, 5)", Print(p));
|
EXPECT_EQ("(true, 5)", Print(p));
|
||||||
|
@ -1162,37 +1177,6 @@ TEST(PrintPrintableTypeTest, TemplateInUserNamespace) {
|
||||||
Print(::foo::PrintableViaPrintToTemplate<int>(5)));
|
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
|
// Tests that the universal printer prints both the address and the
|
||||||
// value of a reference.
|
// value of a reference.
|
||||||
TEST(PrintReferenceTest, PrintsAddressAndValue) {
|
TEST(PrintReferenceTest, PrintsAddressAndValue) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user