Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
yangql
googletest
Commits
7cc548dc
Commit
7cc548dc
authored
May 16, 2017
by
Billy Donahue
Committed by
GitHub
May 16, 2017
Browse files
Merge pull request #1089 from nico/stdstring
Use std::string and ::string explicitly in gtest and gmock code.
parents
078d5d93
09fd5b3e
Changes
27
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
425 additions
and
421 deletions
+425
-421
googlemock/include/gmock/gmock-matchers.h
googlemock/include/gmock/gmock-matchers.h
+58
-60
googlemock/include/gmock/gmock-spec-builders.h
googlemock/include/gmock/gmock-spec-builders.h
+28
-25
googlemock/include/gmock/internal/gmock-internal-utils.h
googlemock/include/gmock/internal/gmock-internal-utils.h
+4
-5
googlemock/src/gmock-cardinalities.cc
googlemock/src/gmock-cardinalities.cc
+1
-1
googlemock/src/gmock-internal-utils.cc
googlemock/src/gmock-internal-utils.cc
+2
-3
googlemock/src/gmock-matchers.cc
googlemock/src/gmock-matchers.cc
+4
-5
googlemock/src/gmock-spec-builders.cc
googlemock/src/gmock-spec-builders.cc
+4
-5
googlemock/test/gmock-generated-actions_test.cc
googlemock/test/gmock-generated-actions_test.cc
+57
-57
googlemock/test/gmock-generated-function-mockers_test.cc
googlemock/test/gmock-generated-function-mockers_test.cc
+20
-18
googlemock/test/gmock-generated-matchers_test.cc
googlemock/test/gmock-generated-matchers_test.cc
+36
-36
googlemock/test/gmock-internal-utils_test.cc
googlemock/test/gmock-internal-utils_test.cc
+12
-13
googlemock/test/gmock-matchers_test.cc
googlemock/test/gmock-matchers_test.cc
+84
-78
googlemock/test/gmock-more-actions_test.cc
googlemock/test/gmock-more-actions_test.cc
+77
-74
googlemock/test/gmock-nice-strict_test.cc
googlemock/test/gmock-nice-strict_test.cc
+13
-14
googlemock/test/gmock-spec-builders_test.cc
googlemock/test/gmock-spec-builders_test.cc
+5
-6
googlemock/test/gmock_stress_test.cc
googlemock/test/gmock_stress_test.cc
+1
-1
googletest/include/gtest/gtest-printers.h
googletest/include/gtest/gtest-printers.h
+5
-5
googletest/include/gtest/gtest-spi.h
googletest/include/gtest/gtest-spi.h
+2
-3
googletest/include/gtest/internal/gtest-internal.h
googletest/include/gtest/internal/gtest-internal.h
+3
-2
googletest/include/gtest/internal/gtest-param-util.h
googletest/include/gtest/internal/gtest-param-util.h
+9
-10
No files found.
googlemock/include/gmock/gmock-matchers.h
View file @
7cc548dc
...
...
@@ -186,7 +186,7 @@ class StringMatchResultListener : public MatchResultListener {
StringMatchResultListener
()
:
MatchResultListener
(
&
ss_
)
{}
// Returns the explanation accumulated so far.
internal
::
string
str
()
const
{
return
ss_
.
str
();
}
std
::
string
str
()
const
{
return
ss_
.
str
();
}
// Clears the explanation accumulated so far.
void
Clear
()
{
ss_
.
str
(
""
);
}
...
...
@@ -675,7 +675,7 @@ Matcher<T> A();
namespace
internal
{
// If the explanation is not empty, prints it to the ostream.
inline
void
PrintIfNotEmpty
(
const
internal
::
string
&
explanation
,
inline
void
PrintIfNotEmpty
(
const
std
::
string
&
explanation
,
::
std
::
ostream
*
os
)
{
if
(
explanation
!=
""
&&
os
!=
NULL
)
{
*
os
<<
", "
<<
explanation
;
...
...
@@ -685,11 +685,11 @@ inline void PrintIfNotEmpty(const internal::string& explanation,
// Returns true if the given type name is easy to read by a human.
// This is used to decide whether printing the type of a value might
// be helpful.
inline
bool
IsReadableTypeName
(
const
string
&
type_name
)
{
inline
bool
IsReadableTypeName
(
const
std
::
string
&
type_name
)
{
// We consider a type name readable if it's short or doesn't contain
// a template or function type.
return
(
type_name
.
length
()
<=
20
||
type_name
.
find_first_of
(
"<("
)
==
string
::
npos
);
type_name
.
find_first_of
(
"<("
)
==
std
::
string
::
npos
);
}
// Matches the value against the given matcher, prints the value and explains
...
...
@@ -711,7 +711,7 @@ bool MatchPrintAndExplain(Value& value, const Matcher<T>& matcher,
UniversalPrint
(
value
,
listener
->
stream
());
#if GTEST_HAS_RTTI
const
string
&
type_name
=
GetTypeName
<
Value
>
();
const
std
::
string
&
type_name
=
GetTypeName
<
Value
>
();
if
(
IsReadableTypeName
(
type_name
))
*
listener
->
stream
()
<<
" (of type "
<<
type_name
<<
")"
;
#endif
...
...
@@ -1335,17 +1335,17 @@ class MatchesRegexMatcher {
// wchar_t*
template
<
typename
CharType
>
bool
MatchAndExplain
(
CharType
*
s
,
MatchResultListener
*
listener
)
const
{
return
s
!=
NULL
&&
MatchAndExplain
(
internal
::
string
(
s
),
listener
);
return
s
!=
NULL
&&
MatchAndExplain
(
std
::
string
(
s
),
listener
);
}
// Matches anything that can convert to
internal
::string.
// Matches anything that can convert to
std
::string.
//
// This is a template, not just a plain function with const
internal
::string&,
// This is a template, not just a plain function with const
std
::string&,
// because StringPiece has some interfering non-explicit constructors.
template
<
class
MatcheeStringType
>
bool
MatchAndExplain
(
const
MatcheeStringType
&
s
,
MatchResultListener
*
/* listener */
)
const
{
const
internal
::
string
&
s2
(
s
);
const
std
::
string
&
s2
(
s
);
return
full_match_
?
RE
:
:
FullMatch
(
s2
,
*
regex_
)
:
RE
::
PartialMatch
(
s2
,
*
regex_
);
}
...
...
@@ -1353,13 +1353,13 @@ class MatchesRegexMatcher {
void
DescribeTo
(
::
std
::
ostream
*
os
)
const
{
*
os
<<
(
full_match_
?
"matches"
:
"contains"
)
<<
" regular expression "
;
UniversalPrinter
<
internal
::
string
>::
Print
(
regex_
->
pattern
(),
os
);
UniversalPrinter
<
std
::
string
>::
Print
(
regex_
->
pattern
(),
os
);
}
void
DescribeNegationTo
(
::
std
::
ostream
*
os
)
const
{
*
os
<<
"doesn't "
<<
(
full_match_
?
"match"
:
"contain"
)
<<
" regular expression "
;
UniversalPrinter
<
internal
::
string
>::
Print
(
regex_
->
pattern
(),
os
);
UniversalPrinter
<
std
::
string
>::
Print
(
regex_
->
pattern
(),
os
);
}
private:
...
...
@@ -1526,8 +1526,8 @@ class BothOfMatcherImpl : public MatcherInterface<T> {
}
// Otherwise we need to explain why *both* of them match.
const
internal
::
string
s1
=
listener1
.
str
();
const
internal
::
string
s2
=
listener2
.
str
();
const
std
::
string
s1
=
listener1
.
str
();
const
std
::
string
s2
=
listener2
.
str
();
if
(
s1
==
""
)
{
*
listener
<<
s2
;
...
...
@@ -1698,8 +1698,8 @@ class EitherOfMatcherImpl : public MatcherInterface<T> {
}
// Otherwise we need to explain why *both* of them fail.
const
internal
::
string
s1
=
listener1
.
str
();
const
internal
::
string
s2
=
listener2
.
str
();
const
std
::
string
s1
=
listener1
.
str
();
const
std
::
string
s2
=
listener2
.
str
();
if
(
s1
==
""
)
{
*
listener
<<
s2
;
...
...
@@ -2123,7 +2123,7 @@ class WhenDynamicCastToMatcherBase {
protected:
const
Matcher
<
To
>
matcher_
;
static
string
GetToName
()
{
static
std
::
string
GetToName
()
{
#if GTEST_HAS_RTTI
return
GetTypeName
<
To
>
();
#else // GTEST_HAS_RTTI
...
...
@@ -2953,7 +2953,7 @@ class KeyMatcherImpl : public MatcherInterface<PairType> {
StringMatchResultListener
inner_listener
;
const
bool
match
=
inner_matcher_
.
MatchAndExplain
(
key_value
.
first
,
&
inner_listener
);
const
internal
::
string
explanation
=
inner_listener
.
str
();
const
std
::
string
explanation
=
inner_listener
.
str
();
if
(
explanation
!=
""
)
{
*
listener
<<
"whose first field is a value "
<<
explanation
;
}
...
...
@@ -3058,8 +3058,8 @@ class PairMatcherImpl : public MatcherInterface<PairType> {
}
private:
void
ExplainSuccess
(
const
internal
::
string
&
first_explanation
,
const
internal
::
string
&
second_explanation
,
void
ExplainSuccess
(
const
std
::
string
&
first_explanation
,
const
std
::
string
&
second_explanation
,
MatchResultListener
*
listener
)
const
{
*
listener
<<
"whose both fields match"
;
if
(
first_explanation
!=
""
)
{
...
...
@@ -3166,7 +3166,7 @@ class ElementsAreMatcherImpl : public MatcherInterface<Container> {
const
bool
listener_interested
=
listener
->
IsInterested
();
// explanations[i] is the explanation of the element at index i.
::
std
::
vector
<
internal
::
string
>
explanations
(
count
());
::
std
::
vector
<
std
::
string
>
explanations
(
count
());
StlContainerReference
stl_container
=
View
::
ConstReference
(
container
);
typename
StlContainer
::
const_iterator
it
=
stl_container
.
begin
();
size_t
exam_pos
=
0
;
...
...
@@ -3225,7 +3225,7 @@ class ElementsAreMatcherImpl : public MatcherInterface<Container> {
if
(
listener_interested
)
{
bool
reason_printed
=
false
;
for
(
size_t
i
=
0
;
i
!=
count
();
++
i
)
{
const
internal
::
string
&
s
=
explanations
[
i
];
const
std
::
string
&
s
=
explanations
[
i
];
if
(
!
s
.
empty
())
{
if
(
reason_printed
)
{
*
listener
<<
",
\n
and "
;
...
...
@@ -3278,7 +3278,7 @@ class GTEST_API_ MatchMatrix {
void
Randomize
();
string
DebugString
()
const
;
std
::
string
DebugString
()
const
;
private:
size_t
SpaceIndex
(
size_t
ilhs
,
size_t
irhs
)
const
{
...
...
@@ -3322,9 +3322,8 @@ class GTEST_API_ UnorderedElementsAreMatcherImplBase {
void
DescribeNegationToImpl
(
::
std
::
ostream
*
os
)
const
;
bool
VerifyAllElementsAndMatchersAreMatched
(
const
::
std
::
vector
<
string
>&
element_printouts
,
const
MatchMatrix
&
matrix
,
MatchResultListener
*
listener
)
const
;
const
::
std
::
vector
<
std
::
string
>&
element_printouts
,
const
MatchMatrix
&
matrix
,
MatchResultListener
*
listener
)
const
;
MatcherDescriberVec
&
matcher_describers
()
{
return
matcher_describers_
;
...
...
@@ -3376,7 +3375,7 @@ class UnorderedElementsAreMatcherImpl
virtual
bool
MatchAndExplain
(
Container
container
,
MatchResultListener
*
listener
)
const
{
StlContainerReference
stl_container
=
View
::
ConstReference
(
container
);
::
std
::
vector
<
string
>
element_printouts
;
::
std
::
vector
<
std
::
string
>
element_printouts
;
MatchMatrix
matrix
=
AnalyzeElements
(
stl_container
.
begin
(),
stl_container
.
end
(),
&
element_printouts
,
...
...
@@ -3407,7 +3406,7 @@ class UnorderedElementsAreMatcherImpl
template
<
typename
ElementIter
>
MatchMatrix
AnalyzeElements
(
ElementIter
elem_first
,
ElementIter
elem_last
,
::
std
::
vector
<
string
>*
element_printouts
,
::
std
::
vector
<
std
::
string
>*
element_printouts
,
MatchResultListener
*
listener
)
const
{
element_printouts
->
clear
();
::
std
::
vector
<
char
>
did_match
;
...
...
@@ -3619,9 +3618,9 @@ BoundSecondMatcher<Tuple2Matcher, Second> MatcherBindSecond(
// 'negation' is false; otherwise returns the description of the
// negation of the matcher. 'param_values' contains a list of strings
// that are the print-out of the matcher's parameters.
GTEST_API_
string
FormatMatcherDescription
(
bool
negation
,
const
char
*
matcher_name
,
const
Strings
&
param_values
);
GTEST_API_
std
::
string
FormatMatcherDescription
(
bool
negation
,
const
char
*
matcher_name
,
const
Strings
&
param_values
);
}
// namespace internal
...
...
@@ -3951,53 +3950,52 @@ internal::ResultOfMatcher<Callable> ResultOf(
// String matchers.
// Matches a string equal to str.
inline
PolymorphicMatcher
<
internal
::
StrEqualityMatcher
<
internal
::
string
>
>
StrEq
(
const
internal
::
string
&
str
)
{
return
MakePolymorphicMatcher
(
internal
::
StrEqualityMatcher
<
internal
::
string
>
(
str
,
true
,
true
));
inline
PolymorphicMatcher
<
internal
::
StrEqualityMatcher
<
std
::
string
>
>
StrEq
(
const
std
::
string
&
str
)
{
return
MakePolymorphicMatcher
(
internal
::
StrEqualityMatcher
<
std
::
string
>
(
str
,
true
,
true
));
}
// Matches a string not equal to str.
inline
PolymorphicMatcher
<
internal
::
StrEqualityMatcher
<
internal
::
string
>
>
StrNe
(
const
internal
::
string
&
str
)
{
return
MakePolymorphicMatcher
(
internal
::
StrEqualityMatcher
<
internal
::
string
>
(
str
,
false
,
true
));
inline
PolymorphicMatcher
<
internal
::
StrEqualityMatcher
<
std
::
string
>
>
StrNe
(
const
std
::
string
&
str
)
{
return
MakePolymorphicMatcher
(
internal
::
StrEqualityMatcher
<
std
::
string
>
(
str
,
false
,
true
));
}
// Matches a string equal to str, ignoring case.
inline
PolymorphicMatcher
<
internal
::
StrEqualityMatcher
<
internal
::
string
>
>
StrCaseEq
(
const
internal
::
string
&
str
)
{
return
MakePolymorphicMatcher
(
internal
::
StrEqualityMatcher
<
internal
::
string
>
(
str
,
true
,
false
));
inline
PolymorphicMatcher
<
internal
::
StrEqualityMatcher
<
std
::
string
>
>
StrCaseEq
(
const
std
::
string
&
str
)
{
return
MakePolymorphicMatcher
(
internal
::
StrEqualityMatcher
<
std
::
string
>
(
str
,
true
,
false
));
}
// Matches a string not equal to str, ignoring case.
inline
PolymorphicMatcher
<
internal
::
StrEqualityMatcher
<
internal
::
string
>
>
StrCaseNe
(
const
internal
::
string
&
str
)
{
return
MakePolymorphicMatcher
(
internal
::
StrEqualityMatcher
<
internal
::
string
>
(
str
,
false
,
false
));
inline
PolymorphicMatcher
<
internal
::
StrEqualityMatcher
<
std
::
string
>
>
StrCaseNe
(
const
std
::
string
&
str
)
{
return
MakePolymorphicMatcher
(
internal
::
StrEqualityMatcher
<
std
::
string
>
(
str
,
false
,
false
));
}
// Creates a matcher that matches any string, std::string, or C string
// that contains the given substring.
inline
PolymorphicMatcher
<
internal
::
HasSubstrMatcher
<
internal
::
string
>
>
HasSubstr
(
const
internal
::
string
&
substring
)
{
return
MakePolymorphicMatcher
(
internal
::
HasSubstrMatcher
<
internal
::
string
>
(
substring
));
inline
PolymorphicMatcher
<
internal
::
HasSubstrMatcher
<
std
::
string
>
>
HasSubstr
(
const
std
::
string
&
substring
)
{
return
MakePolymorphicMatcher
(
internal
::
HasSubstrMatcher
<
std
::
string
>
(
substring
));
}
// Matches a string that starts with 'prefix' (case-sensitive).
inline
PolymorphicMatcher
<
internal
::
StartsWithMatcher
<
internal
::
string
>
>
StartsWith
(
const
internal
::
string
&
prefix
)
{
return
MakePolymorphicMatcher
(
internal
::
StartsWithMatcher
<
internal
::
string
>
(
prefix
));
inline
PolymorphicMatcher
<
internal
::
StartsWithMatcher
<
std
::
string
>
>
StartsWith
(
const
std
::
string
&
prefix
)
{
return
MakePolymorphicMatcher
(
internal
::
StartsWithMatcher
<
std
::
string
>
(
prefix
));
}
// Matches a string that ends with 'suffix' (case-sensitive).
inline
PolymorphicMatcher
<
internal
::
EndsWithMatcher
<
internal
::
string
>
>
EndsWith
(
const
internal
::
string
&
suffix
)
{
return
MakePolymorphicMatcher
(
internal
::
EndsWithMatcher
<
internal
::
string
>
(
suffix
));
inline
PolymorphicMatcher
<
internal
::
EndsWithMatcher
<
std
::
string
>
>
EndsWith
(
const
std
::
string
&
suffix
)
{
return
MakePolymorphicMatcher
(
internal
::
EndsWithMatcher
<
std
::
string
>
(
suffix
));
}
// Matches a string that fully matches regular expression 'regex'.
...
...
@@ -4007,7 +4005,7 @@ inline PolymorphicMatcher<internal::MatchesRegexMatcher> MatchesRegex(
return
MakePolymorphicMatcher
(
internal
::
MatchesRegexMatcher
(
regex
,
true
));
}
inline
PolymorphicMatcher
<
internal
::
MatchesRegexMatcher
>
MatchesRegex
(
const
internal
::
string
&
regex
)
{
const
std
::
string
&
regex
)
{
return
MatchesRegex
(
new
internal
::
RE
(
regex
));
}
...
...
@@ -4018,7 +4016,7 @@ inline PolymorphicMatcher<internal::MatchesRegexMatcher> ContainsRegex(
return
MakePolymorphicMatcher
(
internal
::
MatchesRegexMatcher
(
regex
,
false
));
}
inline
PolymorphicMatcher
<
internal
::
MatchesRegexMatcher
>
ContainsRegex
(
const
internal
::
string
&
regex
)
{
const
std
::
string
&
regex
)
{
return
ContainsRegex
(
new
internal
::
RE
(
regex
));
}
...
...
googlemock/include/gmock/gmock-spec-builders.h
View file @
7cc548dc
...
...
@@ -148,8 +148,7 @@ class GTEST_API_ UntypedFunctionMockerBase {
// action fails.
// L = *
virtual
UntypedActionResultHolderBase
*
UntypedPerformDefaultAction
(
const
void
*
untyped_args
,
const
string
&
call_description
)
const
=
0
;
const
void
*
untyped_args
,
const
std
::
string
&
call_description
)
const
=
0
;
// Performs the given action with the given arguments and returns
// the action's result.
...
...
@@ -263,12 +262,14 @@ class UntypedOnCallSpecBase {
};
// Asserts that the ON_CALL() statement has a certain property.
void
AssertSpecProperty
(
bool
property
,
const
string
&
failure_message
)
const
{
void
AssertSpecProperty
(
bool
property
,
const
std
::
string
&
failure_message
)
const
{
Assert
(
property
,
file_
,
line_
,
failure_message
);
}
// Expects that the ON_CALL() statement has a certain property.
void
ExpectSpecProperty
(
bool
property
,
const
string
&
failure_message
)
const
{
void
ExpectSpecProperty
(
bool
property
,
const
std
::
string
&
failure_message
)
const
{
Expect
(
property
,
file_
,
line_
,
failure_message
);
}
...
...
@@ -690,7 +691,7 @@ GTEST_API_ extern ThreadLocal<Sequence*> g_gmock_implicit_sequence;
class
GTEST_API_
ExpectationBase
{
public:
// source_text is the EXPECT_CALL(...) source that created this Expectation.
ExpectationBase
(
const
char
*
file
,
int
line
,
const
string
&
source_text
);
ExpectationBase
(
const
char
*
file
,
int
line
,
const
std
::
string
&
source_text
);
virtual
~
ExpectationBase
();
...
...
@@ -738,12 +739,14 @@ class GTEST_API_ ExpectationBase {
virtual
Expectation
GetHandle
()
=
0
;
// Asserts that the EXPECT_CALL() statement has the given property.
void
AssertSpecProperty
(
bool
property
,
const
string
&
failure_message
)
const
{
void
AssertSpecProperty
(
bool
property
,
const
std
::
string
&
failure_message
)
const
{
Assert
(
property
,
file_
,
line_
,
failure_message
);
}
// Expects that the EXPECT_CALL() statement has the given property.
void
ExpectSpecProperty
(
bool
property
,
const
string
&
failure_message
)
const
{
void
ExpectSpecProperty
(
bool
property
,
const
std
::
string
&
failure_message
)
const
{
Expect
(
property
,
file_
,
line_
,
failure_message
);
}
...
...
@@ -845,7 +848,7 @@ class GTEST_API_ ExpectationBase {
// an EXPECT_CALL() statement finishes.
const
char
*
file_
;
// The file that contains the expectation.
int
line_
;
// The line number of the expectation.
const
string
source_text_
;
// The EXPECT_CALL(...) source text.
const
std
::
string
source_text_
;
// The EXPECT_CALL(...) source text.
// True iff the cardinality is specified explicitly.
bool
cardinality_specified_
;
Cardinality
cardinality_
;
// The cardinality of the expectation.
...
...
@@ -880,8 +883,8 @@ class TypedExpectation : public ExpectationBase {
typedef
typename
Function
<
F
>::
ArgumentMatcherTuple
ArgumentMatcherTuple
;
typedef
typename
Function
<
F
>::
Result
Result
;
TypedExpectation
(
FunctionMockerBase
<
F
>*
owner
,
const
char
*
a_file
,
int
a_line
,
const
string
&
a_source_text
,
TypedExpectation
(
FunctionMockerBase
<
F
>*
owner
,
const
char
*
a_file
,
int
a_line
,
const
std
::
string
&
a_source_text
,
const
ArgumentMatcherTuple
&
m
)
:
ExpectationBase
(
a_file
,
a_line
,
a_source_text
),
owner_
(
owner
),
...
...
@@ -1240,7 +1243,7 @@ class TypedExpectation : public ExpectationBase {
// Logs a message including file and line number information.
GTEST_API_
void
LogWithLocation
(
testing
::
internal
::
LogSeverity
severity
,
const
char
*
file
,
int
line
,
const
string
&
message
);
const
std
::
string
&
message
);
template
<
typename
F
>
class
MockSpec
{
...
...
@@ -1259,7 +1262,7 @@ class MockSpec {
internal
::
OnCallSpec
<
F
>&
InternalDefaultActionSetAt
(
const
char
*
file
,
int
line
,
const
char
*
obj
,
const
char
*
call
)
{
LogWithLocation
(
internal
::
kInfo
,
file
,
line
,
string
(
"ON_CALL("
)
+
obj
+
", "
+
call
+
") invoked"
);
std
::
string
(
"ON_CALL("
)
+
obj
+
", "
+
call
+
") invoked"
);
return
function_mocker_
->
AddNewOnCallSpec
(
file
,
line
,
matchers_
);
}
...
...
@@ -1267,7 +1270,8 @@ class MockSpec {
// the newly created spec.
internal
::
TypedExpectation
<
F
>&
InternalExpectedAt
(
const
char
*
file
,
int
line
,
const
char
*
obj
,
const
char
*
call
)
{
const
string
source_text
(
string
(
"EXPECT_CALL("
)
+
obj
+
", "
+
call
+
")"
);
const
std
::
string
source_text
(
std
::
string
(
"EXPECT_CALL("
)
+
obj
+
", "
+
call
+
")"
);
LogWithLocation
(
internal
::
kInfo
,
file
,
line
,
source_text
+
" invoked"
);
return
function_mocker_
->
AddNewExpectation
(
file
,
line
,
source_text
,
matchers_
);
...
...
@@ -1389,7 +1393,7 @@ class ActionResultHolder : public UntypedActionResultHolderBase {
static
ActionResultHolder
*
PerformDefaultAction
(
const
FunctionMockerBase
<
F
>*
func_mocker
,
const
typename
Function
<
F
>::
ArgumentTuple
&
args
,
const
string
&
call_description
)
{
const
std
::
string
&
call_description
)
{
return
new
ActionResultHolder
(
Wrapper
(
func_mocker
->
PerformDefaultAction
(
args
,
call_description
)));
}
...
...
@@ -1429,7 +1433,7 @@ class ActionResultHolder<void> : public UntypedActionResultHolderBase {
static
ActionResultHolder
*
PerformDefaultAction
(
const
FunctionMockerBase
<
F
>*
func_mocker
,
const
typename
Function
<
F
>::
ArgumentTuple
&
args
,
const
string
&
call_description
)
{
const
std
::
string
&
call_description
)
{
func_mocker
->
PerformDefaultAction
(
args
,
call_description
);
return
new
ActionResultHolder
;
}
...
...
@@ -1496,13 +1500,14 @@ class FunctionMockerBase : public UntypedFunctionMockerBase {
// without locking.
// L = *
Result
PerformDefaultAction
(
const
ArgumentTuple
&
args
,
const
string
&
call_description
)
const
{
const
std
::
string
&
call_description
)
const
{
const
OnCallSpec
<
F
>*
const
spec
=
this
->
FindOnCallSpec
(
args
);
if
(
spec
!=
NULL
)
{
return
spec
->
GetAction
().
Perform
(
args
);
}
const
string
message
=
call_description
+
const
std
::
string
message
=
call_description
+
"
\n
The mock function has no default action "
"set, and its return type has no default value set."
;
#if GTEST_HAS_EXCEPTIONS
...
...
@@ -1522,7 +1527,7 @@ class FunctionMockerBase : public UntypedFunctionMockerBase {
// L = *
virtual
UntypedActionResultHolderBase
*
UntypedPerformDefaultAction
(
const
void
*
untyped_args
,
// must point to an ArgumentTuple
const
string
&
call_description
)
const
{
const
std
::
string
&
call_description
)
const
{
const
ArgumentTuple
&
args
=
*
static_cast
<
const
ArgumentTuple
*>
(
untyped_args
);
return
ResultHolder
::
PerformDefaultAction
(
this
,
args
,
call_description
);
...
...
@@ -1598,12 +1603,10 @@ class FunctionMockerBase : public UntypedFunctionMockerBase {
}
// Adds and returns an expectation spec for this mock function.
TypedExpectation
<
F
>&
AddNewExpectation
(
const
char
*
file
,
int
line
,
const
string
&
source_text
,
const
ArgumentMatcherTuple
&
m
)
GTEST_LOCK_EXCLUDED_
(
g_gmock_mutex
)
{
TypedExpectation
<
F
>&
AddNewExpectation
(
const
char
*
file
,
int
line
,
const
std
::
string
&
source_text
,
const
ArgumentMatcherTuple
&
m
)
GTEST_LOCK_EXCLUDED_
(
g_gmock_mutex
)
{
Mock
::
RegisterUseByOnCallOrExpectCall
(
MockObject
(),
file
,
line
);
TypedExpectation
<
F
>*
const
expectation
=
new
TypedExpectation
<
F
>
(
this
,
file
,
line
,
source_text
,
m
);
...
...
@@ -1796,7 +1799,7 @@ class FunctionMockerBase : public UntypedFunctionMockerBase {
// Reports an uninteresting call (whose description is in msg) in the
// manner specified by 'reaction'.
void
ReportUninterestingCall
(
CallReaction
reaction
,
const
string
&
msg
);
void
ReportUninterestingCall
(
CallReaction
reaction
,
const
std
::
string
&
msg
);
}
// namespace internal
...
...
googlemock/include/gmock/internal/gmock-internal-utils.h
View file @
7cc548dc
...
...
@@ -267,7 +267,7 @@ class FailureReporterInterface {
// Reports a failure that occurred at the given source file location.
virtual
void
ReportFailure
(
FailureType
type
,
const
char
*
file
,
int
line
,
const
string
&
message
)
=
0
;
const
std
::
string
&
message
)
=
0
;
};
// Returns the failure reporter used by Google Mock.
...
...
@@ -279,7 +279,7 @@ GTEST_API_ FailureReporterInterface* GetFailureReporter();
// inline this function to prevent it from showing up in the stack
// trace.
inline
void
Assert
(
bool
condition
,
const
char
*
file
,
int
line
,
const
string
&
msg
)
{
const
std
::
string
&
msg
)
{
if
(
!
condition
)
{
GetFailureReporter
()
->
ReportFailure
(
FailureReporterInterface
::
kFatal
,
file
,
line
,
msg
);
...
...
@@ -292,7 +292,7 @@ inline void Assert(bool condition, const char* file, int line) {
// Verifies that condition is true; generates a non-fatal failure if
// condition is false.
inline
void
Expect
(
bool
condition
,
const
char
*
file
,
int
line
,
const
string
&
msg
)
{
const
std
::
string
&
msg
)
{
if
(
!
condition
)
{
GetFailureReporter
()
->
ReportFailure
(
FailureReporterInterface
::
kNonfatal
,
file
,
line
,
msg
);
...
...
@@ -328,8 +328,7 @@ GTEST_API_ bool LogIsVisible(LogSeverity severity);
// stack_frames_to_skip is treated as 0, since we don't know which
// function calls will be inlined by the compiler and need to be
// conservative.
GTEST_API_
void
Log
(
LogSeverity
severity
,
const
string
&
message
,
GTEST_API_
void
Log
(
LogSeverity
severity
,
const
std
::
string
&
message
,
int
stack_frames_to_skip
);
// TODO(wan@google.com): group all type utilities together.
...
...
googlemock/src/gmock-cardinalities.cc
View file @
7cc548dc
...
...
@@ -92,7 +92,7 @@ class BetweenCardinalityImpl : public CardinalityInterface {
};
// Formats "n times" in a human-friendly way.
inline
internal
::
string
FormatTimes
(
int
n
)
{
inline
std
::
string
FormatTimes
(
int
n
)
{
if
(
n
==
1
)
{
return
"once"
;
}
else
if
(
n
==
2
)
{
...
...
googlemock/src/gmock-internal-utils.cc
View file @
7cc548dc
...
...
@@ -76,7 +76,7 @@ GTEST_API_ string ConvertIdentifierNameToWords(const char* id_name) {
class
GoogleTestFailureReporter
:
public
FailureReporterInterface
{
public:
virtual
void
ReportFailure
(
FailureType
type
,
const
char
*
file
,
int
line
,
const
string
&
message
)
{
const
std
::
string
&
message
)
{
AssertHelper
(
type
==
kFatal
?
TestPartResult
::
kFatalFailure
:
TestPartResult
::
kNonFatalFailure
,
...
...
@@ -128,8 +128,7 @@ GTEST_API_ bool LogIsVisible(LogSeverity severity) {
// stack_frames_to_skip is treated as 0, since we don't know which
// function calls will be inlined by the compiler and need to be
// conservative.
GTEST_API_
void
Log
(
LogSeverity
severity
,
const
string
&
message
,
GTEST_API_
void
Log
(
LogSeverity
severity
,
const
std
::
string
&
message
,
int
stack_frames_to_skip
)
{
if
(
!
LogIsVisible
(
severity
))
return
;
...
...
googlemock/src/gmock-matchers.cc
View file @
7cc548dc
...
...
@@ -379,7 +379,7 @@ void MatchMatrix::Randomize() {
}
}
string
MatchMatrix
::
DebugString
()
const
{
std
::
string
MatchMatrix
::
DebugString
()
const
{
::
std
::
stringstream
ss
;
const
char
*
sep
=
""
;
for
(
size_t
i
=
0
;
i
<
LhsSize
();
++
i
)
{
...
...
@@ -441,10 +441,9 @@ void UnorderedElementsAreMatcherImplBase::DescribeNegationToImpl(
// Returns false, writing an explanation to 'listener', if and only
// if the success criteria are not met.
bool
UnorderedElementsAreMatcherImplBase
::
VerifyAllElementsAndMatchersAreMatched
(
const
::
std
::
vector
<
string
>&
element_printouts
,
const
MatchMatrix
&
matrix
,
MatchResultListener
*
listener
)
const
{
VerifyAllElementsAndMatchersAreMatched
(
const
::
std
::
vector
<
std
::
string
>&
element_printouts
,
const
MatchMatrix
&
matrix
,
MatchResultListener
*
listener
)
const
{
bool
result
=
true
;
::
std
::
vector
<
char
>
element_matched
(
matrix
.
LhsSize
(),
0
);
::
std
::
vector
<
char
>
matcher_matched
(
matrix
.
RhsSize
(),
0
);
...
...
googlemock/src/gmock-spec-builders.cc
View file @
7cc548dc
...
...
@@ -58,16 +58,15 @@ GTEST_API_ GTEST_DEFINE_STATIC_MUTEX_(g_gmock_mutex);
// Logs a message including file and line number information.
GTEST_API_
void
LogWithLocation
(
testing
::
internal
::
LogSeverity
severity
,
const
char
*
file
,
int
line
,
const
string
&
message
)
{
const
std
::
string
&
message
)
{
::
std
::
ostringstream
s
;
s
<<
file
<<
":"
<<
line
<<
": "
<<
message
<<
::
std
::
endl
;
Log
(
severity
,
s
.
str
(),
0
);
}
// Constructs an ExpectationBase object.
ExpectationBase
::
ExpectationBase
(
const
char
*
a_file
,
int
a_line
,
const
string
&
a_source_text
)
ExpectationBase
::
ExpectationBase
(
const
char
*
a_file
,
int
a_line
,
const
std
::
string
&
a_source_text
)
:
file_
(
a_file
),
line_
(
a_line
),
source_text_
(
a_source_text
),
...
...
@@ -244,7 +243,7 @@ GTEST_API_ ThreadLocal<Sequence*> g_gmock_implicit_sequence;
// Reports an uninteresting call (whose description is in msg) in the
// manner specified by 'reaction'.
void
ReportUninterestingCall
(
CallReaction
reaction
,
const
string
&
msg
)
{
void
ReportUninterestingCall
(
CallReaction
reaction
,
const
std
::
string
&
msg
)
{
// Include a stack trace only if --gmock_verbose=info is specified.
const
int
stack_frames_to_skip
=
GMOCK_FLAG
(
verbose
)
==
kInfoVerbosity
?
3
:
-
1
;
...
...
googlemock/test/gmock-generated-actions_test.cc
View file @
7cc548dc
...
...
@@ -81,12 +81,12 @@ bool Unary(int x) { return x < 0; }
const
char
*
Plus1
(
const
char
*
s
)
{
return
s
+
1
;
}
bool
ByConstRef
(
const
string
&
s
)
{
return
s
==
"Hi"
;
}
bool
ByConstRef
(
const
std
::
string
&
s
)
{
return
s
==
"Hi"
;
}
const
double
g_double
=
0
;
bool
ReferencesGlobalDouble
(
const
double
&
x
)
{
return
&
x
==
&
g_double
;
}
string
ByNonConstRef
(
string
&
s
)
{
return
s
+=
"+"
;
}
// NOLINT
std
::
string
ByNonConstRef
(
std
::
string
&
s
)
{
return
s
+=
"+"
;
}
// NOLINT
struct
UnaryFunctor
{
int
operator
()(
bool
x
)
{
return
x
?
1
:
-
1
;
}
...
...
@@ -102,9 +102,9 @@ void VoidTernary(int, char, bool) { g_done = true; }
int
SumOf4
(
int
a
,
int
b
,
int
c
,
int
d
)
{
return
a
+
b
+
c
+
d
;
}
string
Concat4
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
)
{
return
string
(
s1
)
+
s2
+
s3
+
s4
;
std
::
string
Concat4
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
)
{
return
std
::
string
(
s1
)
+
s2
+
s3
+
s4
;
}
int
SumOf5
(
int
a
,
int
b
,
int
c
,
int
d
,
int
e
)
{
return
a
+
b
+
c
+
d
+
e
;
}
...
...
@@ -115,9 +115,9 @@ struct SumOf5Functor {
}
};
string
Concat5
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
)
{
return
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
;
std
::
string
Concat5
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
)
{
return
std
::
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
;
}
int
SumOf6
(
int
a
,
int
b
,
int
c
,
int
d
,
int
e
,
int
f
)
{
...
...
@@ -130,34 +130,34 @@ struct SumOf6Functor {
}
};
string
Concat6
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
)
{
return
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
;
std
::
string
Concat6
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
)
{
return
std
::
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
;
}
string
Concat7
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
)
{
return
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
;
std
::
string
Concat7
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
)
{
return
std
::
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
;
}
string
Concat8
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
,
const
char
*
s8
)
{
return
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
+
s8
;
std
::
string
Concat8
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
,
const
char
*
s8
)
{
return
std
::
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
+
s8
;
}
string
Concat9
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
,
const
char
*
s8
,
const
char
*
s9
)
{
return
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
+
s8
+
s9
;
std
::
string
Concat9
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
,
const
char
*
s8
,
const
char
*
s9
)
{
return
std
::
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
+
s8
+
s9
;
}
string
Concat10
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
,
const
char
*
s8
,
const
char
*
s9
,
const
char
*
s10
)
{
return
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
+
s8
+
s9
+
s10
;
std
::
string
Concat10
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
,
const
char
*
s8
,
const
char
*
s9
,
const
char
*
s10
)
{
return
std
::
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
+
s8
+
s9
+
s10
;
}
// A helper that turns the type of a C-string literal from const
...
...
@@ -208,38 +208,37 @@ TEST(InvokeArgumentTest, Functor6) {
// Tests using InvokeArgument with a 7-ary function.
TEST
(
InvokeArgumentTest
,
Function7
)
{
Action
<
st
ring
(
string
(
*
)(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
))
>
a
=
InvokeArgument
<
0
>
(
"1"
,
"2"
,
"3"
,
"4"
,
"5"
,
"6"
,
"7"
);
Action
<
st
d
::
string
(
std
::
string
(
*
)(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
))
>
a
=
InvokeArgument
<
0
>
(
"1"
,
"2"
,
"3"
,
"4"
,
"5"
,
"6"
,
"7"
);
EXPECT_EQ
(
"1234567"
,
a
.
Perform
(
make_tuple
(
&
Concat7
)));
}
// Tests using InvokeArgument with a 8-ary function.
TEST
(
InvokeArgumentTest
,
Function8
)
{
Action
<
st
ring
(
string
(
*
)(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
))
>
a
=
InvokeArgument
<
0
>
(
"1"
,
"2"
,
"3"
,
"4"
,
"5"
,
"6"
,
"7"
,
"8"
);
Action
<
st
d
::
string
(
std
::
string
(
*
)(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
))
>
a
=
InvokeArgument
<
0
>
(
"1"
,
"2"
,
"3"
,
"4"
,
"5"
,
"6"
,
"7"
,
"8"
);
EXPECT_EQ
(
"12345678"
,
a
.
Perform
(
make_tuple
(
&
Concat8
)));
}
// Tests using InvokeArgument with a 9-ary function.
TEST
(
InvokeArgumentTest
,
Function9
)
{
Action
<
st
ring
(
string
(
*
)(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
))
>
a
=
InvokeArgument
<
0
>
(
"1"
,
"2"
,
"3"
,
"4"
,
"5"
,
"6"
,
"7"
,
"8"
,
"9"
);
Action
<
st
d
::
string
(
std
::
string
(
*
)(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
))
>
a
=
InvokeArgument
<
0
>
(
"1"
,
"2"
,
"3"
,
"4"
,
"5"
,
"6"
,
"7"
,
"8"
,
"9"
);
EXPECT_EQ
(
"123456789"
,
a
.
Perform
(
make_tuple
(
&
Concat9
)));
}
// Tests using InvokeArgument with a 10-ary function.
TEST
(
InvokeArgumentTest
,
Function10
)
{
Action
<
string
(
string
(
*
)(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
))
>
a
=
InvokeArgument
<
0
>
(
"1"
,
"2"
,
"3"
,
"4"
,
"5"
,
"6"
,
"7"
,
"8"
,
"9"
,
"0"
);
Action
<
std
::
string
(
std
::
string
(
*
)(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
))
>
a
=
InvokeArgument
<
0
>
(
"1"
,
"2"
,
"3"
,
"4"
,
"5"
,
"6"
,
"7"
,
"8"
,
"9"
,
"0"
);
EXPECT_EQ
(
"1234567890"
,
a
.
Perform
(
make_tuple
(
&
Concat10
)));
}
...
...
@@ -260,8 +259,8 @@ TEST(InvokeArgumentTest, FunctionWithCStringLiteral) {
// Tests using InvokeArgument with a function that takes a const reference.
TEST
(
InvokeArgumentTest
,
ByConstReferenceFunction
)
{
Action
<
bool
(
bool
(
*
function
)(
const
string
&
s
))
>
a
=
// NOLINT
InvokeArgument
<
0
>
(
string
(
"Hi"
));
Action
<
bool
(
bool
(
*
function
)(
const
std
::
string
&
s
))
>
a
=
// NOLINT
InvokeArgument
<
0
>
(
std
::
string
(
"Hi"
));
// When action 'a' is constructed, it makes a copy of the temporary
// string object passed to it, so it's OK to use 'a' later, when the
// temporary object has already died.
...
...
@@ -305,17 +304,18 @@ TEST(WithArgsTest, ThreeArgs) {
// Tests using WithArgs with an action that takes 4 arguments.
TEST
(
WithArgsTest
,
FourArgs
)
{
Action
<
string
(
const
char
*
,
const
char
*
,
double
,
const
char
*
,
const
char
*
)
>
a
=
WithArgs
<
4
,
3
,
1
,
0
>
(
Invoke
(
Concat4
));
Action
<
std
::
string
(
const
char
*
,
const
char
*
,
double
,
const
char
*
,
const
char
*
)
>
a
=
WithArgs
<
4
,
3
,
1
,
0
>
(
Invoke
(
Concat4
));
EXPECT_EQ
(
"4310"
,
a
.
Perform
(
make_tuple
(
CharPtr
(
"0"
),
CharPtr
(
"1"
),
2.5
,
CharPtr
(
"3"
),
CharPtr
(
"4"
))));
}
// Tests using WithArgs with an action that takes 5 arguments.
TEST
(
WithArgsTest
,
FiveArgs
)
{
Action
<
st
ring
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
WithArgs
<
4
,
3
,
2
,
1
,
0
>
(
Invoke
(
Concat5
));
Action
<
st
d
::
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
WithArgs
<
4
,
3
,
2
,
1
,
0
>
(
Invoke
(
Concat5
));
EXPECT_EQ
(
"43210"
,
a
.
Perform
(
make_tuple
(
CharPtr
(
"0"
),
CharPtr
(
"1"
),
CharPtr
(
"2"
),
CharPtr
(
"3"
),
CharPtr
(
"4"
))));
...
...
@@ -323,7 +323,7 @@ TEST(WithArgsTest, FiveArgs) {
// Tests using WithArgs with an action that takes 6 arguments.
TEST
(
WithArgsTest
,
SixArgs
)
{
Action
<
string
(
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
Action
<
std
::
string
(
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
WithArgs
<
0
,
1
,
2
,
2
,
1
,
0
>
(
Invoke
(
Concat6
));
EXPECT_EQ
(
"012210"
,
a
.
Perform
(
make_tuple
(
CharPtr
(
"0"
),
CharPtr
(
"1"
),
CharPtr
(
"2"
))));
...
...
@@ -331,7 +331,7 @@ TEST(WithArgsTest, SixArgs) {
// Tests using WithArgs with an action that takes 7 arguments.
TEST
(
WithArgsTest
,
SevenArgs
)
{
Action
<
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
Action
<
std
::
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
WithArgs
<
0
,
1
,
2
,
3
,
2
,
1
,
0
>
(
Invoke
(
Concat7
));
EXPECT_EQ
(
"0123210"
,
a
.
Perform
(
make_tuple
(
CharPtr
(
"0"
),
CharPtr
(
"1"
),
CharPtr
(
"2"
),
...
...
@@ -340,7 +340,7 @@ TEST(WithArgsTest, SevenArgs) {
// Tests using WithArgs with an action that takes 8 arguments.
TEST
(
WithArgsTest
,
EightArgs
)
{
Action
<
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
Action
<
std
::
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
WithArgs
<
0
,
1
,
2
,
3
,
0
,
1
,
2
,
3
>
(
Invoke
(
Concat8
));
EXPECT_EQ
(
"01230123"
,
a
.
Perform
(
make_tuple
(
CharPtr
(
"0"
),
CharPtr
(
"1"
),
CharPtr
(
"2"
),
...
...
@@ -349,7 +349,7 @@ TEST(WithArgsTest, EightArgs) {
// Tests using WithArgs with an action that takes 9 arguments.
TEST
(
WithArgsTest
,
NineArgs
)
{
Action
<
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
Action
<
std
::
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
WithArgs
<
0
,
1
,
2
,
3
,
1
,
2
,
3
,
2
,
3
>
(
Invoke
(
Concat9
));
EXPECT_EQ
(
"012312323"
,
a
.
Perform
(
make_tuple
(
CharPtr
(
"0"
),
CharPtr
(
"1"
),
CharPtr
(
"2"
),
...
...
@@ -358,7 +358,7 @@ TEST(WithArgsTest, NineArgs) {
// Tests using WithArgs with an action that takes 10 arguments.
TEST
(
WithArgsTest
,
TenArgs
)
{
Action
<
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
Action
<
std
::
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
WithArgs
<
0
,
1
,
2
,
3
,
2
,
1
,
0
,
1
,
2
,
3
>
(
Invoke
(
Concat10
));
EXPECT_EQ
(
"0123210123"
,
a
.
Perform
(
make_tuple
(
CharPtr
(
"0"
),
CharPtr
(
"1"
),
CharPtr
(
"2"
),
...
...
googlemock/test/gmock-generated-function-mockers_test.cc
View file @
7cc548dc
...
...
@@ -57,7 +57,6 @@
namespace
testing
{
namespace
gmock_generated_function_mockers_test
{
using
testing
::
internal
::
string
;
using
testing
::
_
;
using
testing
::
A
;
using
testing
::
An
;
...
...
@@ -82,11 +81,11 @@ class FooInterface {
virtual
bool
Unary
(
int
x
)
=
0
;
virtual
long
Binary
(
short
x
,
int
y
)
=
0
;
// NOLINT
virtual
int
Decimal
(
bool
b
,
char
c
,
short
d
,
int
e
,
long
f
,
// NOLINT
float
g
,
double
h
,
unsigned
i
,
char
*
j
,
const
string
&
k
)
=
0
;
float
g
,
double
h
,
unsigned
i
,
char
*
j
,
const
std
::
string
&
k
)
=
0
;
virtual
bool
TakesNonConstReference
(
int
&
n
)
=
0
;
// NOLINT
virtual
string
TakesConstReference
(
const
int
&
n
)
=
0
;
virtual
std
::
string
TakesConstReference
(
const
int
&
n
)
=
0
;
#ifdef GMOCK_ALLOWS_CONST_PARAM_FUNCTIONS
virtual
bool
TakesConst
(
const
int
x
)
=
0
;
#endif // GMOCK_ALLOWS_CONST_PARAM_FUNCTIONS
...
...
@@ -101,13 +100,14 @@ class FooInterface {
virtual
char
OverloadedOnConstness
()
const
=
0
;
virtual
int
TypeWithHole
(
int
(
*
func
)())
=
0
;
virtual
int
TypeWithComma
(
const
std
::
map
<
int
,
string
>&
a_map
)
=
0
;
virtual
int
TypeWithComma
(
const
std
::
map
<
int
,
std
::
string
>&
a_map
)
=
0
;
#if GTEST_OS_WINDOWS
STDMETHOD_
(
int
,
CTNullary
)()
=
0
;
STDMETHOD_
(
bool
,
CTUnary
)(
int
x
)
=
0
;
STDMETHOD_
(
int
,
CTDecimal
)(
bool
b
,
char
c
,
short
d
,
int
e
,
long
f
,
// NOLINT
float
g
,
double
h
,
unsigned
i
,
char
*
j
,
const
string
&
k
)
=
0
;
STDMETHOD_
(
int
,
CTDecimal
)
(
bool
b
,
char
c
,
short
d
,
int
e
,
long
f
,
// NOLINT
float
g
,
double
h
,
unsigned
i
,
char
*
j
,
const
std
::
string
&
k
)
=
0
;
STDMETHOD_
(
char
,
CTConst
)(
int
x
)
const
=
0
;
#endif // GTEST_OS_WINDOWS
};
...
...
@@ -133,19 +133,19 @@ class MockFoo : public FooInterface {
MOCK_METHOD1
(
Unary
,
bool
(
int
));
// NOLINT
MOCK_METHOD2
(
Binary
,
long
(
short
,
int
));
// NOLINT
MOCK_METHOD10
(
Decimal
,
int
(
bool
,
char
,
short
,
int
,
long
,
float
,
// NOLINT
double
,
unsigned
,
char
*
,
const
string
&
str
));
double
,
unsigned
,
char
*
,
const
std
::
string
&
str
));
MOCK_METHOD1
(
TakesNonConstReference
,
bool
(
int
&
));
// NOLINT
MOCK_METHOD1
(
TakesConstReference
,
string
(
const
int
&
));
MOCK_METHOD1
(
TakesConstReference
,
std
::
string
(
const
int
&
));
#ifdef GMOCK_ALLOWS_CONST_PARAM_FUNCTIONS
MOCK_METHOD1
(
TakesConst
,
bool
(
const
int
));
// NOLINT
#endif
// Tests that the function return type can contain unprotected comma.
MOCK_METHOD0
(
ReturnTypeWithComma
,
std
::
map
<
int
,
string
>
());
MOCK_METHOD0
(
ReturnTypeWithComma
,
std
::
map
<
int
,
std
::
string
>
());
MOCK_CONST_METHOD1
(
ReturnTypeWithComma
,
std
::
map
<
int
,
string
>
(
int
));
// NOLINT
std
::
map
<
int
,
std
::
string
>
(
int
));
// NOLINT
MOCK_METHOD0
(
OverloadedOnArgumentNumber
,
int
());
// NOLINT
MOCK_METHOD1
(
OverloadedOnArgumentNumber
,
int
(
int
));
// NOLINT
...
...
@@ -157,19 +157,21 @@ class MockFoo : public FooInterface {
MOCK_CONST_METHOD0
(
OverloadedOnConstness
,
char
());
// NOLINT
MOCK_METHOD1
(
TypeWithHole
,
int
(
int
(
*
)()));
// NOLINT
MOCK_METHOD1
(
TypeWithComma
,
int
(
const
std
::
map
<
int
,
string
>&
));
// NOLINT
MOCK_METHOD1
(
TypeWithComma
,
int
(
const
std
::
map
<
int
,
std
::
string
>&
));
// NOLINT
#if GTEST_OS_WINDOWS
MOCK_METHOD0_WITH_CALLTYPE
(
STDMETHODCALLTYPE
,
CTNullary
,
int
());
MOCK_METHOD1_WITH_CALLTYPE
(
STDMETHODCALLTYPE
,
CTUnary
,
bool
(
int
));
MOCK_METHOD10_WITH_CALLTYPE
(
STDMETHODCALLTYPE
,
CTDecimal
,
int
(
bool
b
,
char
c
,
short
d
,
int
e
,
long
f
,
float
g
,
double
h
,
unsigned
i
,
char
*
j
,
const
string
&
k
));
MOCK_METHOD10_WITH_CALLTYPE
(
STDMETHODCALLTYPE
,
CTDecimal
,
int
(
bool
b
,
char
c
,
short
d
,
int
e
,
long
f
,
float
g
,
double
h
,
unsigned
i
,
char
*
j
,
const
std
::
string
&
k
));
MOCK_CONST_METHOD1_WITH_CALLTYPE
(
STDMETHODCALLTYPE
,
CTConst
,
char
(
int
));
// Tests that the function return type can contain unprotected comma.
MOCK_METHOD0_WITH_CALLTYPE
(
STDMETHODCALLTYPE
,
CTReturnTypeWithComma
,
std
::
map
<
int
,
string
>
());
std
::
map
<
int
,
std
::
string
>
());
#endif // GTEST_OS_WINDOWS
private:
...
...
@@ -291,7 +293,7 @@ TEST_F(FunctionMockerTest, MocksFunctionsOverloadedOnConstnessOfThis) {
}
TEST_F
(
FunctionMockerTest
,
MocksReturnTypeWithComma
)
{
const
std
::
map
<
int
,
string
>
a_map
;
const
std
::
map
<
int
,
std
::
string
>
a_map
;
EXPECT_CALL
(
mock_foo_
,
ReturnTypeWithComma
())
.
WillOnce
(
Return
(
a_map
));
EXPECT_CALL
(
mock_foo_
,
ReturnTypeWithComma
(
42
))
...
...
@@ -341,7 +343,7 @@ TEST_F(FunctionMockerTest, MocksFunctionsConstFunctionWithCallType) {
}
TEST_F
(
FunctionMockerTest
,
MocksReturnTypeWithCommaAndCallType
)
{
const
std
::
map
<
int
,
string
>
a_map
;
const
std
::
map
<
int
,
std
::
string
>
a_map
;
EXPECT_CALL
(
mock_foo_
,
CTReturnTypeWithComma
())
.
WillOnce
(
Return
(
a_map
));
...
...
googlemock/test/gmock-generated-matchers_test.cc
View file @
7cc548dc
...
...
@@ -79,11 +79,10 @@ using testing::StaticAssertTypeEq;
using
testing
::
StrEq
;
using
testing
::
Value
;
using
testing
::
internal
::
ElementsAreArrayMatcher
;
using
testing
::
internal
::
string
;
// Returns the description of the given matcher.
template
<
typename
T
>
string
Describe
(
const
Matcher
<
T
>&
m
)
{
std
::
string
Describe
(
const
Matcher
<
T
>&
m
)
{
stringstream
ss
;
m
.
DescribeTo
(
&
ss
);
return
ss
.
str
();
...
...
@@ -91,7 +90,7 @@ string Describe(const Matcher<T>& m) {
// Returns the description of the negation of the given matcher.
template
<
typename
T
>
string
DescribeNegation
(
const
Matcher
<
T
>&
m
)
{
std
::
string
DescribeNegation
(
const
Matcher
<
T
>&
m
)
{
stringstream
ss
;
m
.
DescribeNegationTo
(
&
ss
);
return
ss
.
str
();
...
...
@@ -99,7 +98,7 @@ string DescribeNegation(const Matcher<T>& m) {
// Returns the reason why x matches, or doesn't match, m.
template
<
typename
MatcherType
,
typename
Value
>
string
Explain
(
const
MatcherType
&
m
,
const
Value
&
x
)
{
std
::
string
Explain
(
const
MatcherType
&
m
,
const
Value
&
x
)
{
stringstream
ss
;
m
.
ExplainMatchResultTo
(
x
,
&
ss
);
return
ss
.
str
();
...
...
@@ -296,7 +295,7 @@ TEST(ElementsAreTest, CanDescribeExpectingOneElement) {
}
TEST
(
ElementsAreTest
,
CanDescribeExpectingManyElements
)
{
Matcher
<
list
<
string
>
>
m
=
ElementsAre
(
StrEq
(
"one"
),
"two"
);
Matcher
<
list
<
std
::
string
>
>
m
=
ElementsAre
(
StrEq
(
"one"
),
"two"
);
EXPECT_EQ
(
"has 2 elements where
\n
"
"element #0 is equal to
\"
one
\"
,
\n
"
"element #1 is equal to
\"
two
\"
"
,
Describe
(
m
));
...
...
@@ -314,7 +313,7 @@ TEST(ElementsAreTest, CanDescribeNegationOfExpectingOneElment) {
}
TEST
(
ElementsAreTest
,
CanDescribeNegationOfExpectingManyElements
)
{
Matcher
<
const
list
<
string
>&
>
m
=
ElementsAre
(
"one"
,
"two"
);
Matcher
<
const
list
<
std
::
string
>&>
m
=
ElementsAre
(
"one"
,
"two"
);
EXPECT_EQ
(
"doesn't have 2 elements, or
\n
"
"element #0 isn't equal to
\"
one
\"
, or
\n
"
"element #1 isn't equal to
\"
two
\"
"
,
DescribeNegation
(
m
));
...
...
@@ -365,21 +364,21 @@ TEST(ElementsAreTest, CanExplainMismatchRightSize) {
}
TEST
(
ElementsAreTest
,
MatchesOneElementVector
)
{
vector
<
string
>
test_vector
;
vector
<
std
::
string
>
test_vector
;
test_vector
.
push_back
(
"test string"
);
EXPECT_THAT
(
test_vector
,
ElementsAre
(
StrEq
(
"test string"
)));
}
TEST
(
ElementsAreTest
,
MatchesOneElementList
)
{
list
<
string
>
test_list
;
list
<
std
::
string
>
test_list
;
test_list
.
push_back
(
"test string"
);
EXPECT_THAT
(
test_list
,
ElementsAre
(
"test string"
));
}
TEST
(
ElementsAreTest
,
MatchesThreeElementVector
)
{
vector
<
string
>
test_vector
;
vector
<
std
::
string
>
test_vector
;
test_vector
.
push_back
(
"one"
);
test_vector
.
push_back
(
"two"
);
test_vector
.
push_back
(
"three"
);
...
...
@@ -428,30 +427,30 @@ TEST(ElementsAreTest, MatchesTenElementVector) {
}
TEST
(
ElementsAreTest
,
DoesNotMatchWrongSize
)
{
vector
<
string
>
test_vector
;
vector
<
std
::
string
>
test_vector
;
test_vector
.
push_back
(
"test string"
);
test_vector
.
push_back
(
"test string"
);
Matcher
<
vector
<
string
>
>
m
=
ElementsAre
(
StrEq
(
"test string"
));
Matcher
<
vector
<
std
::
string
>
>
m
=
ElementsAre
(
StrEq
(
"test string"
));
EXPECT_FALSE
(
m
.
Matches
(
test_vector
));
}
TEST
(
ElementsAreTest
,
DoesNotMatchWrongValue
)
{
vector
<
string
>
test_vector
;
vector
<
std
::
string
>
test_vector
;
test_vector
.
push_back
(
"other string"
);
Matcher
<
vector
<
string
>
>
m
=
ElementsAre
(
StrEq
(
"test string"
));
Matcher
<
vector
<
std
::
string
>
>
m
=
ElementsAre
(
StrEq
(
"test string"
));
EXPECT_FALSE
(
m
.
Matches
(
test_vector
));
}
TEST
(
ElementsAreTest
,
DoesNotMatchWrongOrder
)
{
vector
<
string
>
test_vector
;
vector
<
std
::
string
>
test_vector
;
test_vector
.
push_back
(
"one"
);
test_vector
.
push_back
(
"three"
);
test_vector
.
push_back
(
"two"
);
Matcher
<
vector
<
string
>
>
m
=
ElementsAre
(
StrEq
(
"one"
),
StrEq
(
"two"
),
StrEq
(
"three"
));
Matcher
<
vector
<
std
::
string
>
>
m
=
ElementsAre
(
StrEq
(
"one"
),
StrEq
(
"two"
),
StrEq
(
"three"
));
EXPECT_FALSE
(
m
.
Matches
(
test_vector
));
}
...
...
@@ -527,7 +526,7 @@ TEST(ElementsAreTest, WorksWithTwoDimensionalNativeArray) {
}
TEST
(
ElementsAreTest
,
AcceptsStringLiteral
)
{
string
array
[]
=
{
"hi"
,
"one"
,
"two"
};
std
::
string
array
[]
=
{
"hi"
,
"one"
,
"two"
};
EXPECT_THAT
(
array
,
ElementsAre
(
"hi"
,
"one"
,
"two"
));
EXPECT_THAT
(
array
,
Not
(
ElementsAre
(
"hi"
,
"one"
,
"too"
)));
}
...
...
@@ -546,10 +545,10 @@ TEST(ElementsAreTest, AcceptsArrayWithUnknownSize) {
// The size of kHi is not known in this test, but ElementsAre() should
// still accept it.
string
array1
[]
=
{
"hi"
};
std
::
string
array1
[]
=
{
"hi"
};
EXPECT_THAT
(
array1
,
ElementsAre
(
kHi
));
string
array2
[]
=
{
"ho"
};
std
::
string
array2
[]
=
{
"ho"
};
EXPECT_THAT
(
array2
,
Not
(
ElementsAre
(
kHi
)));
}
...
...
@@ -589,7 +588,7 @@ TEST(ElementsAreArrayTest, CanBeCreatedWithValueArray) {
TEST
(
ElementsAreArrayTest
,
CanBeCreatedWithArraySize
)
{
const
char
*
a
[]
=
{
"one"
,
"two"
,
"three"
};
vector
<
string
>
test_vector
(
a
,
a
+
GTEST_ARRAY_SIZE_
(
a
));
vector
<
std
::
string
>
test_vector
(
a
,
a
+
GTEST_ARRAY_SIZE_
(
a
));
EXPECT_THAT
(
test_vector
,
ElementsAreArray
(
a
,
GTEST_ARRAY_SIZE_
(
a
)));
const
char
**
p
=
a
;
...
...
@@ -600,7 +599,7 @@ TEST(ElementsAreArrayTest, CanBeCreatedWithArraySize) {
TEST
(
ElementsAreArrayTest
,
CanBeCreatedWithoutArraySize
)
{
const
char
*
a
[]
=
{
"one"
,
"two"
,
"three"
};
vector
<
string
>
test_vector
(
a
,
a
+
GTEST_ARRAY_SIZE_
(
a
));
vector
<
std
::
string
>
test_vector
(
a
,
a
+
GTEST_ARRAY_SIZE_
(
a
));
EXPECT_THAT
(
test_vector
,
ElementsAreArray
(
a
));
test_vector
[
0
]
=
"1"
;
...
...
@@ -608,10 +607,10 @@ TEST(ElementsAreArrayTest, CanBeCreatedWithoutArraySize) {
}
TEST
(
ElementsAreArrayTest
,
CanBeCreatedWithMatcherArray
)
{
const
Matcher
<
string
>
kMatcherArray
[]
=
{
StrEq
(
"one"
),
StrEq
(
"two"
),
StrEq
(
"three"
)
};
const
Matcher
<
std
::
string
>
kMatcherArray
[]
=
{
StrEq
(
"one"
),
StrEq
(
"two"
),
StrEq
(
"three"
)};
vector
<
string
>
test_vector
;
vector
<
std
::
string
>
test_vector
;
test_vector
.
push_back
(
"one"
);
test_vector
.
push_back
(
"two"
);
test_vector
.
push_back
(
"three"
);
...
...
@@ -640,7 +639,7 @@ TEST(ElementsAreArrayTest, TakesInitializerList) {
}
TEST
(
ElementsAreArrayTest
,
TakesInitializerListOfCStrings
)
{
const
string
a
[
5
]
=
{
"a"
,
"b"
,
"c"
,
"d"
,
"e"
};
const
std
::
string
a
[
5
]
=
{
"a"
,
"b"
,
"c"
,
"d"
,
"e"
};
EXPECT_THAT
(
a
,
ElementsAreArray
({
"a"
,
"b"
,
"c"
,
"d"
,
"e"
}));
EXPECT_THAT
(
a
,
Not
(
ElementsAreArray
({
"a"
,
"b"
,
"c"
,
"e"
,
"d"
})));
EXPECT_THAT
(
a
,
Not
(
ElementsAreArray
({
"a"
,
"b"
,
"c"
,
"d"
,
"ef"
})));
...
...
@@ -751,9 +750,9 @@ MATCHER(IsEven2, negation ? "is odd" : "is even") {
// This also tests that the description string can reference matcher
// parameters.
MATCHER_P2
(
EqSumOf
,
x
,
y
,
string
(
negation
?
"doesn't equal"
:
"equals"
)
+
" the sum of
"
+
PrintToString
(
x
)
+
" and "
+
PrintToString
(
y
))
{
MATCHER_P2
(
EqSumOf
,
x
,
y
,
std
::
string
(
negation
?
"doesn't equal"
:
"equals"
)
+
" the sum of "
+
PrintToString
(
x
)
+
" and
"
+
PrintToString
(
y
))
{
if
(
arg
==
(
x
+
y
))
{
*
result_listener
<<
"OK"
;
return
true
;
...
...
@@ -1117,12 +1116,12 @@ TEST(ContainsTest, ListMatchesWhenElementIsInContainer) {
EXPECT_THAT
(
some_list
,
Contains
(
Gt
(
2.5
)));
EXPECT_THAT
(
some_list
,
Contains
(
Eq
(
2.0
f
)));
list
<
string
>
another_list
;
list
<
std
::
string
>
another_list
;
another_list
.
push_back
(
"fee"
);
another_list
.
push_back
(
"fie"
);
another_list
.
push_back
(
"foe"
);
another_list
.
push_back
(
"fum"
);
EXPECT_THAT
(
another_list
,
Contains
(
string
(
"fee"
)));
EXPECT_THAT
(
another_list
,
Contains
(
std
::
string
(
"fee"
)));
}
TEST
(
ContainsTest
,
ListDoesNotMatchWhenElementIsNotInContainer
)
{
...
...
@@ -1146,7 +1145,7 @@ TEST(ContainsTest, SetMatchesWhenElementIsInContainer) {
another_set
.
insert
(
"fie"
);
another_set
.
insert
(
"foe"
);
another_set
.
insert
(
"fum"
);
EXPECT_THAT
(
another_set
,
Contains
(
Eq
(
string
(
"fum"
))));
EXPECT_THAT
(
another_set
,
Contains
(
Eq
(
std
::
string
(
"fum"
))));
}
TEST
(
ContainsTest
,
SetDoesNotMatchWhenElementIsNotInContainer
)
{
...
...
@@ -1157,7 +1156,7 @@ TEST(ContainsTest, SetDoesNotMatchWhenElementIsNotInContainer) {
set
<
const
char
*>
c_string_set
;
c_string_set
.
insert
(
"hello"
);
EXPECT_THAT
(
c_string_set
,
Not
(
Contains
(
string
(
"hello"
).
c_str
())));
EXPECT_THAT
(
c_string_set
,
Not
(
Contains
(
std
::
string
(
"hello"
).
c_str
())));
}
TEST
(
ContainsTest
,
ExplainsMatchResultCorrectly
)
{
...
...
@@ -1189,13 +1188,14 @@ TEST(ContainsTest, MapMatchesWhenElementIsInContainer) {
my_map
[
bar
]
=
2
;
EXPECT_THAT
(
my_map
,
Contains
(
pair
<
const
char
*
const
,
int
>
(
bar
,
2
)));
map
<
string
,
int
>
another_map
;
map
<
std
::
string
,
int
>
another_map
;
another_map
[
"fee"
]
=
1
;
another_map
[
"fie"
]
=
2
;
another_map
[
"foe"
]
=
3
;
another_map
[
"fum"
]
=
4
;
EXPECT_THAT
(
another_map
,
Contains
(
pair
<
const
string
,
int
>
(
string
(
"fee"
),
1
)));
EXPECT_THAT
(
another_map
,
Contains
(
pair
<
const
string
,
int
>
(
"fie"
,
2
)));
EXPECT_THAT
(
another_map
,
Contains
(
pair
<
const
std
::
string
,
int
>
(
std
::
string
(
"fee"
),
1
)));
EXPECT_THAT
(
another_map
,
Contains
(
pair
<
const
std
::
string
,
int
>
(
"fie"
,
2
)));
}
TEST
(
ContainsTest
,
MapDoesNotMatchWhenElementIsNotInContainer
)
{
...
...
@@ -1207,7 +1207,7 @@ TEST(ContainsTest, MapDoesNotMatchWhenElementIsNotInContainer) {
TEST
(
ContainsTest
,
ArrayMatchesWhenElementIsInContainer
)
{
const
char
*
string_array
[]
=
{
"fee"
,
"fie"
,
"foe"
,
"fum"
};
EXPECT_THAT
(
string_array
,
Contains
(
Eq
(
string
(
"fum"
))));
EXPECT_THAT
(
string_array
,
Contains
(
Eq
(
std
::
string
(
"fum"
))));
}
TEST
(
ContainsTest
,
ArrayDoesNotMatchWhenElementIsNotInContainer
)
{
...
...
googlemock/test/gmock-internal-utils_test.cc
View file @
7cc548dc
...
...
@@ -319,11 +319,10 @@ TEST(TupleMatchesTest, WorksForSize2) {
TEST
(
TupleMatchesTest
,
WorksForSize5
)
{
tuple
<
Matcher
<
int
>
,
Matcher
<
char
>
,
Matcher
<
bool
>
,
Matcher
<
long
>
,
// NOLINT
Matcher
<
string
>
>
Matcher
<
std
::
string
>
>
matchers
(
Eq
(
1
),
Eq
(
'a'
),
Eq
(
true
),
Eq
(
2L
),
Eq
(
"hi"
));
tuple
<
int
,
char
,
bool
,
long
,
string
>
// NOLINT
values1
(
1
,
'a'
,
true
,
2L
,
"hi"
),
values2
(
1
,
'a'
,
true
,
2L
,
"hello"
),
tuple
<
int
,
char
,
bool
,
long
,
std
::
string
>
// NOLINT
values1
(
1
,
'a'
,
true
,
2L
,
"hi"
),
values2
(
1
,
'a'
,
true
,
2L
,
"hello"
),
values3
(
2
,
'a'
,
true
,
2L
,
"hi"
);
EXPECT_TRUE
(
TupleMatches
(
matchers
,
values1
));
...
...
@@ -375,7 +374,7 @@ class LogIsVisibleTest : public ::testing::Test {
virtual
void
TearDown
()
{
GMOCK_FLAG
(
verbose
)
=
original_verbose_
;
}
string
original_verbose_
;
std
::
string
original_verbose_
;
};
TEST_F
(
LogIsVisibleTest
,
AlwaysReturnsTrueIfVerbosityIsInfo
)
{
...
...
@@ -402,9 +401,9 @@ TEST_F(LogIsVisibleTest, WorksWhenVerbosityIsWarning) {
// Verifies that Log() behaves correctly for the given verbosity level
// and log severity.
void
TestLogWithSeverity
(
const
string
&
verbosity
,
LogSeverity
severity
,
void
TestLogWithSeverity
(
const
std
::
string
&
verbosity
,
LogSeverity
severity
,
bool
should_print
)
{
const
string
old_flag
=
GMOCK_FLAG
(
verbose
);
const
std
::
string
old_flag
=
GMOCK_FLAG
(
verbose
);
GMOCK_FLAG
(
verbose
)
=
verbosity
;
CaptureStdout
();
Log
(
severity
,
"Test log.
\n
"
,
0
);
...
...
@@ -423,7 +422,7 @@ void TestLogWithSeverity(const string& verbosity, LogSeverity severity,
// Tests that when the stack_frames_to_skip parameter is negative,
// Log() doesn't include the stack trace in the output.
TEST
(
LogTest
,
NoStackTraceWhenStackFramesToSkipIsNegative
)
{
const
string
saved_flag
=
GMOCK_FLAG
(
verbose
);
const
std
::
string
saved_flag
=
GMOCK_FLAG
(
verbose
);
GMOCK_FLAG
(
verbose
)
=
kInfoVerbosity
;
CaptureStdout
();
Log
(
kInfo
,
"Test log.
\n
"
,
-
1
);
...
...
@@ -432,7 +431,7 @@ TEST(LogTest, NoStackTraceWhenStackFramesToSkipIsNegative) {
}
struct
MockStackTraceGetter
:
testing
::
internal
::
OsStackTraceGetterInterface
{
virtual
string
CurrentStackTrace
(
int
max_depth
,
int
skip_count
)
{
virtual
std
::
string
CurrentStackTrace
(
int
max_depth
,
int
skip_count
)
{
return
(
testing
::
Message
()
<<
max_depth
<<
"::"
<<
skip_count
<<
"
\n
"
)
.
GetString
();
}
...
...
@@ -447,11 +446,11 @@ TEST(LogTest, NoSkippingStackFrameInOptMode) {
CaptureStdout
();
Log
(
kWarning
,
"Test log.
\n
"
,
100
);
const
string
log
=
GetCapturedStdout
();
const
std
::
string
log
=
GetCapturedStdout
();
string
expected_trace
=
std
::
string
expected_trace
=
(
testing
::
Message
()
<<
GTEST_FLAG
(
stack_trace_depth
)
<<
"::"
).
GetString
();
string
expected_message
=
std
::
string
expected_message
=
"
\n
GMOCK WARNING:
\n
"
"Test log.
\n
"
"Stack trace:
\n
"
+
...
...
@@ -547,7 +546,7 @@ TEST(TypeTraitsTest, remove_reference) {
// Verifies that Log() behaves correctly for the given verbosity level
// and log severity.
std
::
string
GrabOutput
(
void
(
*
logger
)(),
const
char
*
verbosity
)
{
const
string
saved_flag
=
GMOCK_FLAG
(
verbose
);
const
std
::
string
saved_flag
=
GMOCK_FLAG
(
verbose
);
GMOCK_FLAG
(
verbose
)
=
verbosity
;
CaptureStdout
();
logger
();
...
...
googlemock/test/gmock-matchers_test.cc
View file @
7cc548dc
...
...
@@ -189,7 +189,7 @@ Matcher<int> GreaterThan(int n) {
return
MakeMatcher
(
new
GreaterThanMatcher
(
n
));
}
string
OfType
(
const
string
&
type_name
)
{
std
::
string
OfType
(
const
std
::
string
&
type_name
)
{
#if GTEST_HAS_RTTI
return
" (of type "
+
type_name
+
")"
;
#else
...
...
@@ -199,7 +199,7 @@ string OfType(const string& type_name) {
// Returns the description of the given matcher.
template
<
typename
T
>
string
Describe
(
const
Matcher
<
T
>&
m
)
{
std
::
string
Describe
(
const
Matcher
<
T
>&
m
)
{
stringstream
ss
;
m
.
DescribeTo
(
&
ss
);
return
ss
.
str
();
...
...
@@ -207,7 +207,7 @@ string Describe(const Matcher<T>& m) {
// Returns the description of the negation of the given matcher.
template
<
typename
T
>
string
DescribeNegation
(
const
Matcher
<
T
>&
m
)
{
std
::
string
DescribeNegation
(
const
Matcher
<
T
>&
m
)
{
stringstream
ss
;
m
.
DescribeNegationTo
(
&
ss
);
return
ss
.
str
();
...
...
@@ -215,7 +215,7 @@ string DescribeNegation(const Matcher<T>& m) {
// Returns the reason why x matches, or doesn't match, m.
template
<
typename
MatcherType
,
typename
Value
>
string
Explain
(
const
MatcherType
&
m
,
const
Value
&
x
)
{
std
::
string
Explain
(
const
MatcherType
&
m
,
const
Value
&
x
)
{
StringMatchResultListener
listener
;
ExplainMatchResult
(
m
,
x
,
&
listener
);
return
listener
.
str
();
...
...
@@ -973,7 +973,7 @@ TEST(LeTest, CanDescribeSelf) {
// Tests that Lt(v) matches anything < v.
TEST
(
LtTest
,
ImplementsLessThan
)
{
Matcher
<
const
string
&>
m1
=
Lt
(
"Hello"
);
Matcher
<
const
std
::
string
&>
m1
=
Lt
(
"Hello"
);
EXPECT_TRUE
(
m1
.
Matches
(
"Abc"
));
EXPECT_FALSE
(
m1
.
Matches
(
"Hello"
));
EXPECT_FALSE
(
m1
.
Matches
(
"Hello, world!"
));
...
...
@@ -1125,7 +1125,7 @@ TEST(RefTest, CanDescribeSelf) {
Matcher
<
int
&>
m
=
Ref
(
n
);
stringstream
ss
;
ss
<<
"references the variable @"
<<
&
n
<<
" 5"
;
EXPECT_EQ
(
string
(
ss
.
str
()
)
,
Describe
(
m
));
EXPECT_EQ
(
ss
.
str
(),
Describe
(
m
));
}
// Test that Ref(non_const_varialbe) can be used as a matcher for a
...
...
@@ -1169,27 +1169,27 @@ TEST(RefTest, ExplainsResult) {
// Tests string comparison matchers.
TEST
(
StrEqTest
,
MatchesEqualString
)
{
Matcher
<
const
char
*>
m
=
StrEq
(
string
(
"Hello"
));
Matcher
<
const
char
*>
m
=
StrEq
(
std
::
string
(
"Hello"
));
EXPECT_TRUE
(
m
.
Matches
(
"Hello"
));
EXPECT_FALSE
(
m
.
Matches
(
"hello"
));
EXPECT_FALSE
(
m
.
Matches
(
NULL
));
Matcher
<
const
string
&>
m2
=
StrEq
(
"Hello"
);
Matcher
<
const
std
::
string
&>
m2
=
StrEq
(
"Hello"
);
EXPECT_TRUE
(
m2
.
Matches
(
"Hello"
));
EXPECT_FALSE
(
m2
.
Matches
(
"Hi"
));
}
TEST
(
StrEqTest
,
CanDescribeSelf
)
{
Matcher
<
string
>
m
=
StrEq
(
"Hi-
\'\"
?
\\\a\b\f\n\r\t\v\xD3
"
);
Matcher
<
std
::
string
>
m
=
StrEq
(
"Hi-
\'\"
?
\\\a\b\f\n\r\t\v\xD3
"
);
EXPECT_EQ
(
"is equal to
\"
Hi-
\'\\\"
?
\\\\\\
a
\\
b
\\
f
\\
n
\\
r
\\
t
\\
v
\\
xD3
\"
"
,
Describe
(
m
));
string
str
(
"01204500800"
);
std
::
string
str
(
"01204500800"
);
str
[
3
]
=
'\0'
;
Matcher
<
string
>
m2
=
StrEq
(
str
);
Matcher
<
std
::
string
>
m2
=
StrEq
(
str
);
EXPECT_EQ
(
"is equal to
\"
012
\\
04500800
\"
"
,
Describe
(
m2
));
str
[
0
]
=
str
[
6
]
=
str
[
7
]
=
str
[
9
]
=
str
[
10
]
=
'\0'
;
Matcher
<
string
>
m3
=
StrEq
(
str
);
Matcher
<
std
::
string
>
m3
=
StrEq
(
str
);
EXPECT_EQ
(
"is equal to
\"\\
012
\\
045
\\
0
\\
08
\\
0
\\
0
\"
"
,
Describe
(
m3
));
}
...
...
@@ -1199,7 +1199,7 @@ TEST(StrNeTest, MatchesUnequalString) {
EXPECT_TRUE
(
m
.
Matches
(
NULL
));
EXPECT_FALSE
(
m
.
Matches
(
"Hello"
));
Matcher
<
string
>
m2
=
StrNe
(
string
(
"Hello"
));
Matcher
<
std
::
string
>
m2
=
StrNe
(
std
::
string
(
"Hello"
));
EXPECT_TRUE
(
m2
.
Matches
(
"hello"
));
EXPECT_FALSE
(
m2
.
Matches
(
"Hello"
));
}
...
...
@@ -1222,32 +1222,32 @@ TEST(StrCaseEqTest, MatchesEqualStringIgnoringCase) {
}
TEST
(
StrCaseEqTest
,
MatchesEqualStringWith0IgnoringCase
)
{
string
str1
(
"oabocdooeoo"
);
string
str2
(
"OABOCDOOEOO"
);
Matcher
<
const
string
&>
m0
=
StrCaseEq
(
str1
);
EXPECT_FALSE
(
m0
.
Matches
(
str2
+
string
(
1
,
'\0'
)));
std
::
string
str1
(
"oabocdooeoo"
);
std
::
string
str2
(
"OABOCDOOEOO"
);
Matcher
<
const
std
::
string
&>
m0
=
StrCaseEq
(
str1
);
EXPECT_FALSE
(
m0
.
Matches
(
str2
+
std
::
string
(
1
,
'\0'
)));
str1
[
3
]
=
str2
[
3
]
=
'\0'
;
Matcher
<
const
string
&>
m1
=
StrCaseEq
(
str1
);
Matcher
<
const
std
::
string
&>
m1
=
StrCaseEq
(
str1
);
EXPECT_TRUE
(
m1
.
Matches
(
str2
));
str1
[
0
]
=
str1
[
6
]
=
str1
[
7
]
=
str1
[
10
]
=
'\0'
;
str2
[
0
]
=
str2
[
6
]
=
str2
[
7
]
=
str2
[
10
]
=
'\0'
;
Matcher
<
const
string
&>
m2
=
StrCaseEq
(
str1
);
Matcher
<
const
std
::
string
&>
m2
=
StrCaseEq
(
str1
);
str1
[
9
]
=
str2
[
9
]
=
'\0'
;
EXPECT_FALSE
(
m2
.
Matches
(
str2
));
Matcher
<
const
string
&>
m3
=
StrCaseEq
(
str1
);
Matcher
<
const
std
::
string
&>
m3
=
StrCaseEq
(
str1
);
EXPECT_TRUE
(
m3
.
Matches
(
str2
));
EXPECT_FALSE
(
m3
.
Matches
(
str2
+
"x"
));
str2
.
append
(
1
,
'\0'
);
EXPECT_FALSE
(
m3
.
Matches
(
str2
));
EXPECT_FALSE
(
m3
.
Matches
(
string
(
str2
,
0
,
9
)));
EXPECT_FALSE
(
m3
.
Matches
(
std
::
string
(
str2
,
0
,
9
)));
}
TEST
(
StrCaseEqTest
,
CanDescribeSelf
)
{
Matcher
<
string
>
m
=
StrCaseEq
(
"Hi"
);
Matcher
<
std
::
string
>
m
=
StrCaseEq
(
"Hi"
);
EXPECT_EQ
(
"is equal to (ignoring case)
\"
Hi
\"
"
,
Describe
(
m
));
}
...
...
@@ -1258,7 +1258,7 @@ TEST(StrCaseNeTest, MatchesUnequalStringIgnoringCase) {
EXPECT_FALSE
(
m
.
Matches
(
"Hello"
));
EXPECT_FALSE
(
m
.
Matches
(
"hello"
));
Matcher
<
string
>
m2
=
StrCaseNe
(
string
(
"Hello"
));
Matcher
<
std
::
string
>
m2
=
StrCaseNe
(
std
::
string
(
"Hello"
));
EXPECT_TRUE
(
m2
.
Matches
(
""
));
EXPECT_FALSE
(
m2
.
Matches
(
"Hello"
));
}
...
...
@@ -1270,9 +1270,9 @@ TEST(StrCaseNeTest, CanDescribeSelf) {
// Tests that HasSubstr() works for matching string-typed values.
TEST
(
HasSubstrTest
,
WorksForStringClasses
)
{
const
Matcher
<
string
>
m1
=
HasSubstr
(
"foo"
);
EXPECT_TRUE
(
m1
.
Matches
(
string
(
"I love food."
)));
EXPECT_FALSE
(
m1
.
Matches
(
string
(
"tofo"
)));
const
Matcher
<
std
::
string
>
m1
=
HasSubstr
(
"foo"
);
EXPECT_TRUE
(
m1
.
Matches
(
std
::
string
(
"I love food."
)));
EXPECT_FALSE
(
m1
.
Matches
(
std
::
string
(
"tofo"
)));
const
Matcher
<
const
std
::
string
&>
m2
=
HasSubstr
(
"foo"
);
EXPECT_TRUE
(
m2
.
Matches
(
std
::
string
(
"I love food."
)));
...
...
@@ -1294,7 +1294,7 @@ TEST(HasSubstrTest, WorksForCStrings) {
// Tests that HasSubstr(s) describes itself properly.
TEST
(
HasSubstrTest
,
CanDescribeSelf
)
{
Matcher
<
string
>
m
=
HasSubstr
(
"foo
\n\"
"
);
Matcher
<
std
::
string
>
m
=
HasSubstr
(
"foo
\n\"
"
);
EXPECT_EQ
(
"has substring
\"
foo
\\
n
\\\"\"
"
,
Describe
(
m
));
}
...
...
@@ -1460,12 +1460,12 @@ TEST(PairTest, InsideContainsUsingMap) {
// Tests StartsWith(s).
TEST
(
StartsWithTest
,
MatchesStringWithGivenPrefix
)
{
const
Matcher
<
const
char
*>
m1
=
StartsWith
(
string
(
""
));
const
Matcher
<
const
char
*>
m1
=
StartsWith
(
std
::
string
(
""
));
EXPECT_TRUE
(
m1
.
Matches
(
"Hi"
));
EXPECT_TRUE
(
m1
.
Matches
(
""
));
EXPECT_FALSE
(
m1
.
Matches
(
NULL
));
const
Matcher
<
const
string
&>
m2
=
StartsWith
(
"Hi"
);
const
Matcher
<
const
std
::
string
&>
m2
=
StartsWith
(
"Hi"
);
EXPECT_TRUE
(
m2
.
Matches
(
"Hi"
));
EXPECT_TRUE
(
m2
.
Matches
(
"Hi Hi!"
));
EXPECT_TRUE
(
m2
.
Matches
(
"High"
));
...
...
@@ -1507,14 +1507,14 @@ TEST(MatchesRegexTest, MatchesStringMatchingGivenRegex) {
EXPECT_TRUE
(
m1
.
Matches
(
"abcz"
));
EXPECT_FALSE
(
m1
.
Matches
(
NULL
));
const
Matcher
<
const
string
&>
m2
=
MatchesRegex
(
new
RE
(
"a.*z"
));
const
Matcher
<
const
std
::
string
&>
m2
=
MatchesRegex
(
new
RE
(
"a.*z"
));
EXPECT_TRUE
(
m2
.
Matches
(
"azbz"
));
EXPECT_FALSE
(
m2
.
Matches
(
"az1"
));
EXPECT_FALSE
(
m2
.
Matches
(
"1az"
));
}
TEST
(
MatchesRegexTest
,
CanDescribeSelf
)
{
Matcher
<
const
std
::
string
>
m1
=
MatchesRegex
(
string
(
"Hi.*"
));
Matcher
<
const
std
::
string
>
m1
=
MatchesRegex
(
std
::
string
(
"Hi.*"
));
EXPECT_EQ
(
"matches regular expression
\"
Hi.*
\"
"
,
Describe
(
m1
));
Matcher
<
const
char
*>
m2
=
MatchesRegex
(
new
RE
(
"a.*"
));
...
...
@@ -1524,12 +1524,12 @@ TEST(MatchesRegexTest, CanDescribeSelf) {
// Tests ContainsRegex().
TEST
(
ContainsRegexTest
,
MatchesStringContainingGivenRegex
)
{
const
Matcher
<
const
char
*>
m1
=
ContainsRegex
(
string
(
"a.*z"
));
const
Matcher
<
const
char
*>
m1
=
ContainsRegex
(
std
::
string
(
"a.*z"
));
EXPECT_TRUE
(
m1
.
Matches
(
"az"
));
EXPECT_TRUE
(
m1
.
Matches
(
"0abcz1"
));
EXPECT_FALSE
(
m1
.
Matches
(
NULL
));
const
Matcher
<
const
string
&>
m2
=
ContainsRegex
(
new
RE
(
"a.*z"
));
const
Matcher
<
const
std
::
string
&>
m2
=
ContainsRegex
(
new
RE
(
"a.*z"
));
EXPECT_TRUE
(
m2
.
Matches
(
"azbz"
));
EXPECT_TRUE
(
m2
.
Matches
(
"az1"
));
EXPECT_FALSE
(
m2
.
Matches
(
"1a"
));
...
...
@@ -2685,9 +2685,9 @@ TEST(MatcherAssertionTest, WorksForMonomorphicMatcher) {
Matcher
<
const
char
*>
starts_with_he
=
StartsWith
(
"he"
);
ASSERT_THAT
(
"hello"
,
starts_with_he
);
Matcher
<
const
string
&>
ends_with_ok
=
EndsWith
(
"ok"
);
Matcher
<
const
std
::
string
&>
ends_with_ok
=
EndsWith
(
"ok"
);
ASSERT_THAT
(
"book"
,
ends_with_ok
);
const
string
bad
=
"bad"
;
const
std
::
string
bad
=
"bad"
;
EXPECT_NONFATAL_FAILURE
(
EXPECT_THAT
(
bad
,
ends_with_ok
),
"Value of: bad
\n
"
"Expected: ends with
\"
ok
\"\n
"
...
...
@@ -3099,7 +3099,8 @@ TEST_F(DoubleNearTest, ExplainsResultWhenMatchFails) {
EXPECT_EQ
(
"which is 0.2 from 2"
,
Explain
(
DoubleNear
(
2.0
,
0.1
),
2.2
));
EXPECT_EQ
(
"which is -0.3 from 2"
,
Explain
(
DoubleNear
(
2.0
,
0.1
),
1.7
));
const
string
explanation
=
Explain
(
DoubleNear
(
2.1
,
1e-10
),
2.1
+
1.2e-10
);
const
std
::
string
explanation
=
Explain
(
DoubleNear
(
2.1
,
1e-10
),
2.1
+
1.2e-10
);
// Different C++ implementations may print floating-point numbers
// slightly differently.
EXPECT_TRUE
(
explanation
==
"which is 1.2e-10 from 2.1"
||
// GCC
...
...
@@ -3337,9 +3338,9 @@ TEST(PointeeTest, CanDescribeSelf) {
}
TEST
(
PointeeTest
,
CanExplainMatchResult
)
{
const
Matcher
<
const
string
*>
m
=
Pointee
(
StartsWith
(
"Hi"
));
const
Matcher
<
const
std
::
string
*>
m
=
Pointee
(
StartsWith
(
"Hi"
));
EXPECT_EQ
(
""
,
Explain
(
m
,
static_cast
<
const
string
*>
(
NULL
)));
EXPECT_EQ
(
""
,
Explain
(
m
,
static_cast
<
const
std
::
string
*>
(
NULL
)));
const
Matcher
<
long
*>
m2
=
Pointee
(
GreaterThan
(
1
));
// NOLINT
long
n
=
3
;
// NOLINT
...
...
@@ -3585,15 +3586,15 @@ class AClass {
void
set_n
(
int
new_n
)
{
n_
=
new_n
;
}
// A getter that returns a reference to const.
const
string
&
s
()
const
{
return
s_
;
}
const
std
::
string
&
s
()
const
{
return
s_
;
}
void
set_s
(
const
string
&
new_s
)
{
s_
=
new_s
;
}
void
set_s
(
const
std
::
string
&
new_s
)
{
s_
=
new_s
;
}
// A getter that returns a reference to non-const.
double
&
x
()
const
{
return
x_
;
}
private:
int
n_
;
string
s_
;
std
::
string
s_
;
static
double
x_
;
};
...
...
@@ -3799,10 +3800,12 @@ TEST(PropertyForPointerTest, CanExplainMatchResult) {
// Tests that ResultOf(f, ...) compiles and works as expected when f is a
// function pointer.
string
IntToStringFunction
(
int
input
)
{
return
input
==
1
?
"foo"
:
"bar"
;
}
std
::
string
IntToStringFunction
(
int
input
)
{
return
input
==
1
?
"foo"
:
"bar"
;
}
TEST
(
ResultOfTest
,
WorksForFunctionPointers
)
{
Matcher
<
int
>
matcher
=
ResultOf
(
&
IntToStringFunction
,
Eq
(
string
(
"foo"
)));
Matcher
<
int
>
matcher
=
ResultOf
(
&
IntToStringFunction
,
Eq
(
std
::
string
(
"foo"
)));
EXPECT_TRUE
(
matcher
.
Matches
(
1
));
EXPECT_FALSE
(
matcher
.
Matches
(
2
));
...
...
@@ -3868,12 +3871,12 @@ TEST(ResultOfTest, WorksForReferenceToNonConstResults) {
// Tests that ResultOf(f, ...) compiles and works as expected when f(x)
// returns a reference to const.
const
string
&
StringFunction
(
const
string
&
input
)
{
return
input
;
}
const
std
::
string
&
StringFunction
(
const
std
::
string
&
input
)
{
return
input
;
}
TEST
(
ResultOfTest
,
WorksForReferenceToConstResults
)
{
string
s
=
"foo"
;
string
s2
=
s
;
Matcher
<
const
string
&>
matcher
=
ResultOf
(
&
StringFunction
,
Ref
(
s
));
std
::
string
s
=
"foo"
;
std
::
string
s2
=
s
;
Matcher
<
const
std
::
string
&>
matcher
=
ResultOf
(
&
StringFunction
,
Ref
(
s
));
EXPECT_TRUE
(
matcher
.
Matches
(
s
));
EXPECT_FALSE
(
matcher
.
Matches
(
s2
));
...
...
@@ -3893,8 +3896,9 @@ TEST(ResultOfTest, WorksForCompatibleMatcherTypes) {
// a NULL function pointer.
TEST
(
ResultOfDeathTest
,
DiesOnNullFunctionPointers
)
{
EXPECT_DEATH_IF_SUPPORTED
(
ResultOf
(
static_cast
<
string
(
*
)(
int
dummy
)
>
(
NULL
),
Eq
(
string
(
"foo"
))),
"NULL function pointer is passed into ResultOf
\\
(
\\
)
\\
."
);
ResultOf
(
static_cast
<
std
::
string
(
*
)(
int
dummy
)
>
(
NULL
),
Eq
(
std
::
string
(
"foo"
))),
"NULL function pointer is passed into ResultOf
\\
(
\\
)
\\
."
);
}
// Tests that ResultOf(f, ...) compiles and works as expected when f is a
...
...
@@ -3907,14 +3911,14 @@ TEST(ResultOfTest, WorksForFunctionReferences) {
// Tests that ResultOf(f, ...) compiles and works as expected when f is a
// function object.
struct
Functor
:
public
::
std
::
unary_function
<
int
,
string
>
{
struct
Functor
:
public
::
std
::
unary_function
<
int
,
std
::
string
>
{
result_type
operator
()(
argument_type
input
)
const
{
return
IntToStringFunction
(
input
);
}
};
TEST
(
ResultOfTest
,
WorksForFunctors
)
{
Matcher
<
int
>
matcher
=
ResultOf
(
Functor
(),
Eq
(
string
(
"foo"
)));
Matcher
<
int
>
matcher
=
ResultOf
(
Functor
(),
Eq
(
std
::
string
(
"foo"
)));
EXPECT_TRUE
(
matcher
.
Matches
(
1
));
EXPECT_FALSE
(
matcher
.
Matches
(
2
));
...
...
@@ -4080,11 +4084,11 @@ TEST(IsEmptyTest, ImplementsIsEmpty) {
}
TEST
(
IsEmptyTest
,
WorksWithString
)
{
string
text
;
std
::
string
text
;
EXPECT_THAT
(
text
,
IsEmpty
());
text
=
"foo"
;
EXPECT_THAT
(
text
,
Not
(
IsEmpty
()));
text
=
string
(
"
\0
"
,
1
);
text
=
std
::
string
(
"
\0
"
,
1
);
EXPECT_THAT
(
text
,
Not
(
IsEmpty
()));
}
...
...
@@ -4115,7 +4119,7 @@ TEST(SizeIsTest, ImplementsSizeIs) {
}
TEST
(
SizeIsTest
,
WorksWithMap
)
{
map
<
string
,
int
>
container
;
map
<
std
::
string
,
int
>
container
;
EXPECT_THAT
(
container
,
SizeIs
(
0
));
EXPECT_THAT
(
container
,
Not
(
SizeIs
(
1
)));
container
.
insert
(
make_pair
(
"foo"
,
1
));
...
...
@@ -4380,13 +4384,13 @@ TEST(WhenSortedByTest, WorksForNonEmptyContainer) {
}
TEST
(
WhenSortedByTest
,
WorksForNonVectorContainer
)
{
list
<
string
>
words
;
list
<
std
::
string
>
words
;
words
.
push_back
(
"say"
);
words
.
push_back
(
"hello"
);
words
.
push_back
(
"world"
);
EXPECT_THAT
(
words
,
WhenSortedBy
(
less
<
string
>
(),
EXPECT_THAT
(
words
,
WhenSortedBy
(
less
<
std
::
string
>
(),
ElementsAre
(
"hello"
,
"say"
,
"world"
)));
EXPECT_THAT
(
words
,
Not
(
WhenSortedBy
(
less
<
string
>
(),
EXPECT_THAT
(
words
,
Not
(
WhenSortedBy
(
less
<
std
::
string
>
(),
ElementsAre
(
"say"
,
"hello"
,
"world"
))));
}
...
...
@@ -4429,7 +4433,7 @@ TEST(WhenSortedTest, WorksForEmptyContainer) {
}
TEST
(
WhenSortedTest
,
WorksForNonEmptyContainer
)
{
list
<
string
>
words
;
list
<
std
::
string
>
words
;
words
.
push_back
(
"3"
);
words
.
push_back
(
"1"
);
words
.
push_back
(
"2"
);
...
...
@@ -4439,14 +4443,16 @@ TEST(WhenSortedTest, WorksForNonEmptyContainer) {
}
TEST
(
WhenSortedTest
,
WorksForMapTypes
)
{
map
<
string
,
int
>
word_counts
;
word_counts
[
"and"
]
=
1
;
word_counts
[
"the"
]
=
1
;
word_counts
[
"buffalo"
]
=
2
;
EXPECT_THAT
(
word_counts
,
WhenSorted
(
ElementsAre
(
Pair
(
"and"
,
1
),
Pair
(
"buffalo"
,
2
),
Pair
(
"the"
,
1
))));
EXPECT_THAT
(
word_counts
,
Not
(
WhenSorted
(
ElementsAre
(
Pair
(
"and"
,
1
),
Pair
(
"the"
,
1
),
Pair
(
"buffalo"
,
2
)))));
map
<
std
::
string
,
int
>
word_counts
;
word_counts
[
"and"
]
=
1
;
word_counts
[
"the"
]
=
1
;
word_counts
[
"buffalo"
]
=
2
;
EXPECT_THAT
(
word_counts
,
WhenSorted
(
ElementsAre
(
Pair
(
"and"
,
1
),
Pair
(
"buffalo"
,
2
),
Pair
(
"the"
,
1
))));
EXPECT_THAT
(
word_counts
,
Not
(
WhenSorted
(
ElementsAre
(
Pair
(
"and"
,
1
),
Pair
(
"the"
,
1
),
Pair
(
"buffalo"
,
2
)))));
}
TEST
(
WhenSortedTest
,
WorksForMultiMapTypes
)
{
...
...
@@ -4763,7 +4769,7 @@ TEST(UnorderedElementsAreArrayTest, TakesInitializerList) {
}
TEST
(
UnorderedElementsAreArrayTest
,
TakesInitializerListOfCStrings
)
{
const
string
a
[
5
]
=
{
"a"
,
"b"
,
"c"
,
"d"
,
"e"
};
const
std
::
string
a
[
5
]
=
{
"a"
,
"b"
,
"c"
,
"d"
,
"e"
};
EXPECT_THAT
(
a
,
UnorderedElementsAreArray
({
"a"
,
"b"
,
"c"
,
"d"
,
"e"
}));
EXPECT_THAT
(
a
,
Not
(
UnorderedElementsAreArray
({
"a"
,
"b"
,
"c"
,
"d"
,
"ef"
})));
}
...
...
@@ -4937,7 +4943,7 @@ TEST_F(UnorderedElementsAreTest, FailMessageUnmatchedMatcherAndElement) {
}
// Test helper for formatting element, matcher index pairs in expectations.
static
string
EMString
(
int
element
,
int
matcher
)
{
static
std
::
string
EMString
(
int
element
,
int
matcher
)
{
stringstream
ss
;
ss
<<
"(element #"
<<
element
<<
", matcher #"
<<
matcher
<<
")"
;
return
ss
.
str
();
...
...
@@ -4946,7 +4952,7 @@ static string EMString(int element, int matcher) {
TEST_F
(
UnorderedElementsAreTest
,
FailMessageImperfectMatchOnly
)
{
// A situation where all elements and matchers have a match
// associated with them, but the max matching is not perfect.
std
::
vector
<
string
>
v
;
std
::
vector
<
std
::
string
>
v
;
v
.
push_back
(
"a"
);
v
.
push_back
(
"b"
);
v
.
push_back
(
"c"
);
...
...
@@ -4955,7 +4961,7 @@ TEST_F(UnorderedElementsAreTest, FailMessageImperfectMatchOnly) {
UnorderedElementsAre
(
"a"
,
"a"
,
AnyOf
(
"b"
,
"c"
)),
v
,
&
listener
))
<<
listener
.
str
();
string
prefix
=
std
::
string
prefix
=
"where no permutation of the elements can satisfy all matchers, "
"and the closest match is 2 of 3 matchers with the "
"pairings:
\n
"
;
...
...
@@ -5366,13 +5372,13 @@ TEST(EachTest, MatchesVectorWhenAllElementsMatch) {
EXPECT_THAT
(
some_vector
,
Not
(
Each
(
3
)));
EXPECT_THAT
(
some_vector
,
Each
(
Lt
(
3.5
)));
vector
<
string
>
another_vector
;
vector
<
std
::
string
>
another_vector
;
another_vector
.
push_back
(
"fee"
);
EXPECT_THAT
(
another_vector
,
Each
(
string
(
"fee"
)));
EXPECT_THAT
(
another_vector
,
Each
(
std
::
string
(
"fee"
)));
another_vector
.
push_back
(
"fie"
);
another_vector
.
push_back
(
"foe"
);
another_vector
.
push_back
(
"fum"
);
EXPECT_THAT
(
another_vector
,
Not
(
Each
(
string
(
"fee"
))));
EXPECT_THAT
(
another_vector
,
Not
(
Each
(
std
::
string
(
"fee"
))));
}
TEST
(
EachTest
,
MatchesMapWhenAllElementsMatch
)
{
...
...
@@ -5381,15 +5387,15 @@ TEST(EachTest, MatchesMapWhenAllElementsMatch) {
my_map
[
bar
]
=
2
;
EXPECT_THAT
(
my_map
,
Each
(
make_pair
(
bar
,
2
)));
map
<
string
,
int
>
another_map
;
EXPECT_THAT
(
another_map
,
Each
(
make_pair
(
string
(
"fee"
),
1
)));
map
<
std
::
string
,
int
>
another_map
;
EXPECT_THAT
(
another_map
,
Each
(
make_pair
(
std
::
string
(
"fee"
),
1
)));
another_map
[
"fee"
]
=
1
;
EXPECT_THAT
(
another_map
,
Each
(
make_pair
(
string
(
"fee"
),
1
)));
EXPECT_THAT
(
another_map
,
Each
(
make_pair
(
std
::
string
(
"fee"
),
1
)));
another_map
[
"fie"
]
=
2
;
another_map
[
"foe"
]
=
3
;
another_map
[
"fum"
]
=
4
;
EXPECT_THAT
(
another_map
,
Not
(
Each
(
make_pair
(
string
(
"fee"
),
1
))));
EXPECT_THAT
(
another_map
,
Not
(
Each
(
make_pair
(
string
(
"fum"
),
1
))));
EXPECT_THAT
(
another_map
,
Not
(
Each
(
make_pair
(
std
::
string
(
"fee"
),
1
))));
EXPECT_THAT
(
another_map
,
Not
(
Each
(
make_pair
(
std
::
string
(
"fum"
),
1
))));
EXPECT_THAT
(
another_map
,
Each
(
Pair
(
_
,
Gt
(
0
))));
}
...
...
googlemock/test/gmock-more-actions_test.cc
View file @
7cc548dc
...
...
@@ -94,12 +94,12 @@ const char* Plus1(const char* s) { return s + 1; }
void
VoidUnary
(
int
/* n */
)
{
g_done
=
true
;
}
bool
ByConstRef
(
const
string
&
s
)
{
return
s
==
"Hi"
;
}
bool
ByConstRef
(
const
std
::
string
&
s
)
{
return
s
==
"Hi"
;
}
const
double
g_double
=
0
;
bool
ReferencesGlobalDouble
(
const
double
&
x
)
{
return
&
x
==
&
g_double
;
}
string
ByNonConstRef
(
string
&
s
)
{
return
s
+=
"+"
;
}
// NOLINT
std
::
string
ByNonConstRef
(
std
::
string
&
s
)
{
return
s
+=
"+"
;
}
// NOLINT
struct
UnaryFunctor
{
int
operator
()(
bool
x
)
{
return
x
?
1
:
-
1
;
}
...
...
@@ -119,9 +119,9 @@ int SumOfFirst2(int a, int b, Unused, Unused) { return a + b; }
void
VoidFunctionWithFourArguments
(
char
,
int
,
float
,
double
)
{
g_done
=
true
;
}
string
Concat4
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
)
{
return
string
(
s1
)
+
s2
+
s3
+
s4
;
std
::
string
Concat4
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
)
{
return
std
::
string
(
s1
)
+
s2
+
s3
+
s4
;
}
int
SumOf5
(
int
a
,
int
b
,
int
c
,
int
d
,
int
e
)
{
return
a
+
b
+
c
+
d
+
e
;
}
...
...
@@ -132,9 +132,9 @@ struct SumOf5Functor {
}
};
string
Concat5
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
)
{
return
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
;
std
::
string
Concat5
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
)
{
return
std
::
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
;
}
int
SumOf6
(
int
a
,
int
b
,
int
c
,
int
d
,
int
e
,
int
f
)
{
...
...
@@ -147,34 +147,34 @@ struct SumOf6Functor {
}
};
string
Concat6
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
)
{
return
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
;
std
::
string
Concat6
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
)
{
return
std
::
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
;
}
string
Concat7
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
)
{
return
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
;
std
::
string
Concat7
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
)
{
return
std
::
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
;
}
string
Concat8
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
,
const
char
*
s8
)
{
return
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
+
s8
;
std
::
string
Concat8
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
,
const
char
*
s8
)
{
return
std
::
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
+
s8
;
}
string
Concat9
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
,
const
char
*
s8
,
const
char
*
s9
)
{
return
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
+
s8
+
s9
;
std
::
string
Concat9
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
,
const
char
*
s8
,
const
char
*
s9
)
{
return
std
::
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
+
s8
+
s9
;
}
string
Concat10
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
,
const
char
*
s8
,
const
char
*
s9
,
const
char
*
s10
)
{
return
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
+
s8
+
s9
+
s10
;
std
::
string
Concat10
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
,
const
char
*
s8
,
const
char
*
s9
,
const
char
*
s10
)
{
return
std
::
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
+
s8
+
s9
+
s10
;
}
class
Foo
{
...
...
@@ -185,7 +185,7 @@ class Foo {
short
Unary
(
long
x
)
{
return
static_cast
<
short
>
(
value_
+
x
);
}
// NOLINT
string
Binary
(
const
string
&
str
,
char
c
)
const
{
return
str
+
c
;
}
std
::
string
Binary
(
const
std
::
string
&
str
,
char
c
)
const
{
return
str
+
c
;
}
int
Ternary
(
int
x
,
bool
y
,
char
z
)
{
return
value_
+
x
+
y
*
z
;
}
...
...
@@ -201,29 +201,29 @@ class Foo {
return
a
+
b
+
c
+
d
+
e
+
f
;
}
string
Concat7
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
)
{
return
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
;
std
::
string
Concat7
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
)
{
return
std
::
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
;
}
string
Concat8
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
,
const
char
*
s8
)
{
return
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
+
s8
;
std
::
string
Concat8
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
,
const
char
*
s8
)
{
return
std
::
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
+
s8
;
}
string
Concat9
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
,
const
char
*
s8
,
const
char
*
s9
)
{
return
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
+
s8
+
s9
;
std
::
string
Concat9
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
,
const
char
*
s8
,
const
char
*
s9
)
{
return
std
::
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
+
s8
+
s9
;
}
string
Concat10
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
,
const
char
*
s8
,
const
char
*
s9
,
const
char
*
s10
)
{
return
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
+
s8
+
s9
+
s10
;
std
::
string
Concat10
(
const
char
*
s1
,
const
char
*
s2
,
const
char
*
s3
,
const
char
*
s4
,
const
char
*
s5
,
const
char
*
s6
,
const
char
*
s7
,
const
char
*
s8
,
const
char
*
s9
,
const
char
*
s10
)
{
return
std
::
string
(
s1
)
+
s2
+
s3
+
s4
+
s5
+
s6
+
s7
+
s8
+
s9
+
s10
;
}
private:
...
...
@@ -280,9 +280,9 @@ inline const char* CharPtr(const char* s) { return s; }
// Tests using Invoke() with a 7-argument function.
TEST
(
InvokeTest
,
FunctionThatTakes7Arguments
)
{
Action
<
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
Invoke
(
Concat7
);
Action
<
std
::
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
Invoke
(
Concat7
);
EXPECT_EQ
(
"1234567"
,
a
.
Perform
(
make_tuple
(
CharPtr
(
"1"
),
CharPtr
(
"2"
),
CharPtr
(
"3"
),
CharPtr
(
"4"
),
CharPtr
(
"5"
),
CharPtr
(
"6"
),
...
...
@@ -291,9 +291,9 @@ TEST(InvokeTest, FunctionThatTakes7Arguments) {
// Tests using Invoke() with a 8-argument function.
TEST
(
InvokeTest
,
FunctionThatTakes8Arguments
)
{
Action
<
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
Invoke
(
Concat8
);
Action
<
std
::
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
Invoke
(
Concat8
);
EXPECT_EQ
(
"12345678"
,
a
.
Perform
(
make_tuple
(
CharPtr
(
"1"
),
CharPtr
(
"2"
),
CharPtr
(
"3"
),
CharPtr
(
"4"
),
CharPtr
(
"5"
),
CharPtr
(
"6"
),
...
...
@@ -302,9 +302,10 @@ TEST(InvokeTest, FunctionThatTakes8Arguments) {
// Tests using Invoke() with a 9-argument function.
TEST
(
InvokeTest
,
FunctionThatTakes9Arguments
)
{
Action
<
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
Invoke
(
Concat9
);
Action
<
std
::
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
Invoke
(
Concat9
);
EXPECT_EQ
(
"123456789"
,
a
.
Perform
(
make_tuple
(
CharPtr
(
"1"
),
CharPtr
(
"2"
),
CharPtr
(
"3"
),
CharPtr
(
"4"
),
CharPtr
(
"5"
),
CharPtr
(
"6"
),
...
...
@@ -313,9 +314,10 @@ TEST(InvokeTest, FunctionThatTakes9Arguments) {
// Tests using Invoke() with a 10-argument function.
TEST
(
InvokeTest
,
FunctionThatTakes10Arguments
)
{
Action
<
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
Invoke
(
Concat10
);
Action
<
std
::
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
Invoke
(
Concat10
);
EXPECT_EQ
(
"1234567890"
,
a
.
Perform
(
make_tuple
(
CharPtr
(
"1"
),
CharPtr
(
"2"
),
CharPtr
(
"3"
),
CharPtr
(
"4"
),
CharPtr
(
"5"
),
CharPtr
(
"6"
),
...
...
@@ -339,8 +341,7 @@ TEST(InvokeTest, FunctionWithUnusedParameters) {
// Tests using Invoke() with methods with parameters declared as Unused.
TEST
(
InvokeTest
,
MethodWithUnusedParameters
)
{
Foo
foo
;
Action
<
int
(
string
,
bool
,
int
,
int
)
>
a1
=
Invoke
(
&
foo
,
&
Foo
::
SumOfLast2
);
Action
<
int
(
std
::
string
,
bool
,
int
,
int
)
>
a1
=
Invoke
(
&
foo
,
&
Foo
::
SumOfLast2
);
EXPECT_EQ
(
12
,
a1
.
Perform
(
make_tuple
(
CharPtr
(
"hi"
),
true
,
10
,
2
)));
Action
<
int
(
char
,
double
,
int
,
int
)
>
a2
=
...
...
@@ -417,9 +418,9 @@ TEST(InvokeMethodTest, MethodThatTakes6Arguments) {
// Tests using Invoke() with a 7-argument method.
TEST
(
InvokeMethodTest
,
MethodThatTakes7Arguments
)
{
Foo
foo
;
Action
<
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
Invoke
(
&
foo
,
&
Foo
::
Concat7
);
Action
<
std
::
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
Invoke
(
&
foo
,
&
Foo
::
Concat7
);
EXPECT_EQ
(
"1234567"
,
a
.
Perform
(
make_tuple
(
CharPtr
(
"1"
),
CharPtr
(
"2"
),
CharPtr
(
"3"
),
CharPtr
(
"4"
),
CharPtr
(
"5"
),
CharPtr
(
"6"
),
...
...
@@ -429,9 +430,9 @@ TEST(InvokeMethodTest, MethodThatTakes7Arguments) {
// Tests using Invoke() with a 8-argument method.
TEST
(
InvokeMethodTest
,
MethodThatTakes8Arguments
)
{
Foo
foo
;
Action
<
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
Invoke
(
&
foo
,
&
Foo
::
Concat8
);
Action
<
std
::
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
Invoke
(
&
foo
,
&
Foo
::
Concat8
);
EXPECT_EQ
(
"12345678"
,
a
.
Perform
(
make_tuple
(
CharPtr
(
"1"
),
CharPtr
(
"2"
),
CharPtr
(
"3"
),
CharPtr
(
"4"
),
CharPtr
(
"5"
),
CharPtr
(
"6"
),
...
...
@@ -441,9 +442,10 @@ TEST(InvokeMethodTest, MethodThatTakes8Arguments) {
// Tests using Invoke() with a 9-argument method.
TEST
(
InvokeMethodTest
,
MethodThatTakes9Arguments
)
{
Foo
foo
;
Action
<
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
Invoke
(
&
foo
,
&
Foo
::
Concat9
);
Action
<
std
::
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
Invoke
(
&
foo
,
&
Foo
::
Concat9
);
EXPECT_EQ
(
"123456789"
,
a
.
Perform
(
make_tuple
(
CharPtr
(
"1"
),
CharPtr
(
"2"
),
CharPtr
(
"3"
),
CharPtr
(
"4"
),
CharPtr
(
"5"
),
CharPtr
(
"6"
),
...
...
@@ -453,9 +455,10 @@ TEST(InvokeMethodTest, MethodThatTakes9Arguments) {
// Tests using Invoke() with a 10-argument method.
TEST
(
InvokeMethodTest
,
MethodThatTakes10Arguments
)
{
Foo
foo
;
Action
<
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
Invoke
(
&
foo
,
&
Foo
::
Concat10
);
Action
<
std
::
string
(
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
,
const
char
*
)
>
a
=
Invoke
(
&
foo
,
&
Foo
::
Concat10
);
EXPECT_EQ
(
"1234567890"
,
a
.
Perform
(
make_tuple
(
CharPtr
(
"1"
),
CharPtr
(
"2"
),
CharPtr
(
"3"
),
CharPtr
(
"4"
),
CharPtr
(
"5"
),
CharPtr
(
"6"
),
...
...
@@ -495,8 +498,8 @@ TEST(ReturnArgActionTest, WorksForMultiArgBoolArg0) {
}
TEST
(
ReturnArgActionTest
,
WorksForMultiArgStringArg2
)
{
const
Action
<
string
(
int
,
int
,
string
,
int
)
>
a
=
ReturnArg
<
2
>
();
EXPECT_EQ
(
"seven"
,
a
.
Perform
(
make_tuple
(
5
,
6
,
string
(
"seven"
),
8
)));
const
Action
<
std
::
string
(
int
,
int
,
std
::
string
,
int
)
>
a
=
ReturnArg
<
2
>
();
EXPECT_EQ
(
"seven"
,
a
.
Perform
(
make_tuple
(
5
,
6
,
std
::
string
(
"seven"
),
8
)));
}
TEST
(
SaveArgActionTest
,
WorksForSameType
)
{
...
...
googlemock/test/gmock-nice-strict_test.cc
View file @
7cc548dc
...
...
@@ -51,7 +51,6 @@ class Mock {
namespace
testing
{
namespace
gmock_nice_strict_test
{
using
testing
::
internal
::
string
;
using
testing
::
GMOCK_FLAG
(
verbose
);
using
testing
::
HasSubstr
;
using
testing
::
NaggyMock
;
...
...
@@ -87,23 +86,23 @@ class MockFoo : public Foo {
class
MockBar
{
public:
explicit
MockBar
(
const
string
&
s
)
:
str_
(
s
)
{}
explicit
MockBar
(
const
std
::
string
&
s
)
:
str_
(
s
)
{}
MockBar
(
char
a1
,
char
a2
,
string
a3
,
string
a4
,
int
a5
,
int
a6
,
const
string
&
a7
,
const
string
&
a8
,
bool
a9
,
bool
a10
)
{
str_
=
string
()
+
a1
+
a2
+
a3
+
a4
+
static_cast
<
char
>
(
a5
)
+
MockBar
(
char
a1
,
char
a2
,
std
::
string
a3
,
std
::
string
a4
,
int
a5
,
int
a6
,
const
std
::
string
&
a7
,
const
std
::
string
&
a8
,
bool
a9
,
bool
a10
)
{
str_
=
std
::
string
()
+
a1
+
a2
+
a3
+
a4
+
static_cast
<
char
>
(
a5
)
+
static_cast
<
char
>
(
a6
)
+
a7
+
a8
+
(
a9
?
'T'
:
'F'
)
+
(
a10
?
'T'
:
'F'
);
}
virtual
~
MockBar
()
{}
const
string
&
str
()
const
{
return
str_
;
}
const
std
::
string
&
str
()
const
{
return
str_
;
}
MOCK_METHOD0
(
This
,
int
());
MOCK_METHOD2
(
That
,
string
(
int
,
bool
));
MOCK_METHOD2
(
That
,
std
::
string
(
int
,
bool
));
private:
string
str_
;
std
::
string
str_
;
GTEST_DISALLOW_COPY_AND_ASSIGN_
(
MockBar
);
};
...
...
@@ -112,7 +111,7 @@ class MockBar {
// Tests that a raw mock generates warnings for uninteresting calls.
TEST
(
RawMockTest
,
WarningForUninterestingCall
)
{
const
string
saved_flag
=
GMOCK_FLAG
(
verbose
);
const
std
::
string
saved_flag
=
GMOCK_FLAG
(
verbose
);
GMOCK_FLAG
(
verbose
)
=
"warning"
;
MockFoo
raw_foo
;
...
...
@@ -129,7 +128,7 @@ TEST(RawMockTest, WarningForUninterestingCall) {
// Tests that a raw mock generates warnings for uninteresting calls
// that delete the mock object.
TEST
(
RawMockTest
,
WarningForUninterestingCallAfterDeath
)
{
const
string
saved_flag
=
GMOCK_FLAG
(
verbose
);
const
std
::
string
saved_flag
=
GMOCK_FLAG
(
verbose
);
GMOCK_FLAG
(
verbose
)
=
"warning"
;
MockFoo
*
const
raw_foo
=
new
MockFoo
;
...
...
@@ -150,7 +149,7 @@ TEST(RawMockTest, WarningForUninterestingCallAfterDeath) {
TEST
(
RawMockTest
,
InfoForUninterestingCall
)
{
MockFoo
raw_foo
;
const
string
saved_flag
=
GMOCK_FLAG
(
verbose
);
const
std
::
string
saved_flag
=
GMOCK_FLAG
(
verbose
);
GMOCK_FLAG
(
verbose
)
=
"info"
;
CaptureStdout
();
raw_foo
.
DoThis
();
...
...
@@ -188,7 +187,7 @@ TEST(NiceMockTest, NoWarningForUninterestingCallAfterDeath) {
TEST
(
NiceMockTest
,
InfoForUninterestingCall
)
{
NiceMock
<
MockFoo
>
nice_foo
;
const
string
saved_flag
=
GMOCK_FLAG
(
verbose
);
const
std
::
string
saved_flag
=
GMOCK_FLAG
(
verbose
);
GMOCK_FLAG
(
verbose
)
=
"info"
;
CaptureStdout
();
nice_foo
.
DoThis
();
...
...
@@ -257,7 +256,7 @@ TEST(NiceMockTest, AcceptsClassNamedMock) {
// Tests that a naggy mock generates warnings for uninteresting calls.
TEST
(
NaggyMockTest
,
WarningForUninterestingCall
)
{
const
string
saved_flag
=
GMOCK_FLAG
(
verbose
);
const
std
::
string
saved_flag
=
GMOCK_FLAG
(
verbose
);
GMOCK_FLAG
(
verbose
)
=
"warning"
;
NaggyMock
<
MockFoo
>
naggy_foo
;
...
...
@@ -274,7 +273,7 @@ TEST(NaggyMockTest, WarningForUninterestingCall) {
// Tests that a naggy mock generates a warning for an uninteresting call
// that deletes the mock object.
TEST
(
NaggyMockTest
,
WarningForUninterestingCallAfterDeath
)
{
const
string
saved_flag
=
GMOCK_FLAG
(
verbose
);
const
std
::
string
saved_flag
=
GMOCK_FLAG
(
verbose
);
GMOCK_FLAG
(
verbose
)
=
"warning"
;
NaggyMock
<
MockFoo
>*
const
naggy_foo
=
new
NaggyMock
<
MockFoo
>
;
...
...
googlemock/test/gmock-spec-builders_test.cc
View file @
7cc548dc
...
...
@@ -97,7 +97,6 @@ using testing::internal::kErrorVerbosity;
using
testing
::
internal
::
kInfoVerbosity
;
using
testing
::
internal
::
kWarningVerbosity
;
using
testing
::
internal
::
linked_ptr
;
using
testing
::
internal
::
string
;
#if GTEST_HAS_STREAM_REDIRECTION
using
testing
::
HasSubstr
;
...
...
@@ -1954,7 +1953,7 @@ class MockC {
public:
MockC
()
{}
MOCK_METHOD6
(
VoidMethod
,
void
(
bool
cond
,
int
n
,
string
s
,
void
*
p
,
MOCK_METHOD6
(
VoidMethod
,
void
(
bool
cond
,
int
n
,
std
::
string
s
,
void
*
p
,
const
Printable
&
x
,
Unprintable
y
));
MOCK_METHOD0
(
NonVoidMethod
,
int
());
// NOLINT
...
...
@@ -1970,7 +1969,7 @@ class VerboseFlagPreservingFixture : public testing::Test {
~
VerboseFlagPreservingFixture
()
{
GMOCK_FLAG
(
verbose
)
=
saved_verbose_flag_
;
}
private:
const
string
saved_verbose_flag_
;
const
std
::
string
saved_verbose_flag_
;
GTEST_DISALLOW_COPY_AND_ASSIGN_
(
VerboseFlagPreservingFixture
);
};
...
...
@@ -2062,8 +2061,8 @@ class GMockVerboseFlagTest : public VerboseFlagPreservingFixture {
// contain the given function name in the stack trace. When it's
// false, the output should be empty.)
void
VerifyOutput
(
const
std
::
string
&
output
,
bool
should_print
,
const
string
&
expected_substring
,
const
string
&
function_name
)
{
const
std
::
string
&
expected_substring
,
const
std
::
string
&
function_name
)
{
if
(
should_print
)
{
EXPECT_THAT
(
output
.
c_str
(),
HasSubstr
(
expected_substring
));
# ifndef NDEBUG
...
...
@@ -2113,7 +2112,7 @@ class GMockVerboseFlagTest : public VerboseFlagPreservingFixture {
// Tests how the flag affects uninteresting calls on a naggy mock.
void
TestUninterestingCallOnNaggyMock
(
bool
should_print
)
{
NaggyMock
<
MockA
>
a
;
const
string
note
=
const
std
::
string
note
=
"NOTE: You can safely ignore the above warning unless this "
"call should not happen. Do not suppress it by blindly adding "
"an EXPECT_CALL() if you don't mean to enforce the call. "
...
...
googlemock/test/gmock_stress_test.cc
View file @
7cc548dc
...
...
@@ -51,7 +51,7 @@ const int kRepeat = 50;
class
MockFoo
{
public:
MOCK_METHOD1
(
Bar
,
int
(
int
n
));
// NOLINT
MOCK_METHOD2
(
Baz
,
char
(
const
char
*
s1
,
const
internal
::
string
&
s2
));
// NOLINT
MOCK_METHOD2
(
Baz
,
char
(
const
char
*
s1
,
const
std
::
string
&
s2
));
// NOLINT
};
// Helper for waiting for the given thread to finish and then deleting it.
...
...
googletest/include/gtest/gtest-printers.h
View file @
7cc548dc
...
...
@@ -151,10 +151,10 @@ template <typename T>
class
TypeWithoutFormatter
<
T
,
kProtobuf
>
{
public:
static
void
PrintValue
(
const
T
&
value
,
::
std
::
ostream
*
os
)
{
const
::
testing
::
internal
::
string
short
_str
=
value
.
ShortDebugString
();
const
::
testing
::
in
t
er
nal
::
string
pretty_str
=
short_str
.
length
()
<=
kProtobufOneLinerMaxLength
?
short_str
:
(
"
\n
"
+
value
.
DebugString
());
std
::
string
pretty
_str
=
value
.
ShortDebugString
();
if
(
pretty_str
.
length
()
>
kProtobufOneL
iner
MaxLength
)
{
pretty_str
=
"
\n
"
+
value
.
DebugString
();
}
*
os
<<
(
"<"
+
pretty_str
+
">"
);
}
};
...
...
@@ -805,7 +805,7 @@ class UniversalTersePrinter<const char*> {
if
(
str
==
NULL
)
{
*
os
<<
"NULL"
;
}
else
{
UniversalPrint
(
string
(
str
),
os
);
UniversalPrint
(
std
::
string
(
str
),
os
);
}
}
};
...
...
googletest/include/gtest/gtest-spi.h
View file @
7cc548dc
...
...
@@ -97,13 +97,12 @@ class GTEST_API_ SingleFailureChecker {
public:
// The constructor remembers the arguments.
SingleFailureChecker
(
const
TestPartResultArray
*
results
,
TestPartResult
::
Type
type
,
const
string
&
substr
);
TestPartResult
::
Type
type
,
const
std
::
string
&
substr
);
~
SingleFailureChecker
();
private:
const
TestPartResultArray
*
const
results_
;
const
TestPartResult
::
Type
type_
;
const
string
substr_
;
const
std
::
string
substr_
;
GTEST_DISALLOW_COPY_AND_ASSIGN_
(
SingleFailureChecker
);
};
...
...
googletest/include/gtest/internal/gtest-internal.h
View file @
7cc548dc
...
...
@@ -502,9 +502,10 @@ typedef void (*SetUpTestCaseFunc)();
typedef
void
(
*
TearDownTestCaseFunc
)();
struct
CodeLocation
{
CodeLocation
(
const
string
&
a_file
,
int
a_line
)
:
file
(
a_file
),
line
(
a_line
)
{}
CodeLocation
(
const
std
::
string
&
a_file
,
int
a_line
)
:
file
(
a_file
),
line
(
a_line
)
{}
string
file
;
std
::
string
file
;
int
line
;
};
...
...
googletest/include/gtest/internal/gtest-param-util.h
View file @
7cc548dc
...
...
@@ -472,7 +472,7 @@ class ParameterizedTestCaseInfoBase {
virtual
~
ParameterizedTestCaseInfoBase
()
{}
// Base part of test case name for display purposes.
virtual
const
string
&
GetTestCaseName
()
const
=
0
;
virtual
const
std
::
string
&
GetTestCaseName
()
const
=
0
;
// Test case id to verify identity.
virtual
TypeId
GetTestCaseTypeId
()
const
=
0
;
// UnitTest class invokes this method to register tests in this
...
...
@@ -511,7 +511,7 @@ class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase {
:
test_case_name_
(
name
),
code_location_
(
code_location
)
{}
// Test case base name for display purposes.
virtual
const
string
&
GetTestCaseName
()
const
{
return
test_case_name_
;
}
virtual
const
std
::
string
&
GetTestCaseName
()
const
{
return
test_case_name_
;
}
// Test case id to verify identity.
virtual
TypeId
GetTestCaseTypeId
()
const
{
return
GetTypeId
<
TestCase
>
();
}
// TEST_P macro uses AddTestPattern() to record information
...
...
@@ -529,11 +529,10 @@ class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase {
}
// INSTANTIATE_TEST_CASE_P macro uses AddGenerator() to record information
// about a generator.
int
AddTestCaseInstantiation
(
const
string
&
instantiation_name
,
int
AddTestCaseInstantiation
(
const
std
::
string
&
instantiation_name
,
GeneratorCreationFunc
*
func
,
ParamNameGeneratorFunc
*
name_func
,
const
char
*
file
,
int
line
)
{
const
char
*
file
,
int
line
)
{
instantiations_
.
push_back
(
InstantiationInfo
(
instantiation_name
,
func
,
name_func
,
file
,
line
));
return
0
;
// Return value used only to run this method in namespace scope.
...
...
@@ -550,13 +549,13 @@ class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase {
for
(
typename
InstantiationContainer
::
iterator
gen_it
=
instantiations_
.
begin
();
gen_it
!=
instantiations_
.
end
();
++
gen_it
)
{
const
string
&
instantiation_name
=
gen_it
->
name
;
const
std
::
string
&
instantiation_name
=
gen_it
->
name
;
ParamGenerator
<
ParamType
>
generator
((
*
gen_it
->
generator
)());
ParamNameGeneratorFunc
*
name_func
=
gen_it
->
name_func
;
const
char
*
file
=
gen_it
->
file
;
int
line
=
gen_it
->
line
;
string
test_case_name
;
std
::
string
test_case_name
;
if
(
!
instantiation_name
.
empty
()
)
test_case_name
=
instantiation_name
+
"/"
;
test_case_name
+=
test_info
->
test_case_base_name
;
...
...
@@ -609,8 +608,8 @@ class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase {
test_base_name
(
a_test_base_name
),
test_meta_factory
(
a_test_meta_factory
)
{}
const
string
test_case_base_name
;
const
string
test_base_name
;
const
std
::
string
test_case_base_name
;
const
std
::
string
test_base_name
;
const
scoped_ptr
<
TestMetaFactoryBase
<
ParamType
>
>
test_meta_factory
;
};
typedef
::
std
::
vector
<
linked_ptr
<
TestInfo
>
>
TestInfoContainer
;
...
...
@@ -651,7 +650,7 @@ class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase {
return
true
;
}
const
string
test_case_name_
;
const
std
::
string
test_case_name_
;
CodeLocation
code_location_
;
TestInfoContainer
tests_
;
InstantiationContainer
instantiations_
;
...
...
Prev
1
2
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment