aboutsummaryrefslogtreecommitdiffstats
path: root/googlemock/test/gmock-generated-function-mockers_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'googlemock/test/gmock-generated-function-mockers_test.cc')
-rw-r--r--googlemock/test/gmock-generated-function-mockers_test.cc77
1 files changed, 56 insertions, 21 deletions
diff --git a/googlemock/test/gmock-generated-function-mockers_test.cc b/googlemock/test/gmock-generated-function-mockers_test.cc
index a86a6135..820a2b69 100644
--- a/googlemock/test/gmock-generated-function-mockers_test.cc
+++ b/googlemock/test/gmock-generated-function-mockers_test.cc
@@ -26,8 +26,7 @@
// 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.
-//
-// Author: wan@google.com (Zhanyong Wan)
+
// Google Mock - a framework for writing C++ mock classes.
//
@@ -57,7 +56,6 @@
namespace testing {
namespace gmock_generated_function_mockers_test {
-using testing::internal::string;
using testing::_;
using testing::A;
using testing::An;
@@ -82,11 +80,11 @@ class FooInterface {
virtual bool Unary(int x) = 0;
virtual long Binary(short x, int y) = 0; // NOLINT
virtual int Decimal(bool b, char c, short d, int e, long f, // NOLINT
- float g, double h, unsigned i, char* j, const string& k)
- = 0;
+ float g, double h, unsigned i, char* j,
+ const std::string& k) = 0;
virtual bool TakesNonConstReference(int& n) = 0; // NOLINT
- virtual string TakesConstReference(const int& n) = 0;
+ virtual std::string TakesConstReference(const int& n) = 0;
#ifdef GMOCK_ALLOWS_CONST_PARAM_FUNCTIONS
virtual bool TakesConst(const int x) = 0;
#endif // GMOCK_ALLOWS_CONST_PARAM_FUNCTIONS
@@ -101,13 +99,14 @@ class FooInterface {
virtual char OverloadedOnConstness() const = 0;
virtual int TypeWithHole(int (*func)()) = 0;
- virtual int TypeWithComma(const std::map<int, string>& a_map) = 0;
+ virtual int TypeWithComma(const std::map<int, std::string>& a_map) = 0;
#if GTEST_OS_WINDOWS
STDMETHOD_(int, CTNullary)() = 0;
STDMETHOD_(bool, CTUnary)(int x) = 0;
- STDMETHOD_(int, CTDecimal)(bool b, char c, short d, int e, long f, // NOLINT
- float g, double h, unsigned i, char* j, const string& k) = 0;
+ STDMETHOD_(int, CTDecimal)
+ (bool b, char c, short d, int e, long f, // NOLINT
+ float g, double h, unsigned i, char* j, const std::string& k) = 0;
STDMETHOD_(char, CTConst)(int x) const = 0;
#endif // GTEST_OS_WINDOWS
};
@@ -133,19 +132,19 @@ class MockFoo : public FooInterface {
MOCK_METHOD1(Unary, bool(int)); // NOLINT
MOCK_METHOD2(Binary, long(short, int)); // NOLINT
MOCK_METHOD10(Decimal, int(bool, char, short, int, long, float, // NOLINT
- double, unsigned, char*, const string& str));
+ double, unsigned, char*, const std::string& str));
MOCK_METHOD1(TakesNonConstReference, bool(int&)); // NOLINT
- MOCK_METHOD1(TakesConstReference, string(const int&));
+ MOCK_METHOD1(TakesConstReference, std::string(const int&));
#ifdef GMOCK_ALLOWS_CONST_PARAM_FUNCTIONS
MOCK_METHOD1(TakesConst, bool(const int)); // NOLINT
#endif
// Tests that the function return type can contain unprotected comma.
- MOCK_METHOD0(ReturnTypeWithComma, std::map<int, string>());
+ MOCK_METHOD0(ReturnTypeWithComma, std::map<int, std::string>());
MOCK_CONST_METHOD1(ReturnTypeWithComma,
- std::map<int, string>(int)); // NOLINT
+ std::map<int, std::string>(int)); // NOLINT
MOCK_METHOD0(OverloadedOnArgumentNumber, int()); // NOLINT
MOCK_METHOD1(OverloadedOnArgumentNumber, int(int)); // NOLINT
@@ -157,19 +156,21 @@ class MockFoo : public FooInterface {
MOCK_CONST_METHOD0(OverloadedOnConstness, char()); // NOLINT
MOCK_METHOD1(TypeWithHole, int(int (*)())); // NOLINT
- MOCK_METHOD1(TypeWithComma, int(const std::map<int, string>&)); // NOLINT
+ MOCK_METHOD1(TypeWithComma,
+ int(const std::map<int, std::string>&)); // NOLINT
#if GTEST_OS_WINDOWS
MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, CTNullary, int());
MOCK_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, CTUnary, bool(int));
- MOCK_METHOD10_WITH_CALLTYPE(STDMETHODCALLTYPE, CTDecimal, int(bool b, char c,
- short d, int e, long f, float g, double h, unsigned i, char* j,
- const string& k));
+ MOCK_METHOD10_WITH_CALLTYPE(STDMETHODCALLTYPE, CTDecimal,
+ int(bool b, char c, short d, int e, long f,
+ float g, double h, unsigned i, char* j,
+ const std::string& k));
MOCK_CONST_METHOD1_WITH_CALLTYPE(STDMETHODCALLTYPE, CTConst, char(int));
// Tests that the function return type can contain unprotected comma.
MOCK_METHOD0_WITH_CALLTYPE(STDMETHODCALLTYPE, CTReturnTypeWithComma,
- std::map<int, string>());
+ std::map<int, std::string>());
#endif // GTEST_OS_WINDOWS
private:
@@ -227,7 +228,7 @@ TEST_F(FunctionMockerTest, MocksDecimalFunction) {
Lt(100), 5U, NULL, "hi"))
.WillOnce(Return(5));
- EXPECT_EQ(5, foo_->Decimal(true, 'a', 0, 0, 1, 0, 0, 5, NULL, "hi"));
+ EXPECT_EQ(5, foo_->Decimal(true, 'a', 0, 0, 1, 0, 0, 5, nullptr, "hi"));
}
// Tests mocking a function that takes a non-const reference.
@@ -291,7 +292,7 @@ TEST_F(FunctionMockerTest, MocksFunctionsOverloadedOnConstnessOfThis) {
}
TEST_F(FunctionMockerTest, MocksReturnTypeWithComma) {
- const std::map<int, string> a_map;
+ const std::map<int, std::string> a_map;
EXPECT_CALL(mock_foo_, ReturnTypeWithComma())
.WillOnce(Return(a_map));
EXPECT_CALL(mock_foo_, ReturnTypeWithComma(42))
@@ -341,7 +342,7 @@ TEST_F(FunctionMockerTest, MocksFunctionsConstFunctionWithCallType) {
}
TEST_F(FunctionMockerTest, MocksReturnTypeWithCommaAndCallType) {
- const std::map<int, string> a_map;
+ const std::map<int, std::string> a_map;
EXPECT_CALL(mock_foo_, CTReturnTypeWithComma())
.WillOnce(Return(a_map));
@@ -616,7 +617,41 @@ TEST(MockFunctionTest, AsStdFunctionReturnsReference) {
value = 2;
EXPECT_EQ(2, ref);
}
+
+TEST(MockFunctionTest, AsStdFunctionWithReferenceParameter) {
+ MockFunction<int(int &)> foo;
+ auto call = [](const std::function<int(int& )> &f, int &i) {
+ return f(i);
+ };
+ int i = 42;
+ EXPECT_CALL(foo, Call(i)).WillOnce(Return(-1));
+ EXPECT_EQ(-1, call(foo.AsStdFunction(), i));
+}
+
#endif // GTEST_HAS_STD_FUNCTION_
+struct MockMethodSizes0 {
+ MOCK_METHOD0(func, void());
+};
+struct MockMethodSizes1 {
+ MOCK_METHOD1(func, void(int));
+};
+struct MockMethodSizes2 {
+ MOCK_METHOD2(func, void(int, int));
+};
+struct MockMethodSizes3 {
+ MOCK_METHOD3(func, void(int, int, int));
+};
+struct MockMethodSizes4 {
+ MOCK_METHOD4(func, void(int, int, int, int));
+};
+
+TEST(MockFunctionTest, MockMethodSizeOverhead) {
+ EXPECT_EQ(sizeof(MockMethodSizes0), sizeof(MockMethodSizes1));
+ EXPECT_EQ(sizeof(MockMethodSizes0), sizeof(MockMethodSizes2));
+ EXPECT_EQ(sizeof(MockMethodSizes0), sizeof(MockMethodSizes3));
+ EXPECT_EQ(sizeof(MockMethodSizes0), sizeof(MockMethodSizes4));
+}
+
} // namespace gmock_generated_function_mockers_test
} // namespace testing