Googletest export
Fix GTEST_IS_NULL_LITERAL_ for types that have magic implicit conversions. PiperOrigin-RevId: 227879345
This commit is contained in:
committed by
gennadiycivil
parent
3880b13e4c
commit
b6cd405286
@@ -519,9 +519,9 @@ TEST_F(FormatEpochTimeInMillisAsIso8601Test, PrintsEpochStart) {
|
||||
// Tests that GTEST_IS_NULL_LITERAL_(x) is true when x is a null
|
||||
// pointer literal.
|
||||
TEST(NullLiteralTest, IsTrueForNullLiterals) {
|
||||
EXPECT_TRUE(GTEST_IS_NULL_LITERAL_(nullptr));
|
||||
EXPECT_TRUE(GTEST_IS_NULL_LITERAL_(nullptr));
|
||||
EXPECT_TRUE(GTEST_IS_NULL_LITERAL_(nullptr));
|
||||
EXPECT_TRUE(GTEST_IS_NULL_LITERAL_(NULL)); // NOLINT
|
||||
EXPECT_TRUE(GTEST_IS_NULL_LITERAL_(0)); // NOLINT
|
||||
EXPECT_TRUE(GTEST_IS_NULL_LITERAL_(0u)); // NOLINT
|
||||
EXPECT_TRUE(GTEST_IS_NULL_LITERAL_(nullptr));
|
||||
}
|
||||
|
||||
@@ -534,6 +534,26 @@ TEST(NullLiteralTest, IsFalseForNonNullLiterals) {
|
||||
EXPECT_FALSE(GTEST_IS_NULL_LITERAL_(static_cast<void*>(nullptr)));
|
||||
}
|
||||
|
||||
struct ConvertToAll {
|
||||
template <typename T>
|
||||
operator T() const { // NOLINT
|
||||
return T();
|
||||
}
|
||||
};
|
||||
|
||||
struct ConvertToAllButNoPointers {
|
||||
template <typename T,
|
||||
typename std::enable_if<!std::is_pointer<T>::value, int>::type = 0>
|
||||
operator T() const { // NOLINT
|
||||
return T();
|
||||
}
|
||||
};
|
||||
|
||||
TEST(NullLiteralTest, ImplicitConversion) {
|
||||
EXPECT_FALSE(GTEST_IS_NULL_LITERAL_(ConvertToAll{}));
|
||||
EXPECT_FALSE(GTEST_IS_NULL_LITERAL_(ConvertToAllButNoPointers{}));
|
||||
}
|
||||
|
||||
# ifdef __BORLANDC__
|
||||
// Restores warnings after previous "#pragma option push" suppressed them.
|
||||
# pragma option pop
|
||||
|
||||
Reference in New Issue
Block a user