diff options
Diffstat (limited to 'googlemock/test/gmock-nice-strict_test.cc')
| -rw-r--r-- | googlemock/test/gmock-nice-strict_test.cc | 23 | 
1 files changed, 23 insertions, 0 deletions
| diff --git a/googlemock/test/gmock-nice-strict_test.cc b/googlemock/test/gmock-nice-strict_test.cc index 5d6ccc4f..0eac6439 100644 --- a/googlemock/test/gmock-nice-strict_test.cc +++ b/googlemock/test/gmock-nice-strict_test.cc @@ -62,6 +62,12 @@ using testing::internal::CaptureStdout;  using testing::internal::GetCapturedStdout;  #endif +// Class without default constructor. +class NotDefaultConstructible { + public: +  explicit NotDefaultConstructible(int) {} +}; +  // Defines some mock classes needed by the tests.  class Foo { @@ -79,6 +85,7 @@ class MockFoo : public Foo {    MOCK_METHOD0(DoThis, void());    MOCK_METHOD1(DoThat, int(bool flag)); +  MOCK_METHOD0(ReturnNonDefaultConstructible, NotDefaultConstructible());   private:    GTEST_DISALLOW_COPY_AND_ASSIGN_(MockFoo); @@ -207,6 +214,22 @@ 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. +TEST(NiceMockTest, ThrowsExceptionForUnknownReturnTypes) { +  NiceMock<MockFoo> nice_foo; +#if GTEST_HAS_EXCEPTIONS +  try { +    nice_foo.ReturnNonDefaultConstructible(); +    FAIL(); +  } catch (const std::runtime_error& ex) { +    EXPECT_THAT(ex.what(), HasSubstr("ReturnNonDefaultConstructible")); +  } +#else +  EXPECT_DEATH_IF_SUPPORTED({ nice_foo.ReturnNonDefaultConstructible(); }, ""); +#endif +} +  // Tests that an unexpected call on a nice mock fails.  TEST(NiceMockTest, UnexpectedCallFails) {    NiceMock<MockFoo> nice_foo; | 
