diff options
author | zhanyong.wan <zhanyong.wan@8415998a-534a-0410-bf83-d39667b30386> | 2013-02-28 22:58:51 +0000 |
---|---|---|
committer | zhanyong.wan <zhanyong.wan@8415998a-534a-0410-bf83-d39667b30386> | 2013-02-28 22:58:51 +0000 |
commit | edd4ab4945aeacdf9bd5ec3ac1654b940ca72532 (patch) | |
tree | 2f79533f5eeeb885491b8b4b707d44096e934f7c /test/gmock_ex_test.cc | |
parent | cf40604cf087eb2a616f104fac587bd889b24e5d (diff) | |
download | googletest-edd4ab4945aeacdf9bd5ec3ac1654b940ca72532.tar.gz googletest-edd4ab4945aeacdf9bd5ec3ac1654b940ca72532.tar.bz2 googletest-edd4ab4945aeacdf9bd5ec3ac1654b940ca72532.zip |
Makes googlemock throw a runtime_error instead of abort when a mock
method with no default value is invoked (if exceptions are enabled).
Diffstat (limited to 'test/gmock_ex_test.cc')
-rw-r--r-- | test/gmock_ex_test.cc | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/test/gmock_ex_test.cc b/test/gmock_ex_test.cc new file mode 100644 index 00000000..a5a8a421 --- /dev/null +++ b/test/gmock_ex_test.cc @@ -0,0 +1,78 @@ +// Copyright 2013, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// 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) + +// Tests Google Mock's functionality that depends on exceptions. + +#include "gmock/gmock.h" +#include "gtest/gtest.h" + +namespace { + +using testing::HasSubstr; +using testing::internal::GoogleTestFailureException; + +// A user-defined class. +class Something {}; + +class MockFoo { + public: + // A mock method that returns a user-defined type. Google Mock + // doesn't know what the default value for this type is. + MOCK_METHOD0(GetSomething, Something()); +}; + +#if GTEST_HAS_EXCEPTIONS + +TEST(DefaultValueTest, ThrowsRuntimeErrorWhenNoDefaultValue) { + MockFoo mock; + try { + // No expectation is set on this method, so Google Mock must + // return the default value. However, since Google Mock knows + // nothing about the return type, it doesn't know what to return, + // and has to throw (when exceptions are enabled) or abort + // (otherwise). + mock.GetSomething(); + FAIL() << "GetSomething()'s return type has no default value, " + << "so Google Mock should have thrown."; + } catch (const GoogleTestFailureException& /* unused */) { + FAIL() << "Google Test does not try to catch an exception of type " + << "GoogleTestFailureException, which is used for reporting " + << "a failure to other testing frameworks. Google Mock should " + << "not throw a GoogleTestFailureException as it will kill the " + << "entire test program instead of just the current TEST."; + } catch (const std::exception& ex) { + EXPECT_THAT(ex.what(), HasSubstr("has no default value")); + } +} + +#endif + +} // unnamed namespace |