Merge pull request #2498 from thejcannon:noexcept_spec
PiperOrigin-RevId: 274097989
This commit is contained in:
		@@ -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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user