diff options
author | Gennadiy Civil <misterg@google.com> | 2019-10-11 11:07:12 (GMT) |
---|---|---|
committer | Gennadiy Civil <misterg@google.com> | 2019-10-11 11:07:12 (GMT) |
commit | 37905b9d8c8fcc48a8c84416d4e561ad138cd7b7 (patch) | |
tree | b6e99b547e9f978962fafa1f883df65912453d5a /googlemock/test | |
parent | a4a5a7c768ceaf8fdc79ccf1d9e3bfb9f481efa6 (diff) | |
parent | bc996e0817d85c9dcfbf031480d22743aba697b2 (diff) | |
download | googletest-37905b9d8c8fcc48a8c84416d4e561ad138cd7b7.zip googletest-37905b9d8c8fcc48a8c84416d4e561ad138cd7b7.tar.gz googletest-37905b9d8c8fcc48a8c84416d4e561ad138cd7b7.tar.bz2 |
Merge pull request #2498 from thejcannon:noexcept_spec
PiperOrigin-RevId: 274097989
Diffstat (limited to 'googlemock/test')
-rw-r--r-- | googlemock/test/gmock-function-mocker_test.cc | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/googlemock/test/gmock-function-mocker_test.cc b/googlemock/test/gmock-function-mocker_test.cc index fbc5d5b..7ce8465 100644 --- a/googlemock/test/gmock-function-mocker_test.cc +++ b/googlemock/test/gmock-function-mocker_test.cc @@ -42,6 +42,8 @@ #include <map> #include <string> +#include <type_traits> + #include "gmock/gmock.h" #include "gtest/gtest.h" @@ -656,5 +658,32 @@ TEST(MockMethodMockFunctionTest, MockMethodSizeOverhead) { EXPECT_EQ(sizeof(MockMethodSizes0), sizeof(MockMethodSizes4)); } +void hasTwoParams(int, int); +void MaybeThrows(); +void DoesntThrow() noexcept; +struct MockMethodNoexceptSpecifier { + MOCK_METHOD(void, func1, (), (noexcept)); + MOCK_METHOD(void, func2, (), (noexcept(true))); + MOCK_METHOD(void, func3, (), (noexcept(false))); + MOCK_METHOD(void, func4, (), (noexcept(noexcept(MaybeThrows())))); + MOCK_METHOD(void, func5, (), (noexcept(noexcept(DoesntThrow())))); + MOCK_METHOD(void, func6, (), (noexcept(noexcept(DoesntThrow())), const)); + MOCK_METHOD(void, func7, (), (const, noexcept(noexcept(DoesntThrow())))); + // Put commas in the noexcept expression + MOCK_METHOD(void, func8, (), (noexcept(noexcept(hasTwoParams(1, 2))), const)); +}; + +TEST(MockMethodMockFunctionTest, NoexceptSpecifierPreserved) { + EXPECT_TRUE(noexcept(std::declval<MockMethodNoexceptSpecifier>().func1())); + EXPECT_TRUE(noexcept(std::declval<MockMethodNoexceptSpecifier>().func2())); + EXPECT_FALSE(noexcept(std::declval<MockMethodNoexceptSpecifier>().func3())); + EXPECT_FALSE(noexcept(std::declval<MockMethodNoexceptSpecifier>().func4())); + EXPECT_TRUE(noexcept(std::declval<MockMethodNoexceptSpecifier>().func5())); + EXPECT_TRUE(noexcept(std::declval<MockMethodNoexceptSpecifier>().func6())); + EXPECT_TRUE(noexcept(std::declval<MockMethodNoexceptSpecifier>().func7())); + EXPECT_EQ(noexcept(std::declval<MockMethodNoexceptSpecifier>().func8()), + noexcept(hasTwoParams(1, 2))); +} + } // namespace gmock_function_mocker_test } // namespace testing |