| OLD | NEW |
| 1 // Copyright 2009, Google Inc. | 1 // Copyright 2009, Google Inc. |
| 2 // All rights reserved. | 2 // All rights reserved. |
| 3 // | 3 // |
| 4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
| 5 // modification, are permitted provided that the following conditions are | 5 // modification, are permitted provided that the following conditions are |
| 6 // met: | 6 // met: |
| 7 // | 7 // |
| 8 // * Redistributions of source code must retain the above copyright | 8 // * Redistributions of source code must retain the above copyright |
| 9 // notice, this list of conditions and the following disclaimer. | 9 // notice, this list of conditions and the following disclaimer. |
| 10 // * Redistributions in binary form must reproduce the above | 10 // * Redistributions in binary form must reproduce the above |
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 199 virtual int& IntRefFromString(char* str) = 0; | 199 virtual int& IntRefFromString(char* str) = 0; |
| 200 virtual void VoidFromFunc(void(*)(char*)) = 0; | 200 virtual void VoidFromFunc(void(*)(char*)) = 0; |
| 201 virtual void VoidFromIntRef(int& n) = 0; | 201 virtual void VoidFromIntRef(int& n) = 0; |
| 202 virtual void VoidFromFloat(float n) = 0; | 202 virtual void VoidFromFloat(float n) = 0; |
| 203 virtual void VoidFromDouble(double n) = 0; | 203 virtual void VoidFromDouble(double n) = 0; |
| 204 virtual void VoidFromVector(const std::vector<int>& v) = 0; | 204 virtual void VoidFromVector(const std::vector<int>& v) = 0; |
| 205 }; | 205 }; |
| 206 | 206 |
| 207 class Mock: public Interface { | 207 class Mock: public Interface { |
| 208 public: | 208 public: |
| 209 Mock() {} |
| 210 |
| 209 MOCK_METHOD1(VoidFromString, void(char* str)); | 211 MOCK_METHOD1(VoidFromString, void(char* str)); |
| 210 MOCK_METHOD1(StringFromString, char*(char* str)); | 212 MOCK_METHOD1(StringFromString, char*(char* str)); |
| 211 MOCK_METHOD1(IntFromString, int(char* str)); | 213 MOCK_METHOD1(IntFromString, int(char* str)); |
| 212 MOCK_METHOD1(IntRefFromString, int&(char* str)); | 214 MOCK_METHOD1(IntRefFromString, int&(char* str)); |
| 213 MOCK_METHOD1(VoidFromFunc, void(void(*func)(char* str))); | 215 MOCK_METHOD1(VoidFromFunc, void(void(*func)(char* str))); |
| 214 MOCK_METHOD1(VoidFromIntRef, void(int& n)); | 216 MOCK_METHOD1(VoidFromIntRef, void(int& n)); |
| 215 MOCK_METHOD1(VoidFromFloat, void(float n)); | 217 MOCK_METHOD1(VoidFromFloat, void(float n)); |
| 216 MOCK_METHOD1(VoidFromDouble, void(double n)); | 218 MOCK_METHOD1(VoidFromDouble, void(double n)); |
| 217 MOCK_METHOD1(VoidFromVector, void(const std::vector<int>& v)); | 219 MOCK_METHOD1(VoidFromVector, void(const std::vector<int>& v)); |
| 220 |
| 221 private: |
| 222 GTEST_DISALLOW_COPY_AND_ASSIGN_(Mock); |
| 218 }; | 223 }; |
| 219 | 224 |
| 220 class InvokeHelper { | 225 class InvokeHelper { |
| 221 public: | 226 public: |
| 222 static void StaticVoidFromVoid() {} | 227 static void StaticVoidFromVoid() {} |
| 223 void VoidFromVoid() {} | 228 void VoidFromVoid() {} |
| 224 static void StaticVoidFromString(char*) {} | 229 static void StaticVoidFromString(char*) {} |
| 225 void VoidFromString(char*) {} | 230 void VoidFromString(char*) {} |
| 226 static int StaticIntFromString(char*) { return 1; } | 231 static int StaticIntFromString(char*) { return 1; } |
| 227 static bool StaticBoolFromString(const char*) { return true; } | 232 static bool StaticBoolFromString(const char*) { return true; } |
| 228 }; | 233 }; |
| 229 | 234 |
| 230 class FieldHelper { | 235 class FieldHelper { |
| 231 public: | 236 public: |
| 232 FieldHelper(int field) : field_(field) {} | 237 FieldHelper(int a_field) : field_(a_field) {} |
| 233 int field() const { return field_; } | 238 int field() const { return field_; } |
| 234 int field_; // NOLINT -- need external access to field_ to test | 239 int field_; // NOLINT -- need external access to field_ to test |
| 235 // the Field matcher. | 240 // the Field matcher. |
| 236 }; | 241 }; |
| 237 | 242 |
| 238 // Tests the linkage of the ReturnVoid action. | 243 // Tests the linkage of the ReturnVoid action. |
| 239 TEST(LinkTest, TestReturnVoid) { | 244 TEST(LinkTest, TestReturnVoid) { |
| 240 Mock mock; | 245 Mock mock; |
| 241 | 246 |
| 242 EXPECT_CALL(mock, VoidFromString(_)).WillOnce(Return()); | 247 EXPECT_CALL(mock, VoidFromString(_)).WillOnce(Return()); |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 403 #if GTEST_HAS_EXCEPTIONS | 408 #if GTEST_HAS_EXCEPTIONS |
| 404 // Tests the linkage of the Throw action. | 409 // Tests the linkage of the Throw action. |
| 405 TEST(LinkTest, TestThrow) { | 410 TEST(LinkTest, TestThrow) { |
| 406 Mock mock; | 411 Mock mock; |
| 407 | 412 |
| 408 EXPECT_CALL(mock, VoidFromString(_)).WillOnce(Throw(42)); | 413 EXPECT_CALL(mock, VoidFromString(_)).WillOnce(Throw(42)); |
| 409 EXPECT_THROW(mock.VoidFromString(NULL), int); | 414 EXPECT_THROW(mock.VoidFromString(NULL), int); |
| 410 } | 415 } |
| 411 #endif // GTEST_HAS_EXCEPTIONS | 416 #endif // GTEST_HAS_EXCEPTIONS |
| 412 | 417 |
| 418 // The ACTION*() macros trigger warning C4100 (unreferenced formal |
| 419 // parameter) in MSVC with -W4. Unfortunately they cannot be fixed in |
| 420 // the macro definition, as the warnings are generated when the macro |
| 421 // is expanded and macro expansion cannot contain #pragma. Therefore |
| 422 // we suppress them here. |
| 423 #ifdef _MSC_VER |
| 424 #pragma warning(push) |
| 425 #pragma warning(disable:4100) |
| 426 #endif |
| 427 |
| 413 // Tests the linkage of actions created using ACTION macro. | 428 // Tests the linkage of actions created using ACTION macro. |
| 414 namespace { | 429 namespace { |
| 415 ACTION(Return1) { return 1; } | 430 ACTION(Return1) { return 1; } |
| 416 } | 431 } |
| 417 | 432 |
| 418 TEST(LinkTest, TestActionMacro) { | 433 TEST(LinkTest, TestActionMacro) { |
| 419 Mock mock; | 434 Mock mock; |
| 420 | 435 |
| 421 EXPECT_CALL(mock, IntFromString(_)).WillOnce(Return1()); | 436 EXPECT_CALL(mock, IntFromString(_)).WillOnce(Return1()); |
| 422 mock.IntFromString(NULL); | 437 mock.IntFromString(NULL); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 434 mock.IntFromString(NULL); | 449 mock.IntFromString(NULL); |
| 435 } | 450 } |
| 436 | 451 |
| 437 // Tests the linkage of actions created using ACTION_P2 macro. | 452 // Tests the linkage of actions created using ACTION_P2 macro. |
| 438 namespace { | 453 namespace { |
| 439 ACTION_P2(ReturnEqualsEitherOf, first, second) { | 454 ACTION_P2(ReturnEqualsEitherOf, first, second) { |
| 440 return arg0 == first || arg0 == second; | 455 return arg0 == first || arg0 == second; |
| 441 } | 456 } |
| 442 } | 457 } |
| 443 | 458 |
| 459 #ifdef _MSC_VER |
| 460 #pragma warning(pop) |
| 461 #endif |
| 462 |
| 444 TEST(LinkTest, TestActionP2Macro) { | 463 TEST(LinkTest, TestActionP2Macro) { |
| 445 Mock mock; | 464 Mock mock; |
| 446 char ch = 'x'; | 465 char ch = 'x'; |
| 447 | 466 |
| 448 EXPECT_CALL(mock, IntFromString(_)) | 467 EXPECT_CALL(mock, IntFromString(_)) |
| 449 .WillOnce(ReturnEqualsEitherOf("one", "two")); | 468 .WillOnce(ReturnEqualsEitherOf("one", "two")); |
| 450 mock.IntFromString(&ch); | 469 mock.IntFromString(&ch); |
| 451 } | 470 } |
| 452 | 471 |
| 453 // Tests the linkage of the "_" matcher. | 472 // Tests the linkage of the "_" matcher. |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 645 EXPECT_FALSE(m.Matches(1)); | 664 EXPECT_FALSE(m.Matches(1)); |
| 646 } | 665 } |
| 647 | 666 |
| 648 // Tests the linkage of the MatcherCast<T>() function. | 667 // Tests the linkage of the MatcherCast<T>() function. |
| 649 TEST(LinkTest, TestMatcherCast) { | 668 TEST(LinkTest, TestMatcherCast) { |
| 650 Matcher<const char*> m = MatcherCast<const char*>(_); | 669 Matcher<const char*> m = MatcherCast<const char*>(_); |
| 651 EXPECT_TRUE(m.Matches(NULL)); | 670 EXPECT_TRUE(m.Matches(NULL)); |
| 652 } | 671 } |
| 653 | 672 |
| 654 #endif // GMOCK_TEST_GMOCK_LINK_TEST_H_ | 673 #endif // GMOCK_TEST_GMOCK_LINK_TEST_H_ |
| OLD | NEW |