Merge branch 'master' into master
This commit is contained in:
commit
2d200a7b35
|
@ -38,6 +38,7 @@ install:
|
||||||
- ps: |
|
- ps: |
|
||||||
Write-Output "Compiler: $env:compiler"
|
Write-Output "Compiler: $env:compiler"
|
||||||
Write-Output "Generator: $env:generator"
|
Write-Output "Generator: $env:generator"
|
||||||
|
Write-Output "Env:Configuation: $env:configuration"
|
||||||
if (-not (Test-Path env:APPVEYOR_PULL_REQUEST_NUMBER)) {
|
if (-not (Test-Path env:APPVEYOR_PULL_REQUEST_NUMBER)) {
|
||||||
Write-Output "This is *NOT* a pull request build"
|
Write-Output "This is *NOT* a pull request build"
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
AC_INIT([Google C++ Mocking and Testing Frameworks],
|
AC_INIT([Google C++ Mocking and Testing Frameworks],
|
||||||
[1.8.0],
|
[1.9.0],
|
||||||
[googlemock@googlegroups.com],
|
[googlemock@googlegroups.com],
|
||||||
[googletest])
|
[googletest])
|
||||||
|
|
||||||
|
|
|
@ -246,35 +246,6 @@ We list the most frequently used macros below. For a complete list,
|
||||||
see file [${GTEST\_DIR}/include/gtest/internal/gtest-port.h](
|
see file [${GTEST\_DIR}/include/gtest/internal/gtest-port.h](
|
||||||
../googletest/include/gtest/internal/gtest-port.h).
|
../googletest/include/gtest/internal/gtest-port.h).
|
||||||
|
|
||||||
### Choosing a TR1 Tuple Library ###
|
|
||||||
|
|
||||||
Google Mock uses the C++ Technical Report 1 (TR1) tuple library
|
|
||||||
heavily. Unfortunately TR1 tuple is not yet widely available with all
|
|
||||||
compilers. The good news is that Google Test 1.4.0+ implements a
|
|
||||||
subset of TR1 tuple that's enough for Google Mock's need. Google Mock
|
|
||||||
will automatically use that implementation when the compiler doesn't
|
|
||||||
provide TR1 tuple.
|
|
||||||
|
|
||||||
Usually you don't need to care about which tuple library Google Test
|
|
||||||
and Google Mock use. However, if your project already uses TR1 tuple,
|
|
||||||
you need to tell Google Test and Google Mock to use the same TR1 tuple
|
|
||||||
library the rest of your project uses, or the two tuple
|
|
||||||
implementations will clash. To do that, add
|
|
||||||
|
|
||||||
-DGTEST_USE_OWN_TR1_TUPLE=0
|
|
||||||
|
|
||||||
to the compiler flags while compiling Google Test, Google Mock, and
|
|
||||||
your tests. If you want to force Google Test and Google Mock to use
|
|
||||||
their own tuple library, just add
|
|
||||||
|
|
||||||
-DGTEST_USE_OWN_TR1_TUPLE=1
|
|
||||||
|
|
||||||
to the compiler flags instead.
|
|
||||||
|
|
||||||
If you want to use Boost's TR1 tuple library with Google Mock, please
|
|
||||||
refer to the Boost website (http://www.boost.org/) for how to obtain
|
|
||||||
it and set it up.
|
|
||||||
|
|
||||||
### As a Shared Library (DLL) ###
|
### As a Shared Library (DLL) ###
|
||||||
|
|
||||||
Google Mock is compact, so most users can build and link it as a static
|
Google Mock is compact, so most users can build and link it as a static
|
||||||
|
|
|
@ -1405,8 +1405,9 @@ AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9, M10 m10) {
|
||||||
private:\
|
private:\
|
||||||
::std::string FormatDescription(bool negation) const {\
|
::std::string FormatDescription(bool negation) const {\
|
||||||
::std::string gmock_description = (description);\
|
::std::string gmock_description = (description);\
|
||||||
if (!gmock_description.empty())\
|
if (!gmock_description.empty()) {\
|
||||||
return gmock_description;\
|
return gmock_description;\
|
||||||
|
}\
|
||||||
return ::testing::internal::FormatMatcherDescription(\
|
return ::testing::internal::FormatMatcherDescription(\
|
||||||
negation, #name, \
|
negation, #name, \
|
||||||
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
||||||
|
@ -1454,8 +1455,9 @@ AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9, M10 m10) {
|
||||||
private:\
|
private:\
|
||||||
::std::string FormatDescription(bool negation) const {\
|
::std::string FormatDescription(bool negation) const {\
|
||||||
::std::string gmock_description = (description);\
|
::std::string gmock_description = (description);\
|
||||||
if (!gmock_description.empty())\
|
if (!gmock_description.empty()) {\
|
||||||
return gmock_description;\
|
return gmock_description;\
|
||||||
|
}\
|
||||||
return ::testing::internal::FormatMatcherDescription(\
|
return ::testing::internal::FormatMatcherDescription(\
|
||||||
negation, #name, \
|
negation, #name, \
|
||||||
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
||||||
|
@ -1509,8 +1511,9 @@ AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9, M10 m10) {
|
||||||
private:\
|
private:\
|
||||||
::std::string FormatDescription(bool negation) const {\
|
::std::string FormatDescription(bool negation) const {\
|
||||||
::std::string gmock_description = (description);\
|
::std::string gmock_description = (description);\
|
||||||
if (!gmock_description.empty())\
|
if (!gmock_description.empty()) {\
|
||||||
return gmock_description;\
|
return gmock_description;\
|
||||||
|
}\
|
||||||
return ::testing::internal::FormatMatcherDescription(\
|
return ::testing::internal::FormatMatcherDescription(\
|
||||||
negation, #name, \
|
negation, #name, \
|
||||||
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
||||||
|
@ -1570,8 +1573,9 @@ AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9, M10 m10) {
|
||||||
private:\
|
private:\
|
||||||
::std::string FormatDescription(bool negation) const {\
|
::std::string FormatDescription(bool negation) const {\
|
||||||
::std::string gmock_description = (description);\
|
::std::string gmock_description = (description);\
|
||||||
if (!gmock_description.empty())\
|
if (!gmock_description.empty()) {\
|
||||||
return gmock_description;\
|
return gmock_description;\
|
||||||
|
}\
|
||||||
return ::testing::internal::FormatMatcherDescription(\
|
return ::testing::internal::FormatMatcherDescription(\
|
||||||
negation, #name, \
|
negation, #name, \
|
||||||
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
||||||
|
@ -1638,8 +1642,9 @@ AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9, M10 m10) {
|
||||||
private:\
|
private:\
|
||||||
::std::string FormatDescription(bool negation) const {\
|
::std::string FormatDescription(bool negation) const {\
|
||||||
::std::string gmock_description = (description);\
|
::std::string gmock_description = (description);\
|
||||||
if (!gmock_description.empty())\
|
if (!gmock_description.empty()) {\
|
||||||
return gmock_description;\
|
return gmock_description;\
|
||||||
|
}\
|
||||||
return ::testing::internal::FormatMatcherDescription(\
|
return ::testing::internal::FormatMatcherDescription(\
|
||||||
negation, #name, \
|
negation, #name, \
|
||||||
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
||||||
|
@ -1715,8 +1720,9 @@ AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9, M10 m10) {
|
||||||
private:\
|
private:\
|
||||||
::std::string FormatDescription(bool negation) const {\
|
::std::string FormatDescription(bool negation) const {\
|
||||||
::std::string gmock_description = (description);\
|
::std::string gmock_description = (description);\
|
||||||
if (!gmock_description.empty())\
|
if (!gmock_description.empty()) {\
|
||||||
return gmock_description;\
|
return gmock_description;\
|
||||||
|
}\
|
||||||
return ::testing::internal::FormatMatcherDescription(\
|
return ::testing::internal::FormatMatcherDescription(\
|
||||||
negation, #name, \
|
negation, #name, \
|
||||||
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
||||||
|
@ -1796,8 +1802,9 @@ AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9, M10 m10) {
|
||||||
private:\
|
private:\
|
||||||
::std::string FormatDescription(bool negation) const {\
|
::std::string FormatDescription(bool negation) const {\
|
||||||
::std::string gmock_description = (description);\
|
::std::string gmock_description = (description);\
|
||||||
if (!gmock_description.empty())\
|
if (!gmock_description.empty()) {\
|
||||||
return gmock_description;\
|
return gmock_description;\
|
||||||
|
}\
|
||||||
return ::testing::internal::FormatMatcherDescription(\
|
return ::testing::internal::FormatMatcherDescription(\
|
||||||
negation, #name, \
|
negation, #name, \
|
||||||
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
||||||
|
@ -1883,8 +1890,9 @@ AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9, M10 m10) {
|
||||||
private:\
|
private:\
|
||||||
::std::string FormatDescription(bool negation) const {\
|
::std::string FormatDescription(bool negation) const {\
|
||||||
::std::string gmock_description = (description);\
|
::std::string gmock_description = (description);\
|
||||||
if (!gmock_description.empty())\
|
if (!gmock_description.empty()) {\
|
||||||
return gmock_description;\
|
return gmock_description;\
|
||||||
|
}\
|
||||||
return ::testing::internal::FormatMatcherDescription(\
|
return ::testing::internal::FormatMatcherDescription(\
|
||||||
negation, #name, \
|
negation, #name, \
|
||||||
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
||||||
|
@ -1979,8 +1987,9 @@ AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9, M10 m10) {
|
||||||
private:\
|
private:\
|
||||||
::std::string FormatDescription(bool negation) const {\
|
::std::string FormatDescription(bool negation) const {\
|
||||||
::std::string gmock_description = (description);\
|
::std::string gmock_description = (description);\
|
||||||
if (!gmock_description.empty())\
|
if (!gmock_description.empty()) {\
|
||||||
return gmock_description;\
|
return gmock_description;\
|
||||||
|
}\
|
||||||
return ::testing::internal::FormatMatcherDescription(\
|
return ::testing::internal::FormatMatcherDescription(\
|
||||||
negation, #name, \
|
negation, #name, \
|
||||||
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
||||||
|
@ -2081,8 +2090,9 @@ AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9, M10 m10) {
|
||||||
private:\
|
private:\
|
||||||
::std::string FormatDescription(bool negation) const {\
|
::std::string FormatDescription(bool negation) const {\
|
||||||
::std::string gmock_description = (description);\
|
::std::string gmock_description = (description);\
|
||||||
if (!gmock_description.empty())\
|
if (!gmock_description.empty()) {\
|
||||||
return gmock_description;\
|
return gmock_description;\
|
||||||
|
}\
|
||||||
return ::testing::internal::FormatMatcherDescription(\
|
return ::testing::internal::FormatMatcherDescription(\
|
||||||
negation, #name, \
|
negation, #name, \
|
||||||
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
||||||
|
@ -2190,8 +2200,9 @@ AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9, M10 m10) {
|
||||||
private:\
|
private:\
|
||||||
::std::string FormatDescription(bool negation) const {\
|
::std::string FormatDescription(bool negation) const {\
|
||||||
::std::string gmock_description = (description);\
|
::std::string gmock_description = (description);\
|
||||||
if (!gmock_description.empty())\
|
if (!gmock_description.empty()) {\
|
||||||
return gmock_description;\
|
return gmock_description;\
|
||||||
|
}\
|
||||||
return ::testing::internal::FormatMatcherDescription(\
|
return ::testing::internal::FormatMatcherDescription(\
|
||||||
negation, #name, \
|
negation, #name, \
|
||||||
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
||||||
|
|
|
@ -647,8 +647,9 @@ $var param_field_decls2 = [[$for j
|
||||||
private:\
|
private:\
|
||||||
::std::string FormatDescription(bool negation) const {\
|
::std::string FormatDescription(bool negation) const {\
|
||||||
::std::string gmock_description = (description);\
|
::std::string gmock_description = (description);\
|
||||||
if (!gmock_description.empty())\
|
if (!gmock_description.empty()) {\
|
||||||
return gmock_description;\
|
return gmock_description;\
|
||||||
|
}\
|
||||||
return ::testing::internal::FormatMatcherDescription(\
|
return ::testing::internal::FormatMatcherDescription(\
|
||||||
negation, #name, \
|
negation, #name, \
|
||||||
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
|
||||||
|
|
|
@ -1307,9 +1307,6 @@ class StrEqualityMatcher {
|
||||||
#if GTEST_HAS_ABSL
|
#if GTEST_HAS_ABSL
|
||||||
bool MatchAndExplain(const absl::string_view& s,
|
bool MatchAndExplain(const absl::string_view& s,
|
||||||
MatchResultListener* listener) const {
|
MatchResultListener* listener) const {
|
||||||
if (s.data() == NULL) {
|
|
||||||
return !expect_eq_;
|
|
||||||
}
|
|
||||||
// This should fail to compile if absl::string_view is used with wide
|
// This should fail to compile if absl::string_view is used with wide
|
||||||
// strings.
|
// strings.
|
||||||
const StringType& str = string(s);
|
const StringType& str = string(s);
|
||||||
|
@ -1380,9 +1377,6 @@ class HasSubstrMatcher {
|
||||||
#if GTEST_HAS_ABSL
|
#if GTEST_HAS_ABSL
|
||||||
bool MatchAndExplain(const absl::string_view& s,
|
bool MatchAndExplain(const absl::string_view& s,
|
||||||
MatchResultListener* listener) const {
|
MatchResultListener* listener) const {
|
||||||
if (s.data() == NULL) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
// This should fail to compile if absl::string_view is used with wide
|
// This should fail to compile if absl::string_view is used with wide
|
||||||
// strings.
|
// strings.
|
||||||
const StringType& str = string(s);
|
const StringType& str = string(s);
|
||||||
|
@ -1440,9 +1434,6 @@ class StartsWithMatcher {
|
||||||
#if GTEST_HAS_ABSL
|
#if GTEST_HAS_ABSL
|
||||||
bool MatchAndExplain(const absl::string_view& s,
|
bool MatchAndExplain(const absl::string_view& s,
|
||||||
MatchResultListener* listener) const {
|
MatchResultListener* listener) const {
|
||||||
if (s.data() == NULL) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
// This should fail to compile if absl::string_view is used with wide
|
// This should fail to compile if absl::string_view is used with wide
|
||||||
// strings.
|
// strings.
|
||||||
const StringType& str = string(s);
|
const StringType& str = string(s);
|
||||||
|
@ -1499,9 +1490,6 @@ class EndsWithMatcher {
|
||||||
#if GTEST_HAS_ABSL
|
#if GTEST_HAS_ABSL
|
||||||
bool MatchAndExplain(const absl::string_view& s,
|
bool MatchAndExplain(const absl::string_view& s,
|
||||||
MatchResultListener* listener) const {
|
MatchResultListener* listener) const {
|
||||||
if (s.data() == NULL) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
// This should fail to compile if absl::string_view is used with wide
|
// This should fail to compile if absl::string_view is used with wide
|
||||||
// strings.
|
// strings.
|
||||||
const StringType& str = string(s);
|
const StringType& str = string(s);
|
||||||
|
@ -1558,7 +1546,7 @@ class MatchesRegexMatcher {
|
||||||
#if GTEST_HAS_ABSL
|
#if GTEST_HAS_ABSL
|
||||||
bool MatchAndExplain(const absl::string_view& s,
|
bool MatchAndExplain(const absl::string_view& s,
|
||||||
MatchResultListener* listener) const {
|
MatchResultListener* listener) const {
|
||||||
return s.data() && MatchAndExplain(string(s), listener);
|
return MatchAndExplain(string(s), listener);
|
||||||
}
|
}
|
||||||
#endif // GTEST_HAS_ABSL
|
#endif // GTEST_HAS_ABSL
|
||||||
|
|
||||||
|
|
|
@ -1335,6 +1335,11 @@ TEST(StrEqTest, MatchesEqualString) {
|
||||||
EXPECT_TRUE(m3.Matches(absl::string_view("Hello")));
|
EXPECT_TRUE(m3.Matches(absl::string_view("Hello")));
|
||||||
EXPECT_FALSE(m3.Matches(absl::string_view("hello")));
|
EXPECT_FALSE(m3.Matches(absl::string_view("hello")));
|
||||||
EXPECT_FALSE(m3.Matches(absl::string_view()));
|
EXPECT_FALSE(m3.Matches(absl::string_view()));
|
||||||
|
|
||||||
|
Matcher<const absl::string_view&> m_empty = StrEq("");
|
||||||
|
EXPECT_TRUE(m_empty.Matches(absl::string_view("")));
|
||||||
|
EXPECT_TRUE(m_empty.Matches(absl::string_view()));
|
||||||
|
EXPECT_FALSE(m_empty.Matches(absl::string_view("hello")));
|
||||||
#endif // GTEST_HAS_ABSL
|
#endif // GTEST_HAS_ABSL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1459,6 +1464,10 @@ TEST(HasSubstrTest, WorksForStringClasses) {
|
||||||
const Matcher<const std::string&> m2 = HasSubstr("foo");
|
const Matcher<const std::string&> m2 = HasSubstr("foo");
|
||||||
EXPECT_TRUE(m2.Matches(std::string("I love food.")));
|
EXPECT_TRUE(m2.Matches(std::string("I love food.")));
|
||||||
EXPECT_FALSE(m2.Matches(std::string("tofo")));
|
EXPECT_FALSE(m2.Matches(std::string("tofo")));
|
||||||
|
|
||||||
|
const Matcher<std::string> m_empty = HasSubstr("");
|
||||||
|
EXPECT_TRUE(m_empty.Matches(std::string()));
|
||||||
|
EXPECT_TRUE(m_empty.Matches(std::string("not empty")));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tests that HasSubstr() works for matching C-string-typed values.
|
// Tests that HasSubstr() works for matching C-string-typed values.
|
||||||
|
@ -1472,6 +1481,11 @@ TEST(HasSubstrTest, WorksForCStrings) {
|
||||||
EXPECT_TRUE(m2.Matches("I love food."));
|
EXPECT_TRUE(m2.Matches("I love food."));
|
||||||
EXPECT_FALSE(m2.Matches("tofo"));
|
EXPECT_FALSE(m2.Matches("tofo"));
|
||||||
EXPECT_FALSE(m2.Matches(NULL));
|
EXPECT_FALSE(m2.Matches(NULL));
|
||||||
|
|
||||||
|
const Matcher<const char*> m_empty = HasSubstr("");
|
||||||
|
EXPECT_TRUE(m_empty.Matches("not empty"));
|
||||||
|
EXPECT_TRUE(m_empty.Matches(""));
|
||||||
|
EXPECT_FALSE(m_empty.Matches(NULL));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if GTEST_HAS_ABSL
|
#if GTEST_HAS_ABSL
|
||||||
|
@ -1489,7 +1503,8 @@ TEST(HasSubstrTest, WorksForStringViewClasses) {
|
||||||
|
|
||||||
const Matcher<const absl::string_view&> m3 = HasSubstr("");
|
const Matcher<const absl::string_view&> m3 = HasSubstr("");
|
||||||
EXPECT_TRUE(m3.Matches(absl::string_view("foo")));
|
EXPECT_TRUE(m3.Matches(absl::string_view("foo")));
|
||||||
EXPECT_FALSE(m3.Matches(absl::string_view()));
|
EXPECT_TRUE(m3.Matches(absl::string_view("")));
|
||||||
|
EXPECT_TRUE(m3.Matches(absl::string_view()));
|
||||||
}
|
}
|
||||||
#endif // GTEST_HAS_ABSL
|
#endif // GTEST_HAS_ABSL
|
||||||
|
|
||||||
|
@ -1713,6 +1728,13 @@ TEST(StartsWithTest, MatchesStringWithGivenPrefix) {
|
||||||
EXPECT_TRUE(m2.Matches("High"));
|
EXPECT_TRUE(m2.Matches("High"));
|
||||||
EXPECT_FALSE(m2.Matches("H"));
|
EXPECT_FALSE(m2.Matches("H"));
|
||||||
EXPECT_FALSE(m2.Matches(" Hi"));
|
EXPECT_FALSE(m2.Matches(" Hi"));
|
||||||
|
|
||||||
|
#if GTEST_HAS_ABSL
|
||||||
|
const Matcher<absl::string_view> m_empty = StartsWith("");
|
||||||
|
EXPECT_TRUE(m_empty.Matches(absl::string_view()));
|
||||||
|
EXPECT_TRUE(m_empty.Matches(absl::string_view("")));
|
||||||
|
EXPECT_TRUE(m_empty.Matches(absl::string_view("not empty")));
|
||||||
|
#endif // GTEST_HAS_ABSL
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(StartsWithTest, CanDescribeSelf) {
|
TEST(StartsWithTest, CanDescribeSelf) {
|
||||||
|
@ -1748,9 +1770,8 @@ TEST(EndsWithTest, MatchesStringWithGivenSuffix) {
|
||||||
const Matcher<const absl::string_view&> m4 = EndsWith("");
|
const Matcher<const absl::string_view&> m4 = EndsWith("");
|
||||||
EXPECT_TRUE(m4.Matches("Hi"));
|
EXPECT_TRUE(m4.Matches("Hi"));
|
||||||
EXPECT_TRUE(m4.Matches(""));
|
EXPECT_TRUE(m4.Matches(""));
|
||||||
// Default-constructed absl::string_view should not match anything, in order
|
EXPECT_TRUE(m4.Matches(absl::string_view()));
|
||||||
// to distinguish it from an empty string.
|
EXPECT_TRUE(m4.Matches(absl::string_view("")));
|
||||||
EXPECT_FALSE(m4.Matches(absl::string_view()));
|
|
||||||
#endif // GTEST_HAS_ABSL
|
#endif // GTEST_HAS_ABSL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1777,11 +1798,10 @@ TEST(MatchesRegexTest, MatchesStringMatchingGivenRegex) {
|
||||||
EXPECT_TRUE(m3.Matches(absl::string_view("az")));
|
EXPECT_TRUE(m3.Matches(absl::string_view("az")));
|
||||||
EXPECT_TRUE(m3.Matches(absl::string_view("abcz")));
|
EXPECT_TRUE(m3.Matches(absl::string_view("abcz")));
|
||||||
EXPECT_FALSE(m3.Matches(absl::string_view("1az")));
|
EXPECT_FALSE(m3.Matches(absl::string_view("1az")));
|
||||||
// Default-constructed absl::string_view should not match anything, in order
|
|
||||||
// to distinguish it from an empty string.
|
|
||||||
EXPECT_FALSE(m3.Matches(absl::string_view()));
|
EXPECT_FALSE(m3.Matches(absl::string_view()));
|
||||||
const Matcher<const absl::string_view&> m4 = MatchesRegex("");
|
const Matcher<const absl::string_view&> m4 = MatchesRegex("");
|
||||||
EXPECT_FALSE(m4.Matches(absl::string_view()));
|
EXPECT_TRUE(m4.Matches(absl::string_view("")));
|
||||||
|
EXPECT_TRUE(m4.Matches(absl::string_view()));
|
||||||
#endif // GTEST_HAS_ABSL
|
#endif // GTEST_HAS_ABSL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1816,11 +1836,10 @@ TEST(ContainsRegexTest, MatchesStringContainingGivenRegex) {
|
||||||
EXPECT_TRUE(m3.Matches(absl::string_view("azbz")));
|
EXPECT_TRUE(m3.Matches(absl::string_view("azbz")));
|
||||||
EXPECT_TRUE(m3.Matches(absl::string_view("az1")));
|
EXPECT_TRUE(m3.Matches(absl::string_view("az1")));
|
||||||
EXPECT_FALSE(m3.Matches(absl::string_view("1a")));
|
EXPECT_FALSE(m3.Matches(absl::string_view("1a")));
|
||||||
// Default-constructed absl::string_view should not match anything, in order
|
|
||||||
// to distinguish it from an empty string.
|
|
||||||
EXPECT_FALSE(m3.Matches(absl::string_view()));
|
EXPECT_FALSE(m3.Matches(absl::string_view()));
|
||||||
const Matcher<const absl::string_view&> m4 = ContainsRegex("");
|
const Matcher<const absl::string_view&> m4 = ContainsRegex("");
|
||||||
EXPECT_FALSE(m4.Matches(absl::string_view()));
|
EXPECT_TRUE(m4.Matches(absl::string_view("")));
|
||||||
|
EXPECT_TRUE(m4.Matches(absl::string_view()));
|
||||||
#endif // GTEST_HAS_ABSL
|
#endif // GTEST_HAS_ABSL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -245,33 +245,6 @@ them to either 1 or 0 to enable or disable a certain feature.
|
||||||
We list the most frequently used macros below. For a complete list, see file
|
We list the most frequently used macros below. For a complete list, see file
|
||||||
[include/gtest/internal/gtest-port.h](https://github.com/google/googletest/blob/master/include/gtest/internal/gtest-port.h).
|
[include/gtest/internal/gtest-port.h](https://github.com/google/googletest/blob/master/include/gtest/internal/gtest-port.h).
|
||||||
|
|
||||||
### Choosing a TR1 Tuple Library
|
|
||||||
|
|
||||||
Some Google Test features require the C++ Technical Report 1 (TR1) tuple
|
|
||||||
library, which is not yet available with all compilers. The good news is that
|
|
||||||
Google Test implements a subset of TR1 tuple that's enough for its own need, and
|
|
||||||
will automatically use this when the compiler doesn't provide TR1 tuple.
|
|
||||||
|
|
||||||
Usually you don't need to care about which tuple library Google Test uses.
|
|
||||||
However, if your project already uses TR1 tuple, you need to tell Google Test to
|
|
||||||
use the same TR1 tuple library the rest of your project uses, or the two tuple
|
|
||||||
implementations will clash. To do that, add
|
|
||||||
|
|
||||||
-DGTEST_USE_OWN_TR1_TUPLE=0
|
|
||||||
|
|
||||||
to the compiler flags while compiling Google Test and your tests. If you want to
|
|
||||||
force Google Test to use its own tuple library, just add
|
|
||||||
|
|
||||||
-DGTEST_USE_OWN_TR1_TUPLE=1
|
|
||||||
|
|
||||||
to the compiler flags instead.
|
|
||||||
|
|
||||||
If you don't want Google Test to use tuple at all, add
|
|
||||||
|
|
||||||
-DGTEST_HAS_TR1_TUPLE=0
|
|
||||||
|
|
||||||
and all features using tuple will be disabled.
|
|
||||||
|
|
||||||
### Multi-threaded Tests
|
### Multi-threaded Tests
|
||||||
|
|
||||||
Google Test is thread-safe where the pthread library is available. After
|
Google Test is thread-safe where the pthread library is available. After
|
||||||
|
|
|
@ -2117,7 +2117,7 @@ class UnitTestRecordPropertyTestEnvironment : public Environment {
|
||||||
};
|
};
|
||||||
|
|
||||||
// This will test property recording outside of any test or test case.
|
// This will test property recording outside of any test or test case.
|
||||||
static Environment* record_property_env =
|
static Environment* record_property_env GTEST_ATTRIBUTE_UNUSED_ =
|
||||||
AddGlobalTestEnvironment(new UnitTestRecordPropertyTestEnvironment);
|
AddGlobalTestEnvironment(new UnitTestRecordPropertyTestEnvironment);
|
||||||
|
|
||||||
// This group of tests is for predicate assertions (ASSERT_PRED*, etc)
|
// This group of tests is for predicate assertions (ASSERT_PRED*, etc)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user