16 #include "absl/random/mocking_bit_gen.h"
22 #include "gmock/gmock.h"
23 #include "gtest/gtest-spi.h"
24 #include "gtest/gtest.h"
25 #include "absl/random/bit_gen_ref.h"
26 #include "absl/random/mock_distributions.h"
27 #include "absl/random/random.h"
35 TEST(BasicMocking, AllDistributionsAreOverridable) {
62 EXPECT_NE(absl::Zipf<int>(
gen, 1000000, 2.0, 1.0), 1221);
65 EXPECT_EQ(absl::Zipf<int>(
gen, 1000000, 2.0, 1.0), 1221);
72 EXPECT_NE(absl::LogUniform<int>(
gen, 0, 1000000, 2), 500000);
75 EXPECT_EQ(absl::LogUniform<int>(
gen, 0, 1000000, 2), 500000);
78 TEST(BasicMocking, OnDistribution) {
83 .WillByDefault(
Return(20));
88 .WillByDefault(
Return(5.0));
93 .WillByDefault(
Return(42));
102 .WillByDefault(
Return(
true));
105 EXPECT_NE(absl::Zipf<int>(
gen, 1000000, 2.0, 1.0), 1221);
107 .WillByDefault(
Return(1221));
108 EXPECT_EQ(absl::Zipf<int>(
gen, 1000000, 2.0, 1.0), 1221);
110 EXPECT_NE(absl::Gaussian<double>(
gen, 0.0, 1.0), 0.001);
112 .WillByDefault(
Return(0.001));
113 EXPECT_EQ(absl::Gaussian<double>(
gen, 0.0, 1.0), 0.001);
115 EXPECT_NE(absl::LogUniform<int>(
gen, 0, 1000000, 2), 2040);
117 .WillByDefault(
Return(2040));
118 EXPECT_EQ(absl::LogUniform<int>(
gen, 0, 1000000, 2), 2040);
121 TEST(BasicMocking, GMockMatchers) {
124 EXPECT_NE(absl::Zipf<int>(
gen, 1000000, 2.0, 1.0), 1221);
126 .WillByDefault(
Return(1221));
127 EXPECT_EQ(absl::Zipf<int>(
gen, 1000000, 2.0, 1.0), 1221);
130 TEST(BasicMocking, OverridesWithMultipleGMockExpectations) {
142 TEST(BasicMocking, DefaultArgument) {
146 .WillByDefault(
Return(200));
152 TEST(BasicMocking, MultipleGenerators) {
162 .WillRepeatedly(
Return(17));
165 .WillRepeatedly(
Return(17));
168 int unmocked_value =
get_value(unmocked_generator);
179 TEST(BasicMocking, MocksNotTrigeredForIncorrectTypes) {
187 TEST(BasicMocking, FailsOnUnsatisfiedMocks) {
195 "unsatisfied and active");
198 TEST(OnUniform, RespectsUniformIntervalSemantics) {
202 Call(absl::IntervalClosed,
gen, 1, 1000000))
208 TEST(OnUniform, RespectsNoArgUnsignedShorthand) {
214 TEST(RepeatedlyModifier, ForceSnakeEyesForManyDice) {
232 .WillByDefault(
Return(6));
238 TEST(WillOnce, DistinctCounters) {
242 .WillRepeatedly(
Return(0));
245 .WillRepeatedly(
Return(1));
254 TEST(TimesModifier, ModifierSaturatesAndExpires) {
260 .WillRepeatedly(
Return(15))
261 .RetiresOnSaturation();
273 TEST(TimesModifier, Times0) {
279 TEST(AnythingMatcher, MatchesAnyArgument) {
285 .WillByDefault(
Return(11));
288 .WillByDefault(
Return(99));
297 .WillByDefault(
Return(25));
299 .WillByDefault(
Return(99));
307 .WillByDefault(
Return(145));
314 TEST(AnythingMatcher, WithWillByDefault) {
317 std::vector<int>
values = {11, 22, 33, 44, 55, 66, 77, 88, 99, 1010};
320 .WillByDefault(
Return(0));
321 for (
int i = 0;
i < 100;
i++) {
327 TEST(BasicMocking, WillByDefaultWithArgs) {
332 .WillByDefault([](
double lambda) {
333 return static_cast<int>(std::rint(lambda * 10));
339 TEST(MockingBitGen, InSequenceSucceedsInOrder) {
351 TEST(MockingBitGen, NiceMock) {
362 TEST(MockingBitGen, NaggyMock) {
373 TEST(MockingBitGen, StrictMock_NotEnough) {
380 "unsatisfied and active");
383 TEST(MockingBitGen, StrictMock_TooMany) {
391 "over-saturated and active");