Merge branch 'master' into deprecate
This commit is contained in:
commit
1f9c668a04
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -38,3 +38,6 @@ googletest/m4/lt~obsolete.m4
|
||||||
# Ignore generated directories.
|
# Ignore generated directories.
|
||||||
googlemock/fused-src/
|
googlemock/fused-src/
|
||||||
googletest/fused-src/
|
googletest/fused-src/
|
||||||
|
|
||||||
|
# macOS files
|
||||||
|
.DS_Store
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
// ============================================================
|
// ============================================================
|
||||||
//
|
//
|
||||||
// Adds google3 callback support to CallableTraits.
|
// Adds google3 callback support to CallableTraits.
|
||||||
//
|
|
||||||
#ifndef GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_MATCHERS_H_
|
#ifndef GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_MATCHERS_H_
|
||||||
#define GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_MATCHERS_H_
|
#define GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_MATCHERS_H_
|
||||||
#endif // GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_MATCHERS_H_
|
#endif // GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_MATCHERS_H_
|
||||||
|
|
|
@ -88,10 +88,6 @@ using testing::tuple_element;
|
||||||
using testing::SetErrnoAndReturn;
|
using testing::SetErrnoAndReturn;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if GTEST_HAS_PROTOBUF_
|
|
||||||
using testing::internal::TestMessage;
|
|
||||||
#endif // GTEST_HAS_PROTOBUF_
|
|
||||||
|
|
||||||
// Tests that BuiltInDefaultValue<T*>::Get() returns NULL.
|
// Tests that BuiltInDefaultValue<T*>::Get() returns NULL.
|
||||||
TEST(BuiltInDefaultValueTest, IsNullForPointerTypes) {
|
TEST(BuiltInDefaultValueTest, IsNullForPointerTypes) {
|
||||||
EXPECT_TRUE(BuiltInDefaultValue<int*>::Get() == NULL);
|
EXPECT_TRUE(BuiltInDefaultValue<int*>::Get() == NULL);
|
||||||
|
@ -895,105 +891,6 @@ TEST(SetArgPointeeTest, AcceptsWideCharPointer) {
|
||||||
# endif
|
# endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#if GTEST_HAS_PROTOBUF_
|
|
||||||
|
|
||||||
// Tests that SetArgPointee<N>(proto_buffer) sets the v1 protobuf
|
|
||||||
// variable pointed to by the N-th (0-based) argument to proto_buffer.
|
|
||||||
TEST(SetArgPointeeTest, SetsTheNthPointeeOfProtoBufferType) {
|
|
||||||
TestMessage* const msg = new TestMessage;
|
|
||||||
msg->set_member("yes");
|
|
||||||
TestMessage orig_msg;
|
|
||||||
orig_msg.CopyFrom(*msg);
|
|
||||||
|
|
||||||
Action<void(bool, TestMessage*)> a = SetArgPointee<1>(*msg);
|
|
||||||
// SetArgPointee<N>(proto_buffer) makes a copy of proto_buffer
|
|
||||||
// s.t. the action works even when the original proto_buffer has
|
|
||||||
// died. We ensure this behavior by deleting msg before using the
|
|
||||||
// action.
|
|
||||||
delete msg;
|
|
||||||
|
|
||||||
TestMessage dest;
|
|
||||||
EXPECT_FALSE(orig_msg.Equals(dest));
|
|
||||||
a.Perform(make_tuple(true, &dest));
|
|
||||||
EXPECT_TRUE(orig_msg.Equals(dest));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tests that SetArgPointee<N>(proto_buffer) sets the
|
|
||||||
// ::ProtocolMessage variable pointed to by the N-th (0-based)
|
|
||||||
// argument to proto_buffer.
|
|
||||||
TEST(SetArgPointeeTest, SetsTheNthPointeeOfProtoBufferBaseType) {
|
|
||||||
TestMessage* const msg = new TestMessage;
|
|
||||||
msg->set_member("yes");
|
|
||||||
TestMessage orig_msg;
|
|
||||||
orig_msg.CopyFrom(*msg);
|
|
||||||
|
|
||||||
Action<void(bool, ::ProtocolMessage*)> a = SetArgPointee<1>(*msg);
|
|
||||||
// SetArgPointee<N>(proto_buffer) makes a copy of proto_buffer
|
|
||||||
// s.t. the action works even when the original proto_buffer has
|
|
||||||
// died. We ensure this behavior by deleting msg before using the
|
|
||||||
// action.
|
|
||||||
delete msg;
|
|
||||||
|
|
||||||
TestMessage dest;
|
|
||||||
::ProtocolMessage* const dest_base = &dest;
|
|
||||||
EXPECT_FALSE(orig_msg.Equals(dest));
|
|
||||||
a.Perform(make_tuple(true, dest_base));
|
|
||||||
EXPECT_TRUE(orig_msg.Equals(dest));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tests that SetArgPointee<N>(proto2_buffer) sets the v2
|
|
||||||
// protobuf variable pointed to by the N-th (0-based) argument to
|
|
||||||
// proto2_buffer.
|
|
||||||
TEST(SetArgPointeeTest, SetsTheNthPointeeOfProto2BufferType) {
|
|
||||||
using testing::internal::FooMessage;
|
|
||||||
FooMessage* const msg = new FooMessage;
|
|
||||||
msg->set_int_field(2);
|
|
||||||
msg->set_string_field("hi");
|
|
||||||
FooMessage orig_msg;
|
|
||||||
orig_msg.CopyFrom(*msg);
|
|
||||||
|
|
||||||
Action<void(bool, FooMessage*)> a = SetArgPointee<1>(*msg);
|
|
||||||
// SetArgPointee<N>(proto2_buffer) makes a copy of
|
|
||||||
// proto2_buffer s.t. the action works even when the original
|
|
||||||
// proto2_buffer has died. We ensure this behavior by deleting msg
|
|
||||||
// before using the action.
|
|
||||||
delete msg;
|
|
||||||
|
|
||||||
FooMessage dest;
|
|
||||||
dest.set_int_field(0);
|
|
||||||
a.Perform(make_tuple(true, &dest));
|
|
||||||
EXPECT_EQ(2, dest.int_field());
|
|
||||||
EXPECT_EQ("hi", dest.string_field());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tests that SetArgPointee<N>(proto2_buffer) sets the
|
|
||||||
// proto2::Message variable pointed to by the N-th (0-based) argument
|
|
||||||
// to proto2_buffer.
|
|
||||||
TEST(SetArgPointeeTest, SetsTheNthPointeeOfProto2BufferBaseType) {
|
|
||||||
using testing::internal::FooMessage;
|
|
||||||
FooMessage* const msg = new FooMessage;
|
|
||||||
msg->set_int_field(2);
|
|
||||||
msg->set_string_field("hi");
|
|
||||||
FooMessage orig_msg;
|
|
||||||
orig_msg.CopyFrom(*msg);
|
|
||||||
|
|
||||||
Action<void(bool, ::proto2::Message*)> a = SetArgPointee<1>(*msg);
|
|
||||||
// SetArgPointee<N>(proto2_buffer) makes a copy of
|
|
||||||
// proto2_buffer s.t. the action works even when the original
|
|
||||||
// proto2_buffer has died. We ensure this behavior by deleting msg
|
|
||||||
// before using the action.
|
|
||||||
delete msg;
|
|
||||||
|
|
||||||
FooMessage dest;
|
|
||||||
dest.set_int_field(0);
|
|
||||||
::proto2::Message* const dest_base = &dest;
|
|
||||||
a.Perform(make_tuple(true, dest_base));
|
|
||||||
EXPECT_EQ(2, dest.int_field());
|
|
||||||
EXPECT_EQ("hi", dest.string_field());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // GTEST_HAS_PROTOBUF_
|
|
||||||
|
|
||||||
// Tests that SetArgumentPointee<N>(v) sets the variable pointed to by
|
// Tests that SetArgumentPointee<N>(v) sets the variable pointed to by
|
||||||
// the N-th (0-based) argument to v.
|
// the N-th (0-based) argument to v.
|
||||||
TEST(SetArgumentPointeeTest, SetsTheNthPointee) {
|
TEST(SetArgumentPointeeTest, SetsTheNthPointee) {
|
||||||
|
@ -1014,105 +911,6 @@ TEST(SetArgumentPointeeTest, SetsTheNthPointee) {
|
||||||
EXPECT_EQ('a', ch);
|
EXPECT_EQ('a', ch);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if GTEST_HAS_PROTOBUF_
|
|
||||||
|
|
||||||
// Tests that SetArgumentPointee<N>(proto_buffer) sets the v1 protobuf
|
|
||||||
// variable pointed to by the N-th (0-based) argument to proto_buffer.
|
|
||||||
TEST(SetArgumentPointeeTest, SetsTheNthPointeeOfProtoBufferType) {
|
|
||||||
TestMessage* const msg = new TestMessage;
|
|
||||||
msg->set_member("yes");
|
|
||||||
TestMessage orig_msg;
|
|
||||||
orig_msg.CopyFrom(*msg);
|
|
||||||
|
|
||||||
Action<void(bool, TestMessage*)> a = SetArgumentPointee<1>(*msg);
|
|
||||||
// SetArgumentPointee<N>(proto_buffer) makes a copy of proto_buffer
|
|
||||||
// s.t. the action works even when the original proto_buffer has
|
|
||||||
// died. We ensure this behavior by deleting msg before using the
|
|
||||||
// action.
|
|
||||||
delete msg;
|
|
||||||
|
|
||||||
TestMessage dest;
|
|
||||||
EXPECT_FALSE(orig_msg.Equals(dest));
|
|
||||||
a.Perform(make_tuple(true, &dest));
|
|
||||||
EXPECT_TRUE(orig_msg.Equals(dest));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tests that SetArgumentPointee<N>(proto_buffer) sets the
|
|
||||||
// ::ProtocolMessage variable pointed to by the N-th (0-based)
|
|
||||||
// argument to proto_buffer.
|
|
||||||
TEST(SetArgumentPointeeTest, SetsTheNthPointeeOfProtoBufferBaseType) {
|
|
||||||
TestMessage* const msg = new TestMessage;
|
|
||||||
msg->set_member("yes");
|
|
||||||
TestMessage orig_msg;
|
|
||||||
orig_msg.CopyFrom(*msg);
|
|
||||||
|
|
||||||
Action<void(bool, ::ProtocolMessage*)> a = SetArgumentPointee<1>(*msg);
|
|
||||||
// SetArgumentPointee<N>(proto_buffer) makes a copy of proto_buffer
|
|
||||||
// s.t. the action works even when the original proto_buffer has
|
|
||||||
// died. We ensure this behavior by deleting msg before using the
|
|
||||||
// action.
|
|
||||||
delete msg;
|
|
||||||
|
|
||||||
TestMessage dest;
|
|
||||||
::ProtocolMessage* const dest_base = &dest;
|
|
||||||
EXPECT_FALSE(orig_msg.Equals(dest));
|
|
||||||
a.Perform(make_tuple(true, dest_base));
|
|
||||||
EXPECT_TRUE(orig_msg.Equals(dest));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tests that SetArgumentPointee<N>(proto2_buffer) sets the v2
|
|
||||||
// protobuf variable pointed to by the N-th (0-based) argument to
|
|
||||||
// proto2_buffer.
|
|
||||||
TEST(SetArgumentPointeeTest, SetsTheNthPointeeOfProto2BufferType) {
|
|
||||||
using testing::internal::FooMessage;
|
|
||||||
FooMessage* const msg = new FooMessage;
|
|
||||||
msg->set_int_field(2);
|
|
||||||
msg->set_string_field("hi");
|
|
||||||
FooMessage orig_msg;
|
|
||||||
orig_msg.CopyFrom(*msg);
|
|
||||||
|
|
||||||
Action<void(bool, FooMessage*)> a = SetArgumentPointee<1>(*msg);
|
|
||||||
// SetArgumentPointee<N>(proto2_buffer) makes a copy of
|
|
||||||
// proto2_buffer s.t. the action works even when the original
|
|
||||||
// proto2_buffer has died. We ensure this behavior by deleting msg
|
|
||||||
// before using the action.
|
|
||||||
delete msg;
|
|
||||||
|
|
||||||
FooMessage dest;
|
|
||||||
dest.set_int_field(0);
|
|
||||||
a.Perform(make_tuple(true, &dest));
|
|
||||||
EXPECT_EQ(2, dest.int_field());
|
|
||||||
EXPECT_EQ("hi", dest.string_field());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tests that SetArgumentPointee<N>(proto2_buffer) sets the
|
|
||||||
// proto2::Message variable pointed to by the N-th (0-based) argument
|
|
||||||
// to proto2_buffer.
|
|
||||||
TEST(SetArgumentPointeeTest, SetsTheNthPointeeOfProto2BufferBaseType) {
|
|
||||||
using testing::internal::FooMessage;
|
|
||||||
FooMessage* const msg = new FooMessage;
|
|
||||||
msg->set_int_field(2);
|
|
||||||
msg->set_string_field("hi");
|
|
||||||
FooMessage orig_msg;
|
|
||||||
orig_msg.CopyFrom(*msg);
|
|
||||||
|
|
||||||
Action<void(bool, ::proto2::Message*)> a = SetArgumentPointee<1>(*msg);
|
|
||||||
// SetArgumentPointee<N>(proto2_buffer) makes a copy of
|
|
||||||
// proto2_buffer s.t. the action works even when the original
|
|
||||||
// proto2_buffer has died. We ensure this behavior by deleting msg
|
|
||||||
// before using the action.
|
|
||||||
delete msg;
|
|
||||||
|
|
||||||
FooMessage dest;
|
|
||||||
dest.set_int_field(0);
|
|
||||||
::proto2::Message* const dest_base = &dest;
|
|
||||||
a.Perform(make_tuple(true, dest_base));
|
|
||||||
EXPECT_EQ(2, dest.int_field());
|
|
||||||
EXPECT_EQ("hi", dest.string_field());
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // GTEST_HAS_PROTOBUF_
|
|
||||||
|
|
||||||
// Sample functions and functors for testing Invoke() and etc.
|
// Sample functions and functors for testing Invoke() and etc.
|
||||||
int Nullary() { return 1; }
|
int Nullary() { return 1; }
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
using testing::HasSubstr;
|
using testing::HasSubstr;
|
||||||
|
|
||||||
using testing::internal::GoogleTestFailureException;
|
using testing::internal::GoogleTestFailureException;
|
||||||
|
|
||||||
// A type that cannot be default constructed.
|
// A type that cannot be default constructed.
|
||||||
|
@ -53,7 +54,6 @@ class MockFoo {
|
||||||
MOCK_METHOD0(GetNonDefaultConstructible, NonDefaultConstructible());
|
MOCK_METHOD0(GetNonDefaultConstructible, NonDefaultConstructible());
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
TEST(DefaultValueTest, ThrowsRuntimeErrorWhenNoDefaultValue) {
|
TEST(DefaultValueTest, ThrowsRuntimeErrorWhenNoDefaultValue) {
|
||||||
MockFoo mock;
|
MockFoo mock;
|
||||||
try {
|
try {
|
||||||
|
@ -76,5 +76,6 @@ TEST(DefaultValueTest, ThrowsRuntimeErrorWhenNoDefaultValue) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} // unnamed namespace
|
} // unnamed namespace
|
||||||
#endif
|
#endif
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,6 @@
|
||||||
# Googletest Primer
|
# Googletest Primer
|
||||||
|
|
||||||
|
|
||||||
## Introduction: Why googletest?
|
## Introduction: Why googletest?
|
||||||
|
|
||||||
*googletest* helps you write better C++ tests.
|
*googletest* helps you write better C++ tests.
|
||||||
|
@ -197,7 +198,7 @@ objects, you should use `ASSERT_EQ`.
|
||||||
|
|
||||||
When doing pointer comparisons use `*_EQ(ptr, nullptr)` and `*_NE(ptr, nullptr)`
|
When doing pointer comparisons use `*_EQ(ptr, nullptr)` and `*_NE(ptr, nullptr)`
|
||||||
instead of `*_EQ(ptr, NULL)` and `*_NE(ptr, NULL)`. This is because `nullptr` is
|
instead of `*_EQ(ptr, NULL)` and `*_NE(ptr, NULL)`. This is because `nullptr` is
|
||||||
typed while `NULL` is not. See [FAQ](faq#Why_does_googletest_support_EXPECT_EQ)
|
typed while `NULL` is not. See [FAQ](faq.md#why-does-google-test-support-expect_eqnull-ptr-and-assert_eqnull-ptr-but-not-expect_nenull-ptr-and-assert_nenull-ptr)
|
||||||
for more details.
|
for more details.
|
||||||
|
|
||||||
If you're working with floating point numbers, you may want to use the floating
|
If you're working with floating point numbers, you may want to use the floating
|
||||||
|
@ -322,7 +323,7 @@ To create a fixture:
|
||||||
1. If necessary, write a destructor or `TearDown()` function to release any
|
1. If necessary, write a destructor or `TearDown()` function to release any
|
||||||
resources you allocated in `SetUp()` . To learn when you should use the
|
resources you allocated in `SetUp()` . To learn when you should use the
|
||||||
constructor/destructor and when you should use `SetUp()/TearDown()`, read
|
constructor/destructor and when you should use `SetUp()/TearDown()`, read
|
||||||
this [FAQ](faq#CtorVsSetUp) entry.
|
this [FAQ](faq.md#should-i-use-the-constructordestructor-of-the-test-fixture-or-the-set-uptear-down-function) entry.
|
||||||
1. If needed, define subroutines for your tests to share.
|
1. If needed, define subroutines for your tests to share.
|
||||||
|
|
||||||
When using a fixture, use `TEST_F()` instead of `TEST()` as it allows you to
|
When using a fixture, use `TEST_F()` instead of `TEST()` as it allows you to
|
||||||
|
@ -436,6 +437,7 @@ When these tests run, the following happens:
|
||||||
|
|
||||||
**Availability**: Linux, Windows, Mac.
|
**Availability**: Linux, Windows, Mac.
|
||||||
|
|
||||||
|
|
||||||
## Invoking the Tests
|
## Invoking the Tests
|
||||||
|
|
||||||
`TEST()` and `TEST_F()` implicitly register their tests with googletest. So,
|
`TEST()` and `TEST_F()` implicitly register their tests with googletest. So,
|
||||||
|
@ -544,6 +546,7 @@ int main(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
The `::testing::InitGoogleTest()` function parses the command line for
|
The `::testing::InitGoogleTest()` function parses the command line for
|
||||||
googletest flags, and removes all recognized flags. This allows the user to
|
googletest flags, and removes all recognized flags. This allows the user to
|
||||||
control a test program's behavior via various flags, which we'll cover in
|
control a test program's behavior via various flags, which we'll cover in
|
||||||
|
@ -560,6 +563,7 @@ gtest\_main library and you are good to go.
|
||||||
|
|
||||||
NOTE: `ParseGUnitFlags()` is deprecated in favor of `InitGoogleTest()`.
|
NOTE: `ParseGUnitFlags()` is deprecated in favor of `InitGoogleTest()`.
|
||||||
|
|
||||||
|
|
||||||
## Known Limitations
|
## Known Limitations
|
||||||
|
|
||||||
* Google Test is designed to be thread-safe. The implementation is thread-safe
|
* Google Test is designed to be thread-safe. The implementation is thread-safe
|
||||||
|
|
|
@ -1234,7 +1234,7 @@ class scoped_ptr {
|
||||||
// Defines RE.
|
// Defines RE.
|
||||||
|
|
||||||
#if GTEST_USES_PCRE
|
#if GTEST_USES_PCRE
|
||||||
using ::RE;
|
// if used, PCRE is injected by custom/gtest-port.h
|
||||||
#elif GTEST_USES_POSIX_RE || GTEST_USES_SIMPLE_RE
|
#elif GTEST_USES_POSIX_RE || GTEST_USES_SIMPLE_RE
|
||||||
|
|
||||||
// A simple C++ wrapper for <regex.h>. It uses the POSIX Extended
|
// A simple C++ wrapper for <regex.h>. It uses the POSIX Extended
|
||||||
|
|
Loading…
Reference in New Issue
Block a user