|
|
|
@ -32,9 +32,10 @@ |
|
|
|
|
#include "gmock/gmock-generated-nice-strict.h" |
|
|
|
|
|
|
|
|
|
#include <string> |
|
|
|
|
#include <utility> |
|
|
|
|
#include "gmock/gmock.h" |
|
|
|
|
#include "gtest/gtest.h" |
|
|
|
|
#include "gtest/gtest-spi.h" |
|
|
|
|
#include "gtest/gtest.h" |
|
|
|
|
|
|
|
|
|
// This must not be defined inside the ::testing namespace, or it will
|
|
|
|
|
// clash with ::testing::Mock.
|
|
|
|
@ -114,6 +115,24 @@ class 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 |
|
|
|
|
|
|
|
|
|
// Tests that a raw mock generates warnings for uninteresting calls.
|
|
|
|
@ -214,8 +233,9 @@ TEST(NiceMockTest, AllowsExpectedCall) { |
|
|
|
|
nice_foo.DoThis(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Tests that an unexpected call on a nice mock which returns a not-default-constructible
|
|
|
|
|
// type throws an exception and the exception contains the method's name.
|
|
|
|
|
// Tests that an unexpected call on a nice mock which returns a
|
|
|
|
|
// not-default-constructible type throws an exception and the exception contains
|
|
|
|
|
// the method's name.
|
|
|
|
|
TEST(NiceMockTest, ThrowsExceptionForUnknownReturnTypes) { |
|
|
|
|
NiceMock<MockFoo> nice_foo; |
|
|
|
|
#if GTEST_HAS_EXCEPTIONS |
|
|
|
@ -266,6 +286,14 @@ TEST(NiceMockTest, AllowLeak) { |
|
|
|
|
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 |
|
|
|
|
// Tests that NiceMock<Mock> compiles where Mock is a user-defined
|
|
|
|
|
// class (as opposed to ::testing::Mock). We had to work around an
|
|
|
|
@ -366,6 +394,14 @@ TEST(NaggyMockTest, AllowLeak) { |
|
|
|
|
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 |
|
|
|
|
// Tests that NaggyMock<Mock> compiles where Mock is a user-defined
|
|
|
|
|
// class (as opposed to ::testing::Mock). We had to work around an
|
|
|
|
@ -447,6 +483,14 @@ TEST(StrictMockTest, AllowLeak) { |
|
|
|
|
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 |
|
|
|
|
// Tests that StrictMock<Mock> compiles where Mock is a user-defined
|
|
|
|
|
// class (as opposed to ::testing::Mock). We had to work around an
|
|
|
|
|