"googlemock/vscode:/vscode.git/clone" did not exist on "3e0e32ba300ce8afe695ad3ba7e81b21b7cf237a"
Commit a79851f2 authored by Gennadiy Civil's avatar Gennadiy Civil
Browse files

merging 
parent 3ccd6e38
...@@ -80,6 +80,11 @@ class NiceMock : public MockClass { ...@@ -80,6 +80,11 @@ class NiceMock : public MockClass {
} }
#if GTEST_LANG_CXX11 #if GTEST_LANG_CXX11
// Ideally, we would inherit base class's constructors through a using
// declaration, which would preserve their visibility. However, many existing
// tests rely on the fact that current implementation reexports protected
// constructors as public. These tests would need to be cleaned up first.
// Single argument constructor is special-cased so that it can be // Single argument constructor is special-cased so that it can be
// made explicit. // made explicit.
template <typename A> template <typename A>
...@@ -193,6 +198,11 @@ class NaggyMock : public MockClass { ...@@ -193,6 +198,11 @@ class NaggyMock : public MockClass {
} }
#if GTEST_LANG_CXX11 #if GTEST_LANG_CXX11
// Ideally, we would inherit base class's constructors through a using
// declaration, which would preserve their visibility. However, many existing
// tests rely on the fact that current implementation reexports protected
// constructors as public. These tests would need to be cleaned up first.
// Single argument constructor is special-cased so that it can be // Single argument constructor is special-cased so that it can be
// made explicit. // made explicit.
template <typename A> template <typename A>
...@@ -306,6 +316,11 @@ class StrictMock : public MockClass { ...@@ -306,6 +316,11 @@ class StrictMock : public MockClass {
} }
#if GTEST_LANG_CXX11 #if GTEST_LANG_CXX11
// Ideally, we would inherit base class's constructors through a using
// declaration, which would preserve their visibility. However, many existing
// tests rely on the fact that current implementation reexports protected
// constructors as public. These tests would need to be cleaned up first.
// Single argument constructor is special-cased so that it can be // Single argument constructor is special-cased so that it can be
// made explicit. // made explicit.
template <typename A> template <typename A>
......
...@@ -92,6 +92,11 @@ class $clazz : public MockClass { ...@@ -92,6 +92,11 @@ class $clazz : public MockClass {
} }
#if GTEST_LANG_CXX11 #if GTEST_LANG_CXX11
// Ideally, we would inherit base class's constructors through a using
// declaration, which would preserve their visibility. However, many existing
// tests rely on the fact that current implementation reexports protected
// constructors as public. These tests would need to be cleaned up first.
// Single argument constructor is special-cased so that it can be // Single argument constructor is special-cased so that it can be
// made explicit. // made explicit.
template <typename A> template <typename A>
......
...@@ -32,9 +32,10 @@ ...@@ -32,9 +32,10 @@
#include "gmock/gmock-generated-nice-strict.h" #include "gmock/gmock-generated-nice-strict.h"
#include <string> #include <string>
#include <utility>
#include "gmock/gmock.h" #include "gmock/gmock.h"
#include "gtest/gtest.h"
#include "gtest/gtest-spi.h" #include "gtest/gtest-spi.h"
#include "gtest/gtest.h"
// This must not be defined inside the ::testing namespace, or it will // This must not be defined inside the ::testing namespace, or it will
// clash with ::testing::Mock. // clash with ::testing::Mock.
...@@ -114,6 +115,24 @@ class MockBar { ...@@ -114,6 +115,24 @@ class MockBar {
GTEST_DISALLOW_COPY_AND_ASSIGN_(MockBar); GTEST_DISALLOW_COPY_AND_ASSIGN_(MockBar);
}; };
#if GTEST_GTEST_LANG_CXX11
class MockBaz {
public:
class MoveOnly {
MoveOnly() = default;
MoveOnly(const MoveOnly&) = delete;
operator=(const MoveOnly&) = delete;
MoveOnly(MoveOnly&&) = default;
operator=(MoveOnly&&) = default;
};
MockBaz(MoveOnly) {}
}
#endif // GTEST_GTEST_LANG_CXX11 && GTEST_HAS_STD_MOVE_
#if GTEST_HAS_STREAM_REDIRECTION #if GTEST_HAS_STREAM_REDIRECTION
// Tests that a raw mock generates warnings for uninteresting calls. // Tests that a raw mock generates warnings for uninteresting calls.
...@@ -214,8 +233,9 @@ TEST(NiceMockTest, AllowsExpectedCall) { ...@@ -214,8 +233,9 @@ TEST(NiceMockTest, AllowsExpectedCall) {
nice_foo.DoThis(); nice_foo.DoThis();
} }
// Tests that an unexpected call on a nice mock which returns a not-default-constructible // Tests that an unexpected call on a nice mock which returns a
// type throws an exception and the exception contains the method's name. // not-default-constructible type throws an exception and the exception contains
// the method's name.
TEST(NiceMockTest, ThrowsExceptionForUnknownReturnTypes) { TEST(NiceMockTest, ThrowsExceptionForUnknownReturnTypes) {
NiceMock<MockFoo> nice_foo; NiceMock<MockFoo> nice_foo;
#if GTEST_HAS_EXCEPTIONS #if GTEST_HAS_EXCEPTIONS
...@@ -266,6 +286,14 @@ TEST(NiceMockTest, AllowLeak) { ...@@ -266,6 +286,14 @@ TEST(NiceMockTest, AllowLeak) {
leaked->DoThis(); leaked->DoThis();
} }
#if GTEST_GTEST_LANG_CXX11 && GTEST_HAS_STD_MOVE_
TEST(NiceMockTest, MoveOnlyConstructor) {
NiceMock<MockBaz> nice_baz(MockBaz::MoveOnly());
}
#endif // GTEST_LANG_CXX11 && GTEST_HAS_STD_MOVE_
#if !GTEST_OS_SYMBIAN && !GTEST_OS_WINDOWS_MOBILE #if !GTEST_OS_SYMBIAN && !GTEST_OS_WINDOWS_MOBILE
// Tests that NiceMock<Mock> compiles where Mock is a user-defined // Tests that NiceMock<Mock> compiles where Mock is a user-defined
// class (as opposed to ::testing::Mock). We had to work around an // class (as opposed to ::testing::Mock). We had to work around an
...@@ -366,6 +394,14 @@ TEST(NaggyMockTest, AllowLeak) { ...@@ -366,6 +394,14 @@ TEST(NaggyMockTest, AllowLeak) {
leaked->DoThis(); leaked->DoThis();
} }
#if GTEST_GTEST_LANG_CXX11 && GTEST_HAS_STD_MOVE_
TEST(NaggyMockTest, MoveOnlyConstructor) {
NaggyMock<MockBaz> naggy_baz(MockBaz::MoveOnly());
}
#endif // GTEST_LANG_CXX11 && GTEST_HAS_STD_MOVE_
#if !GTEST_OS_SYMBIAN && !GTEST_OS_WINDOWS_MOBILE #if !GTEST_OS_SYMBIAN && !GTEST_OS_WINDOWS_MOBILE
// Tests that NaggyMock<Mock> compiles where Mock is a user-defined // Tests that NaggyMock<Mock> compiles where Mock is a user-defined
// class (as opposed to ::testing::Mock). We had to work around an // class (as opposed to ::testing::Mock). We had to work around an
...@@ -447,6 +483,14 @@ TEST(StrictMockTest, AllowLeak) { ...@@ -447,6 +483,14 @@ TEST(StrictMockTest, AllowLeak) {
leaked->DoThis(); leaked->DoThis();
} }
#if GTEST_GTEST_LANG_CXX11 && GTEST_HAS_STD_MOVE_
TEST(StrictMockTest, MoveOnlyConstructor) {
StrictMock<MockBaz> strict_baz(MockBaz::MoveOnly());
}
#endif // GTEST_LANG_CXX11 && GTEST_HAS_STD_MOVE_
#if !GTEST_OS_SYMBIAN && !GTEST_OS_WINDOWS_MOBILE #if !GTEST_OS_SYMBIAN && !GTEST_OS_WINDOWS_MOBILE
// Tests that StrictMock<Mock> compiles where Mock is a user-defined // Tests that StrictMock<Mock> compiles where Mock is a user-defined
// class (as opposed to ::testing::Mock). We had to work around an // class (as opposed to ::testing::Mock). We had to work around an
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment