891 B
Using Callbacks as Matchers
Callbacks are widely used in google3
. Conceptually, a ResultCallback1<bool, T>
is just a predicate on argument of type T
. Naturally, we sometimes would
want to use such a callback as a matcher.
gMock gives you two function templates in namespace testing
to turn callbacks
into matchers.
The first is Truly(callback)
. It matches argument
iff
callback->Run(argument)
returns true
.
The second is AddressSatisfies(callback)
, which matches argument
whenever
callback->Run(&argument)
returns true
.
The callbacks used in Truly()
and AddressSatisfies()
must be permanent (e.g.
those returned by NewPermanentCallback()
), or you'll get a run-time error. The
matcher takes ownership of the callback, so you don't need to worry about
deleting it.
For examples, see google3/testing/base/internal/gmock_utils/callback-matchers_test.cc.