16 #ifndef ABSL_RANDOM_INTERNAL_MOCK_OVERLOAD_SET_H_
17 #define ABSL_RANDOM_INTERNAL_MOCK_OVERLOAD_SET_H_
19 #include <type_traits>
21 #include "gmock/gmock.h"
22 #include "absl/random/internal/mock_helpers.h"
23 #include "absl/random/mocking_bit_gen.h"
27 namespace random_internal {
29 template <
typename DistrT,
typename Fn>
41 template <
typename DistrT,
typename Ret,
typename...
Args>
44 "Overload signature must have return type matching the "
45 "distribution result_type.");
46 using KeyT = Ret(DistrT, std::tuple<Args...>);
48 template <
typename MockURBG>
50 -> decltype(MockHelpers::MockFor<KeyT>(
gen).gmock_Call(
matchers...)) {
52 "Mocking requires an absl::MockingBitGen");
53 return MockHelpers::MockFor<KeyT>(
gen).gmock_Call(
matchers...);
57 template <
typename DistrT,
typename Ret,
typename Arg,
typename...
Args>
60 "Overload signature must have return type matching the "
61 "distribution result_type.");
62 using KeyT = Ret(DistrT, std::tuple<Arg, Args...>);
64 template <
typename MockURBG>
66 const ::testing::Matcher<Args>&...
matchers)
67 -> decltype(MockHelpers::MockFor<KeyT>(
gen).gmock_Call(matcher,
70 "Mocking requires an absl::MockingBitGen");
71 return MockHelpers::MockFor<KeyT>(
gen).gmock_Call(matcher,
matchers...);
81 template <
typename DistrT,
typename... Signatures>
84 template <
typename DistrT,
typename Sig>
89 template <
typename DistrT,
typename FirstSig,
typename... Rest>
100 #endif // ABSL_RANDOM_INTERNAL_MOCK_OVERLOAD_SET_H_