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
67a240a1
Unverified
Commit
67a240a1
authored
Oct 16, 2018
by
Jonathan Wendeborn
Browse files
Added Mock::IsNaggy, IsNice, and IsStrict
parent
ecd53086
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
69 additions
and
0 deletions
+69
-0
googlemock/include/gmock/gmock-spec-builders.h
googlemock/include/gmock/gmock-spec-builders.h
+10
-0
googlemock/src/gmock-spec-builders.cc
googlemock/src/gmock-spec-builders.cc
+29
-0
googlemock/test/gmock-nice-strict_test.cc
googlemock/test/gmock-nice-strict_test.cc
+30
-0
No files found.
googlemock/include/gmock/gmock-spec-builders.h
View file @
67a240a1
...
...
@@ -389,6 +389,16 @@ class GTEST_API_ Mock {
static
bool
VerifyAndClear
(
void
*
mock_obj
)
GTEST_LOCK_EXCLUDED_
(
internal
::
g_gmock_mutex
);
// Returns wether the mock was created as a naggy mock (default)
static
bool
IsNaggy
(
void
*
mock_obj
)
GTEST_LOCK_EXCLUDED_
(
internal
::
g_gmock_mutex
);
// Returns wether the mock was created as a nice mock
static
bool
IsNice
(
void
*
mock_obj
)
GTEST_LOCK_EXCLUDED_
(
internal
::
g_gmock_mutex
);
// Returns wether the mock was created as a strict mock
static
bool
IsStrict
(
void
*
mock_obj
)
GTEST_LOCK_EXCLUDED_
(
internal
::
g_gmock_mutex
);
private:
friend
class
internal
::
UntypedFunctionMockerBase
;
...
...
googlemock/src/gmock-spec-builders.cc
View file @
67a240a1
...
...
@@ -707,6 +707,35 @@ bool Mock::VerifyAndClearExpectationsLocked(void* mock_obj)
return
expectations_met
;
}
namespace
{
// checks whether the specified mock_obj has a registered call reaction
bool
HasCallReaction
(
void
*
mock_obj
,
internal
::
CallReaction
reaction
)
{
using
internal
::
CallReaction
;
const
auto
found
=
g_uninteresting_call_reaction
.
find
(
mock_obj
);
if
(
found
==
g_uninteresting_call_reaction
.
cend
())
{
return
internal
::
CallReaction
::
kDefault
==
reaction
;
}
return
found
->
second
==
reaction
;
}
}
bool
Mock
::
IsNaggy
(
void
*
mock_obj
)
GTEST_LOCK_EXCLUDED_
(
internal
::
g_gmock_mutex
)
{
internal
::
MutexLock
l
(
&
internal
::
g_gmock_mutex
);
return
HasCallReaction
(
mock_obj
,
internal
::
CallReaction
::
kWarn
);
}
bool
Mock
::
IsNice
(
void
*
mock_obj
)
GTEST_LOCK_EXCLUDED_
(
internal
::
g_gmock_mutex
)
{
internal
::
MutexLock
l
(
&
internal
::
g_gmock_mutex
);
return
HasCallReaction
(
mock_obj
,
internal
::
CallReaction
::
kAllow
);
}
bool
Mock
::
IsStrict
(
void
*
mock_obj
)
GTEST_LOCK_EXCLUDED_
(
internal
::
g_gmock_mutex
)
{
internal
::
MutexLock
l
(
&
internal
::
g_gmock_mutex
);
return
HasCallReaction
(
mock_obj
,
internal
::
CallReaction
::
kFail
);
}
// Registers a mock object and a mock method it owns.
void
Mock
::
Register
(
const
void
*
mock_obj
,
internal
::
UntypedFunctionMockerBase
*
mocker
)
...
...
googlemock/test/gmock-nice-strict_test.cc
View file @
67a240a1
...
...
@@ -160,6 +160,15 @@ TEST(RawMockTest, InfoForUninterestingCall) {
GMOCK_FLAG
(
verbose
)
=
saved_flag
;
}
TEST
(
RawMockTest
,
IsNaggy_IsNice_IsStrict
)
{
using
internal
::
CallReaction
;
MockFoo
raw_foo
;
ASSERT_EQ
(
CallReaction
::
kDefault
,
CallReaction
::
kWarn
)
<<
"precondition"
;
EXPECT_TRUE
(
Mock
::
IsNaggy
(
&
raw_foo
));
EXPECT_FALSE
(
Mock
::
IsNice
(
&
raw_foo
));
EXPECT_FALSE
(
Mock
::
IsStrict
(
&
raw_foo
));
}
// Tests that a nice mock generates no warning for uninteresting calls.
TEST
(
NiceMockTest
,
NoWarningForUninterestingCall
)
{
NiceMock
<
MockFoo
>
nice_foo
;
...
...
@@ -253,6 +262,13 @@ TEST(NiceMockTest, AcceptsClassNamedMock) {
}
#endif // !GTEST_OS_SYMBIAN && !GTEST_OS_WINDOWS_MOBILE
TEST
(
NiceMockTest
,
IsNaggy_IsNice_IsStrict
)
{
NiceMock
<
MockFoo
>
nice_foo
;
EXPECT_FALSE
(
Mock
::
IsNaggy
(
&
nice_foo
));
EXPECT_TRUE
(
Mock
::
IsNice
(
&
nice_foo
));
EXPECT_FALSE
(
Mock
::
IsStrict
(
&
nice_foo
));
}
#if GTEST_HAS_STREAM_REDIRECTION
// Tests that a naggy mock generates warnings for uninteresting calls.
...
...
@@ -346,6 +362,13 @@ TEST(NaggyMockTest, AcceptsClassNamedMock) {
}
#endif // !GTEST_OS_SYMBIAN && !GTEST_OS_WINDOWS_MOBILE
TEST
(
NaggyMockTest
,
IsNaggy_IsNice_IsStrict
)
{
NaggyMock
<
MockFoo
>
naggy_foo
;
EXPECT_TRUE
(
Mock
::
IsNaggy
(
&
naggy_foo
));
EXPECT_FALSE
(
Mock
::
IsNice
(
&
naggy_foo
));
EXPECT_FALSE
(
Mock
::
IsStrict
(
&
naggy_foo
));
}
// Tests that a strict mock allows expected calls.
TEST
(
StrictMockTest
,
AllowsExpectedCall
)
{
StrictMock
<
MockFoo
>
strict_foo
;
...
...
@@ -420,5 +443,12 @@ TEST(StrictMockTest, AcceptsClassNamedMock) {
}
#endif // !GTEST_OS_SYMBIAN && !GTEST_OS_WINDOWS_MOBILE
TEST
(
StrictMockTest
,
IsNaggy_IsNice_IsStrict
)
{
StrictMock
<
MockFoo
>
strict_foo
;
EXPECT_FALSE
(
Mock
::
IsNaggy
(
&
strict_foo
));
EXPECT_FALSE
(
Mock
::
IsNice
(
&
strict_foo
));
EXPECT_TRUE
(
Mock
::
IsStrict
(
&
strict_foo
));
}
}
// namespace gmock_nice_strict_test
}
// namespace testing
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