aboutsummaryrefslogtreecommitdiffstats
path: root/googlemock/test
diff options
context:
space:
mode:
authorvslashg <gfalcon@google.com>2019-11-01 16:02:05 -0400
committervslashg <gfalcon@google.com>2019-11-01 16:02:05 -0400
commit057ee5063d00a67fd0a83029e8cf26ea9bc1bb69 (patch)
treec28c9fae6cb42e78fdb0750a63fcf8a814966b0d /googlemock/test
parent2db3df9c4f825591dfce2d6909cebe4a3f073910 (diff)
parent676d0444bf95d0ffba07973dcc7234e645acdb91 (diff)
downloadgoogletest-057ee5063d00a67fd0a83029e8cf26ea9bc1bb69.tar.gz
googletest-057ee5063d00a67fd0a83029e8cf26ea9bc1bb69.tar.bz2
googletest-057ee5063d00a67fd0a83029e8cf26ea9bc1bb69.zip
Merge pull request #2533 from thejcannon:noexcept_spec
PiperOrigin-RevId: 277924721
Diffstat (limited to 'googlemock/test')
-rw-r--r--googlemock/test/gmock-function-mocker_test.cc29
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 55be70a8..90d6b5f1 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"
@@ -663,5 +665,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