Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
googletest
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
googletest
Commits
b1c7f93c
Commit
b1c7f93c
authored
Mar 24, 2010
by
zhanyong.wan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improves matcher messages across the board.
parent
676e8cc6
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
107 additions
and
34 deletions
+107
-34
gmock-generated-matchers.h
include/gmock/gmock-generated-matchers.h
+18
-3
gmock-generated-matchers.h.pump
include/gmock/gmock-generated-matchers.h.pump
+15
-2
gmock-matchers.h
include/gmock/gmock-matchers.h
+0
-0
gmock-spec-builders.h
include/gmock/gmock-spec-builders.h
+6
-6
gmock-generated-matchers_test.cc
test/gmock-generated-matchers_test.cc
+65
-20
gmock-matchers_test.cc
test/gmock-matchers_test.cc
+0
-0
gmock_output_test_golden.txt
test/gmock_output_test_golden.txt
+3
-3
No files found.
include/gmock/gmock-generated-matchers.h
View file @
b1c7f93c
// This file was GENERATED by a script. DO NOT EDIT BY HAND!!!
// This file was GENERATED by command:
// pump.py gmock-generated-matchers.h.pump
// DO NOT EDIT BY HAND!!!
// Copyright 2008, Google Inc.
// Copyright 2008, Google Inc.
// All rights reserved.
// All rights reserved.
...
@@ -231,15 +233,28 @@ class ArgsMatcherImpl : public MatcherInterface<ArgsTuple> {
...
@@ -231,15 +233,28 @@ class ArgsMatcherImpl : public MatcherInterface<ArgsTuple> {
virtual
bool
MatchAndExplain
(
ArgsTuple
args
,
virtual
bool
MatchAndExplain
(
ArgsTuple
args
,
MatchResultListener
*
listener
)
const
{
MatchResultListener
*
listener
)
const
{
return
inner_matcher_
.
MatchAndExplain
(
GetSelectedArgs
(
args
),
listener
);
const
SelectedArgs
&
selected_args
=
GetSelectedArgs
(
args
);
if
(
!
listener
->
IsInterested
())
return
inner_matcher_
.
Matches
(
selected_args
);
PrintIndices
(
listener
->
stream
());
*
listener
<<
"are "
<<
PrintToString
(
selected_args
);
StringMatchResultListener
inner_listener
;
const
bool
match
=
inner_matcher_
.
MatchAndExplain
(
selected_args
,
&
inner_listener
);
PrintIfNotEmpty
(
inner_listener
.
str
(),
listener
->
stream
());
return
match
;
}
}
virtual
void
DescribeTo
(
::
std
::
ostream
*
os
)
const
{
virtual
void
DescribeTo
(
::
std
::
ostream
*
os
)
const
{
*
os
<<
"are a tuple "
;
PrintIndices
(
os
);
PrintIndices
(
os
);
inner_matcher_
.
DescribeTo
(
os
);
inner_matcher_
.
DescribeTo
(
os
);
}
}
virtual
void
DescribeNegationTo
(
::
std
::
ostream
*
os
)
const
{
virtual
void
DescribeNegationTo
(
::
std
::
ostream
*
os
)
const
{
*
os
<<
"are a tuple "
;
PrintIndices
(
os
);
PrintIndices
(
os
);
inner_matcher_
.
DescribeNegationTo
(
os
);
inner_matcher_
.
DescribeNegationTo
(
os
);
}
}
...
@@ -252,7 +267,7 @@ class ArgsMatcherImpl : public MatcherInterface<ArgsTuple> {
...
@@ -252,7 +267,7 @@ class ArgsMatcherImpl : public MatcherInterface<ArgsTuple> {
// Prints the indices of the selected fields.
// Prints the indices of the selected fields.
static
void
PrintIndices
(
::
std
::
ostream
*
os
)
{
static
void
PrintIndices
(
::
std
::
ostream
*
os
)
{
*
os
<<
"
are a tuple
whose fields ("
;
*
os
<<
"whose fields ("
;
const
int
indices
[
10
]
=
{
k0
,
k1
,
k2
,
k3
,
k4
,
k5
,
k6
,
k7
,
k8
,
k9
};
const
int
indices
[
10
]
=
{
k0
,
k1
,
k2
,
k3
,
k4
,
k5
,
k6
,
k7
,
k8
,
k9
};
for
(
int
i
=
0
;
i
<
10
;
i
++
)
{
for
(
int
i
=
0
;
i
<
10
;
i
++
)
{
if
(
indices
[
i
]
<
0
)
if
(
indices
[
i
]
<
0
)
...
...
include/gmock/gmock-generated-matchers.h.pump
View file @
b1c7f93c
...
@@ -118,15 +118,28 @@ class ArgsMatcherImpl : public MatcherInterface<ArgsTuple> {
...
@@ -118,15 +118,28 @@ class ArgsMatcherImpl : public MatcherInterface<ArgsTuple> {
virtual
bool
MatchAndExplain
(
ArgsTuple
args
,
virtual
bool
MatchAndExplain
(
ArgsTuple
args
,
MatchResultListener
*
listener
)
const
{
MatchResultListener
*
listener
)
const
{
return
inner_matcher_
.
MatchAndExplain
(
GetSelectedArgs
(
args
),
listener
);
const
SelectedArgs
&
selected_args
=
GetSelectedArgs
(
args
);
if
(
!
listener
->
IsInterested
())
return
inner_matcher_
.
Matches
(
selected_args
);
PrintIndices
(
listener
->
stream
());
*
listener
<<
"are "
<<
PrintToString
(
selected_args
);
StringMatchResultListener
inner_listener
;
const
bool
match
=
inner_matcher_
.
MatchAndExplain
(
selected_args
,
&
inner_listener
);
PrintIfNotEmpty
(
inner_listener
.
str
(),
listener
->
stream
());
return
match
;
}
}
virtual
void
DescribeTo
(
::
std
::
ostream
*
os
)
const
{
virtual
void
DescribeTo
(
::
std
::
ostream
*
os
)
const
{
*
os
<<
"are a tuple "
;
PrintIndices
(
os
);
PrintIndices
(
os
);
inner_matcher_
.
DescribeTo
(
os
);
inner_matcher_
.
DescribeTo
(
os
);
}
}
virtual
void
DescribeNegationTo
(
::
std
::
ostream
*
os
)
const
{
virtual
void
DescribeNegationTo
(
::
std
::
ostream
*
os
)
const
{
*
os
<<
"are a tuple "
;
PrintIndices
(
os
);
PrintIndices
(
os
);
inner_matcher_
.
DescribeNegationTo
(
os
);
inner_matcher_
.
DescribeNegationTo
(
os
);
}
}
...
@@ -138,7 +151,7 @@ class ArgsMatcherImpl : public MatcherInterface<ArgsTuple> {
...
@@ -138,7 +151,7 @@ class ArgsMatcherImpl : public MatcherInterface<ArgsTuple> {
// Prints the indices of the selected fields.
// Prints the indices of the selected fields.
static
void
PrintIndices
(
::
std
::
ostream
*
os
)
{
static
void
PrintIndices
(
::
std
::
ostream
*
os
)
{
*
os
<<
"
are a tuple
whose fields ("
;
*
os
<<
"whose fields ("
;
const
int
indices
[
$
n
]
=
{
$
ks
};
const
int
indices
[
$
n
]
=
{
$
ks
};
for
(
int
i
=
0
;
i
<
$
n
;
i
++
)
{
for
(
int
i
=
0
;
i
<
$
n
;
i
++
)
{
if
(
indices
[
i
]
<
0
)
if
(
indices
[
i
]
<
0
)
...
...
include/gmock/gmock-matchers.h
View file @
b1c7f93c
This diff is collapsed.
Click to expand it.
include/gmock/gmock-spec-builders.h
View file @
b1c7f93c
...
@@ -993,8 +993,8 @@ class TypedExpectation : public ExpectationBase {
...
@@ -993,8 +993,8 @@ class TypedExpectation : public ExpectationBase {
// Describes the result of matching the arguments against this
// Describes the result of matching the arguments against this
// expectation to the given ostream.
// expectation to the given ostream.
// L >= g_gmock_mutex
// L >= g_gmock_mutex
void
Describe
MatchResultTo
(
const
ArgumentTuple
&
args
,
void
Explain
MatchResultTo
(
const
ArgumentTuple
&
args
,
::
std
::
ostream
*
os
)
const
{
::
std
::
ostream
*
os
)
const
{
g_gmock_mutex
.
AssertHeld
();
g_gmock_mutex
.
AssertHeld
();
if
(
is_retired
())
{
if
(
is_retired
())
{
...
@@ -1002,7 +1002,7 @@ class TypedExpectation : public ExpectationBase {
...
@@ -1002,7 +1002,7 @@ class TypedExpectation : public ExpectationBase {
<<
" Actual: it is retired
\n
"
;
<<
" Actual: it is retired
\n
"
;
}
else
if
(
!
Matches
(
args
))
{
}
else
if
(
!
Matches
(
args
))
{
if
(
!
TupleMatches
(
matchers_
,
args
))
{
if
(
!
TupleMatches
(
matchers_
,
args
))
{
Describe
MatchFailureTupleTo
(
matchers_
,
args
,
os
);
Explain
MatchFailureTupleTo
(
matchers_
,
args
,
os
);
}
}
StringMatchResultListener
listener
;
StringMatchResultListener
listener
;
if
(
!
extra_matcher_
.
MatchAndExplain
(
args
,
&
listener
))
{
if
(
!
extra_matcher_
.
MatchAndExplain
(
args
,
&
listener
))
{
...
@@ -1010,7 +1010,7 @@ class TypedExpectation : public ExpectationBase {
...
@@ -1010,7 +1010,7 @@ class TypedExpectation : public ExpectationBase {
extra_matcher_
.
DescribeTo
(
os
);
extra_matcher_
.
DescribeTo
(
os
);
*
os
<<
"
\n
Actual: don't match"
;
*
os
<<
"
\n
Actual: don't match"
;
internal
::
StreamInParensAsNeeded
(
listener
.
str
(),
os
);
internal
::
PrintIfNotEmpty
(
listener
.
str
(),
os
);
*
os
<<
"
\n
"
;
*
os
<<
"
\n
"
;
}
}
}
else
if
(
!
AllPrerequisitesAreSatisfied
())
{
}
else
if
(
!
AllPrerequisitesAreSatisfied
())
{
...
@@ -1028,7 +1028,7 @@ class TypedExpectation : public ExpectationBase {
...
@@ -1028,7 +1028,7 @@ class TypedExpectation : public ExpectationBase {
*
os
<<
" (end of pre-requisites)
\n
"
;
*
os
<<
" (end of pre-requisites)
\n
"
;
}
else
{
}
else
{
// This line is here just for completeness' sake. It will never
// This line is here just for completeness' sake. It will never
// be executed as currently the
Describe
MatchResultTo() function
// be executed as currently the
Explain
MatchResultTo() function
// is called only when the mock function call does NOT match the
// is called only when the mock function call does NOT match the
// expectation.
// expectation.
*
os
<<
"The call matches the expectation.
\n
"
;
*
os
<<
"The call matches the expectation.
\n
"
;
...
@@ -1618,7 +1618,7 @@ class FunctionMockerBase : public UntypedFunctionMockerBase {
...
@@ -1618,7 +1618,7 @@ class FunctionMockerBase : public UntypedFunctionMockerBase {
*
why
<<
"tried expectation #"
<<
i
<<
": "
;
*
why
<<
"tried expectation #"
<<
i
<<
": "
;
}
}
*
why
<<
expectations_
[
i
]
->
source_text
()
<<
"...
\n
"
;
*
why
<<
expectations_
[
i
]
->
source_text
()
<<
"...
\n
"
;
expectations_
[
i
]
->
Describe
MatchResultTo
(
args
,
why
);
expectations_
[
i
]
->
Explain
MatchResultTo
(
args
,
why
);
expectations_
[
i
]
->
DescribeCallCountTo
(
why
);
expectations_
[
i
]
->
DescribeCallCountTo
(
why
);
}
}
}
}
...
...
test/gmock-generated-matchers_test.cc
View file @
b1c7f93c
...
@@ -211,6 +211,43 @@ TEST(ArgsTest, DescribesNegationCorrectly) {
...
@@ -211,6 +211,43 @@ TEST(ArgsTest, DescribesNegationCorrectly) {
DescribeNegation
(
m
));
DescribeNegation
(
m
));
}
}
TEST
(
ArgsTest
,
ExplainsMatchResultWithoutInnerExplanation
)
{
const
Matcher
<
tuple
<
bool
,
int
,
int
>
>
m
=
Args
<
1
,
2
>
(
Eq
());
EXPECT_EQ
(
"whose fields (#1, #2) are (42, 42)"
,
Explain
(
m
,
make_tuple
(
false
,
42
,
42
)));
EXPECT_EQ
(
"whose fields (#1, #2) are (42, 43)"
,
Explain
(
m
,
make_tuple
(
false
,
42
,
43
)));
}
// For testing Args<>'s explanation.
class
LessThanMatcher
:
public
MatcherInterface
<
tuple
<
char
,
int
>
>
{
public
:
virtual
void
DescribeTo
(
::
std
::
ostream
*
os
)
const
{}
virtual
bool
MatchAndExplain
(
tuple
<
char
,
int
>
value
,
MatchResultListener
*
listener
)
const
{
const
int
diff
=
get
<
0
>
(
value
)
-
get
<
1
>
(
value
);
if
(
diff
>
0
)
{
*
listener
<<
"where the first value is "
<<
diff
<<
" more than the second"
;
}
return
diff
<
0
;
}
};
Matcher
<
tuple
<
char
,
int
>
>
LessThan
()
{
return
MakeMatcher
(
new
LessThanMatcher
);
}
TEST
(
ArgsTest
,
ExplainsMatchResultWithInnerExplanation
)
{
const
Matcher
<
tuple
<
char
,
int
,
int
>
>
m
=
Args
<
0
,
2
>
(
LessThan
());
EXPECT_EQ
(
"whose fields (#0, #2) are ('a' (97), 42), "
"where the first value is 55 more than the second"
,
Explain
(
m
,
make_tuple
(
'a'
,
42
,
42
)));
EXPECT_EQ
(
"whose fields (#0, #2) are ('
\\
0', 43)"
,
Explain
(
m
,
make_tuple
(
'\0'
,
42
,
43
)));
}
// For testing ExplainMatchResultTo().
// For testing ExplainMatchResultTo().
class
GreaterThanMatcher
:
public
MatcherInterface
<
int
>
{
class
GreaterThanMatcher
:
public
MatcherInterface
<
int
>
{
public
:
public
:
...
@@ -224,11 +261,11 @@ class GreaterThanMatcher : public MatcherInterface<int> {
...
@@ -224,11 +261,11 @@ class GreaterThanMatcher : public MatcherInterface<int> {
MatchResultListener
*
listener
)
const
{
MatchResultListener
*
listener
)
const
{
const
int
diff
=
lhs
-
rhs_
;
const
int
diff
=
lhs
-
rhs_
;
if
(
diff
>
0
)
{
if
(
diff
>
0
)
{
*
listener
<<
"is "
<<
diff
<<
" more than "
<<
rhs_
;
*
listener
<<
"
which
is "
<<
diff
<<
" more than "
<<
rhs_
;
}
else
if
(
diff
==
0
)
{
}
else
if
(
diff
==
0
)
{
*
listener
<<
"is the same as "
<<
rhs_
;
*
listener
<<
"
which
is the same as "
<<
rhs_
;
}
else
{
}
else
{
*
listener
<<
"is "
<<
-
diff
<<
" less than "
<<
rhs_
;
*
listener
<<
"
which
is "
<<
-
diff
<<
" less than "
<<
rhs_
;
}
}
return
lhs
>
rhs_
;
return
lhs
>
rhs_
;
...
@@ -254,32 +291,32 @@ TEST(ElementsAreTest, CanDescribeExpectingNoElement) {
...
@@ -254,32 +291,32 @@ TEST(ElementsAreTest, CanDescribeExpectingNoElement) {
TEST
(
ElementsAreTest
,
CanDescribeExpectingOneElement
)
{
TEST
(
ElementsAreTest
,
CanDescribeExpectingOneElement
)
{
Matcher
<
vector
<
int
>
>
m
=
ElementsAre
(
Gt
(
5
));
Matcher
<
vector
<
int
>
>
m
=
ElementsAre
(
Gt
(
5
));
EXPECT_EQ
(
"has 1 element that is
greater than
5"
,
Describe
(
m
));
EXPECT_EQ
(
"has 1 element that is
>
5"
,
Describe
(
m
));
}
}
TEST
(
ElementsAreTest
,
CanDescribeExpectingManyElements
)
{
TEST
(
ElementsAreTest
,
CanDescribeExpectingManyElements
)
{
Matcher
<
list
<
string
>
>
m
=
ElementsAre
(
StrEq
(
"one"
),
"two"
);
Matcher
<
list
<
string
>
>
m
=
ElementsAre
(
StrEq
(
"one"
),
"two"
);
EXPECT_EQ
(
"has 2 elements where
\n
"
EXPECT_EQ
(
"has 2 elements where
\n
"
"element 0 is equal to
\"
one
\"
,
\n
"
"element
#
0 is equal to
\"
one
\"
,
\n
"
"element 1 is equal to
\"
two
\"
"
,
Describe
(
m
));
"element
#
1 is equal to
\"
two
\"
"
,
Describe
(
m
));
}
}
TEST
(
ElementsAreTest
,
CanDescribeNegationOfExpectingNoElement
)
{
TEST
(
ElementsAreTest
,
CanDescribeNegationOfExpectingNoElement
)
{
Matcher
<
vector
<
int
>
>
m
=
ElementsAre
();
Matcher
<
vector
<
int
>
>
m
=
ElementsAre
();
EXPECT_EQ
(
"is
no
t empty"
,
DescribeNegation
(
m
));
EXPECT_EQ
(
"is
n'
t empty"
,
DescribeNegation
(
m
));
}
}
TEST
(
ElementsAreTest
,
CanDescribeNegationOfExpectingOneElment
)
{
TEST
(
ElementsAreTest
,
CanDescribeNegationOfExpectingOneElment
)
{
Matcher
<
const
list
<
int
>&
>
m
=
ElementsAre
(
Gt
(
5
));
Matcher
<
const
list
<
int
>&
>
m
=
ElementsAre
(
Gt
(
5
));
EXPECT_EQ
(
"does
no
t have 1 element, or
\n
"
EXPECT_EQ
(
"does
n'
t have 1 element, or
\n
"
"element
0 is not greater than
5"
,
DescribeNegation
(
m
));
"element
#0 isn't >
5"
,
DescribeNegation
(
m
));
}
}
TEST
(
ElementsAreTest
,
CanDescribeNegationOfExpectingManyElements
)
{
TEST
(
ElementsAreTest
,
CanDescribeNegationOfExpectingManyElements
)
{
Matcher
<
const
list
<
string
>&
>
m
=
ElementsAre
(
"one"
,
"two"
);
Matcher
<
const
list
<
string
>&
>
m
=
ElementsAre
(
"one"
,
"two"
);
EXPECT_EQ
(
"does
no
t have 2 elements, or
\n
"
EXPECT_EQ
(
"does
n'
t have 2 elements, or
\n
"
"element
0 is no
t equal to
\"
one
\"
, or
\n
"
"element
#0 isn'
t equal to
\"
one
\"
, or
\n
"
"element
1 is no
t equal to
\"
two
\"
"
,
DescribeNegation
(
m
));
"element
#1 isn'
t equal to
\"
two
\"
"
,
DescribeNegation
(
m
));
}
}
TEST
(
ElementsAreTest
,
DoesNotExplainTrivialMatch
)
{
TEST
(
ElementsAreTest
,
DoesNotExplainTrivialMatch
)
{
...
@@ -297,8 +334,9 @@ TEST(ElementsAreTest, ExplainsNonTrivialMatch) {
...
@@ -297,8 +334,9 @@ TEST(ElementsAreTest, ExplainsNonTrivialMatch) {
const
int
a
[]
=
{
10
,
0
,
100
};
const
int
a
[]
=
{
10
,
0
,
100
};
vector
<
int
>
test_vector
(
a
,
a
+
GMOCK_ARRAY_SIZE_
(
a
));
vector
<
int
>
test_vector
(
a
,
a
+
GMOCK_ARRAY_SIZE_
(
a
));
EXPECT_EQ
(
"element 0 is 9 more than 1,
\n
"
EXPECT_EQ
(
"whose element #0 matches, which is 9 more than 1,
\n
"
"element 2 is 98 more than 2"
,
Explain
(
m
,
test_vector
));
"and whose element #2 matches, which is 98 more than 2"
,
Explain
(
m
,
test_vector
));
}
}
TEST
(
ElementsAreTest
,
CanExplainMismatchWrongSize
)
{
TEST
(
ElementsAreTest
,
CanExplainMismatchWrongSize
)
{
...
@@ -309,7 +347,7 @@ TEST(ElementsAreTest, CanExplainMismatchWrongSize) {
...
@@ -309,7 +347,7 @@ TEST(ElementsAreTest, CanExplainMismatchWrongSize) {
EXPECT_EQ
(
""
,
Explain
(
m
,
test_list
));
EXPECT_EQ
(
""
,
Explain
(
m
,
test_list
));
test_list
.
push_back
(
1
);
test_list
.
push_back
(
1
);
EXPECT_EQ
(
"has 1 element"
,
Explain
(
m
,
test_list
));
EXPECT_EQ
(
"
which
has 1 element"
,
Explain
(
m
,
test_list
));
}
}
TEST
(
ElementsAreTest
,
CanExplainMismatchRightSize
)
{
TEST
(
ElementsAreTest
,
CanExplainMismatchRightSize
)
{
...
@@ -318,10 +356,11 @@ TEST(ElementsAreTest, CanExplainMismatchRightSize) {
...
@@ -318,10 +356,11 @@ TEST(ElementsAreTest, CanExplainMismatchRightSize) {
vector
<
int
>
v
;
vector
<
int
>
v
;
v
.
push_back
(
2
);
v
.
push_back
(
2
);
v
.
push_back
(
1
);
v
.
push_back
(
1
);
EXPECT_EQ
(
"
element
0 doesn't match"
,
Explain
(
m
,
v
));
EXPECT_EQ
(
"
whose element #
0 doesn't match"
,
Explain
(
m
,
v
));
v
[
0
]
=
1
;
v
[
0
]
=
1
;
EXPECT_EQ
(
"element 1 doesn't match (is 4 less than 5)"
,
Explain
(
m
,
v
));
EXPECT_EQ
(
"whose element #1 doesn't match, which is 4 less than 5"
,
Explain
(
m
,
v
));
}
}
TEST
(
ElementsAreTest
,
MatchesOneElementVector
)
{
TEST
(
ElementsAreTest
,
MatchesOneElementVector
)
{
...
@@ -1030,16 +1069,22 @@ TEST(ContainsTest, SetDoesNotMatchWhenElementIsNotInContainer) {
...
@@ -1030,16 +1069,22 @@ TEST(ContainsTest, SetDoesNotMatchWhenElementIsNotInContainer) {
EXPECT_THAT
(
c_string_set
,
Not
(
Contains
(
string
(
"hello"
).
c_str
())));
EXPECT_THAT
(
c_string_set
,
Not
(
Contains
(
string
(
"hello"
).
c_str
())));
}
}
TEST
(
ContainsTest
,
DescribesItself
Correctly
)
{
TEST
(
ContainsTest
,
ExplainsMatchResult
Correctly
)
{
const
int
a
[
2
]
=
{
1
,
2
};
const
int
a
[
2
]
=
{
1
,
2
};
Matcher
<
const
int
(
&
)[
2
]
>
m
=
Contains
(
2
);
Matcher
<
const
int
(
&
)[
2
]
>
m
=
Contains
(
2
);
EXPECT_EQ
(
"
element
1 matches"
,
Explain
(
m
,
a
));
EXPECT_EQ
(
"
whose element #
1 matches"
,
Explain
(
m
,
a
));
m
=
Contains
(
3
);
m
=
Contains
(
3
);
EXPECT_EQ
(
""
,
Explain
(
m
,
a
));
EXPECT_EQ
(
""
,
Explain
(
m
,
a
));
m
=
Contains
(
GreaterThan
(
0
));
EXPECT_EQ
(
"whose element #0 matches, which is 1 more than 0"
,
Explain
(
m
,
a
));
m
=
Contains
(
GreaterThan
(
10
));
EXPECT_EQ
(
""
,
Explain
(
m
,
a
));
}
}
TEST
(
ContainsTest
,
ExplainsMatchResult
Correctly
)
{
TEST
(
ContainsTest
,
DescribesItself
Correctly
)
{
Matcher
<
vector
<
int
>
>
m
=
Contains
(
1
);
Matcher
<
vector
<
int
>
>
m
=
Contains
(
1
);
EXPECT_EQ
(
"contains at least one element that is equal to 1"
,
Describe
(
m
));
EXPECT_EQ
(
"contains at least one element that is equal to 1"
,
Describe
(
m
));
...
...
test/gmock-matchers_test.cc
View file @
b1c7f93c
This diff is collapsed.
Click to expand it.
test/gmock_output_test_golden.txt
View file @
b1c7f93c
...
@@ -175,8 +175,8 @@ Google Mock tried the following 1 expectation, but it didn't match:
...
@@ -175,8 +175,8 @@ Google Mock tried the following 1 expectation, but it didn't match:
FILE:#: EXPECT_CALL(foo_, Bar(Ref(s), _, Ge(0)))...
FILE:#: EXPECT_CALL(foo_, Bar(Ref(s), _, Ge(0)))...
Expected arg #0: references the variable @0x# "Hi"
Expected arg #0: references the variable @0x# "Hi"
Actual: "Ho"
(is located @0x#)
Actual: "Ho"
, which is located @0x#
Expected arg #2: is
greater than or equal to
0
Expected arg #2: is
>=
0
Actual: -0.1
Actual: -0.1
Expected: to be called once
Expected: to be called once
Actual: never called - unsatisfied and active
Actual: never called - unsatisfied and active
...
@@ -204,7 +204,7 @@ Unexpected mock function call - returning default value.
...
@@ -204,7 +204,7 @@ Unexpected mock function call - returning default value.
Google Mock tried the following 1 expectation, but it didn't match:
Google Mock tried the following 1 expectation, but it didn't match:
FILE:#: EXPECT_CALL(foo_, Bar2(Ge(2), Ge(1)))...
FILE:#: EXPECT_CALL(foo_, Bar2(Ge(2), Ge(1)))...
Expected arg #0: is
greater than or equal to
2
Expected arg #0: is
>=
2
Actual: 1
Actual: 1
Expected args: are a pair (x, y) where x >= y
Expected args: are a pair (x, y) where x >= y
Actual: don't match
Actual: don't match
...
...
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