Add support for gtest custom printers.
This commit is contained in:
parent
1cc9514de5
commit
f025eba07b
@ -888,4 +888,9 @@ template <typename T>
|
||||
|
||||
} // 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_
|
||||
|
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
|
||||
#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) {
|
||||
|
Loading…
Reference in New Issue
Block a user