1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
| #include <string> using namespace std;
class Parent { public: virtual ~Parent() {}
virtual int getNum() const = 0; virtual void setResult(int value) = 0; virtual void print(const string &str) = 0; virtual int calc(int a, double b) = 0; };
class Target { public: Target(Parent *parent) : parent_(parent) { }
int doThis() { int v = parent_->getNum(); parent_->setResult(v); while (v -- > 0) { parent_->print(to_string(v)); } return parent_->getNum(); }
int doThat() { return parent_->calc(1, 2.2); }
private: Parent *parent_; };
#include "demo.h" #include <gmock/gmock.h>
class MockParent : public Parent { public:
MOCK_CONST_METHOD0(getNum, int()); MOCK_METHOD1(setResult, void(int)); MOCK_METHOD1(print, void(const string &)); MOCK_METHOD2(calc, int(int, double)); };
using ::testing::Return; using ::testing::_;
TEST(demo, 1) { MockParent p; Target t(&p);
EXPECT_CALL(p, getNum()) .Times(2) .WillOnce(Return(2)) .WillOnce(Return(10));
EXPECT_CALL(p, setResult(2)) .Times(1);
EXPECT_CALL(p, print(_)) .Times(2);
EXPECT_EQ(t.doThis(), 10); }
TEST(demo, 2) { MockParent p; Target t(&p);
EXPECT_CALL(p, calc(1, 2.2)) .Times(1) .WillOnce(Return(3));
EXPECT_EQ(t.doThat(), 3); }
|