Clone of unsubmitted cr/176529515. Introduce parameterless expectations.
This commit is contained in:
		@@ -3066,6 +3066,44 @@ TEST(AllArgsTest, WorksInWithClause) {
 | 
			
		||||
  EXPECT_EQ(2, helper.Helper('a', 1));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class OptionalMatchersHelper {
 | 
			
		||||
 public:
 | 
			
		||||
  OptionalMatchersHelper() {}
 | 
			
		||||
 | 
			
		||||
  MOCK_METHOD0(NoArgs, int());
 | 
			
		||||
 | 
			
		||||
  MOCK_METHOD1(OneArg, int(int y));
 | 
			
		||||
 | 
			
		||||
  MOCK_METHOD2(TwoArgs, int(char x, int y));
 | 
			
		||||
 | 
			
		||||
  MOCK_METHOD1(Overloaded, int(char x));
 | 
			
		||||
  MOCK_METHOD2(Overloaded, int(char x, int y));
 | 
			
		||||
 | 
			
		||||
 private:
 | 
			
		||||
  GTEST_DISALLOW_COPY_AND_ASSIGN_(OptionalMatchersHelper);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
TEST(AllArgsTest, WorksWithoutMatchers) {
 | 
			
		||||
  OptionalMatchersHelper helper;
 | 
			
		||||
 | 
			
		||||
  ON_CALL(helper, NoArgs).WillByDefault(Return(10));
 | 
			
		||||
  ON_CALL(helper, OneArg).WillByDefault(Return(20));
 | 
			
		||||
  ON_CALL(helper, TwoArgs).WillByDefault(Return(30));
 | 
			
		||||
 | 
			
		||||
  EXPECT_EQ(10, helper.NoArgs());
 | 
			
		||||
  EXPECT_EQ(20, helper.OneArg(1));
 | 
			
		||||
  EXPECT_EQ(30, helper.TwoArgs('\1', 2));
 | 
			
		||||
 | 
			
		||||
  EXPECT_CALL(helper, NoArgs).Times(1);
 | 
			
		||||
  EXPECT_CALL(helper, OneArg).WillOnce(Return(100));
 | 
			
		||||
  EXPECT_CALL(helper, OneArg(17)).WillOnce(Return(200));
 | 
			
		||||
  EXPECT_CALL(helper, TwoArgs).Times(0);
 | 
			
		||||
 | 
			
		||||
  EXPECT_EQ(10, helper.NoArgs());
 | 
			
		||||
  EXPECT_EQ(100, helper.OneArg(1));
 | 
			
		||||
  EXPECT_EQ(200, helper.OneArg(17));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Tests that ASSERT_THAT() and EXPECT_THAT() work when the value
 | 
			
		||||
// matches the matcher.
 | 
			
		||||
TEST(MatcherAssertionTest, WorksWhenMatcherIsSatisfied) {
 | 
			
		||||
@@ -6699,4 +6737,3 @@ TEST(NotTest, WorksOnMoveOnlyType) {
 | 
			
		||||
#if defined_MSC_VER
 | 
			
		||||
# pragma warning(pop)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -89,6 +89,7 @@ using testing::Mock;
 | 
			
		||||
using testing::NaggyMock;
 | 
			
		||||
using testing::Ne;
 | 
			
		||||
using testing::Return;
 | 
			
		||||
using testing::SaveArg;
 | 
			
		||||
using testing::Sequence;
 | 
			
		||||
using testing::SetArgPointee;
 | 
			
		||||
using testing::internal::ExpectationTester;
 | 
			
		||||
@@ -2681,6 +2682,75 @@ TEST(SynchronizationTest, CanCallMockMethodInAction) {
 | 
			
		||||
  // EXPECT_CALL() did not specify an action.
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST(ParameterlessExpectationsTest, CanSetExpectationsWithoutMatchers) {
 | 
			
		||||
  MockA a;
 | 
			
		||||
  int do_a_arg0 = 0;
 | 
			
		||||
  ON_CALL(a, DoA).WillByDefault(SaveArg<0>(&do_a_arg0));
 | 
			
		||||
  int do_a_47_arg0 = 0;
 | 
			
		||||
  ON_CALL(a, DoA(47)).WillByDefault(SaveArg<0>(&do_a_47_arg0));
 | 
			
		||||
 | 
			
		||||
  a.DoA(17);
 | 
			
		||||
  EXPECT_THAT(do_a_arg0, 17);
 | 
			
		||||
  EXPECT_THAT(do_a_47_arg0, 0);
 | 
			
		||||
  a.DoA(47);
 | 
			
		||||
  EXPECT_THAT(do_a_arg0, 17);
 | 
			
		||||
  EXPECT_THAT(do_a_47_arg0, 47);
 | 
			
		||||
 | 
			
		||||
  ON_CALL(a, Binary).WillByDefault(Return(true));
 | 
			
		||||
  ON_CALL(a, Binary(_, 14)).WillByDefault(Return(false));
 | 
			
		||||
  EXPECT_THAT(a.Binary(14, 17), true);
 | 
			
		||||
  EXPECT_THAT(a.Binary(17, 14), false);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST(ParameterlessExpectationsTest, CanSetExpectationsForOverloadedMethods) {
 | 
			
		||||
  MockB b;
 | 
			
		||||
  ON_CALL(b, DoB()).WillByDefault(Return(9));
 | 
			
		||||
  ON_CALL(b, DoB(5)).WillByDefault(Return(11));
 | 
			
		||||
 | 
			
		||||
  EXPECT_THAT(b.DoB(), 9);
 | 
			
		||||
  EXPECT_THAT(b.DoB(1), 0);  // default value
 | 
			
		||||
  EXPECT_THAT(b.DoB(5), 11);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
struct MockWithConstMethods {
 | 
			
		||||
 public:
 | 
			
		||||
  MOCK_CONST_METHOD1(Foo, int(int));
 | 
			
		||||
  MOCK_CONST_METHOD2(Bar, int(int, const char*));
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
TEST(ParameterlessExpectationsTest, CanSetExpectationsForConstMethods) {
 | 
			
		||||
  MockWithConstMethods mock;
 | 
			
		||||
  ON_CALL(mock, Foo).WillByDefault(Return(7));
 | 
			
		||||
  ON_CALL(mock, Bar).WillByDefault(Return(33));
 | 
			
		||||
 | 
			
		||||
  EXPECT_THAT(mock.Foo(17), 7);
 | 
			
		||||
  EXPECT_THAT(mock.Bar(27, "purple"), 33);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class MockConstOverload {
 | 
			
		||||
 public:
 | 
			
		||||
  MOCK_METHOD1(Overloaded, int(int));
 | 
			
		||||
  MOCK_CONST_METHOD1(Overloaded, int(int));
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
TEST(ParameterlessExpectationsTest,
 | 
			
		||||
     CanSetExpectationsForConstOverloadedMethods) {
 | 
			
		||||
  MockConstOverload mock;
 | 
			
		||||
  ON_CALL(mock, Overloaded(_)).WillByDefault(Return(7));
 | 
			
		||||
  ON_CALL(mock, Overloaded(5)).WillByDefault(Return(9));
 | 
			
		||||
  ON_CALL(Const(mock), Overloaded(5)).WillByDefault(Return(11));
 | 
			
		||||
  ON_CALL(Const(mock), Overloaded(7)).WillByDefault(Return(13));
 | 
			
		||||
 | 
			
		||||
  EXPECT_THAT(mock.Overloaded(1), 7);
 | 
			
		||||
  EXPECT_THAT(mock.Overloaded(5), 9);
 | 
			
		||||
  EXPECT_THAT(mock.Overloaded(7), 7);
 | 
			
		||||
 | 
			
		||||
  const MockConstOverload& const_mock = mock;
 | 
			
		||||
  EXPECT_THAT(const_mock.Overloaded(1), 0);
 | 
			
		||||
  EXPECT_THAT(const_mock.Overloaded(5), 11);
 | 
			
		||||
  EXPECT_THAT(const_mock.Overloaded(7), 13);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
}  // namespace
 | 
			
		||||
 | 
			
		||||
// Allows the user to define their own main and then invoke gmock_main
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user