xref: /aosp_15_r20/external/cronet/net/third_party/quiche/src/quiche/quic/test_tools/mock_random.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "quiche/quic/test_tools/mock_random.h"
6 
7 #include <string.h>
8 
9 namespace quic {
10 namespace test {
11 
12 using testing::_;
13 using testing::Invoke;
14 
MockRandom()15 MockRandom::MockRandom() : MockRandom(0xDEADBEEF) {}
16 
MockRandom(uint32_t base)17 MockRandom::MockRandom(uint32_t base) : base_(base), increment_(0) {
18   ON_CALL(*this, RandBytes(_, _))
19       .WillByDefault(Invoke(this, &MockRandom::DefaultRandBytes));
20   ON_CALL(*this, RandUint64())
21       .WillByDefault(Invoke(this, &MockRandom::DefaultRandUint64));
22   ON_CALL(*this, InsecureRandBytes(_, _))
23       .WillByDefault(Invoke(this, &MockRandom::DefaultInsecureRandBytes));
24   ON_CALL(*this, InsecureRandUint64())
25       .WillByDefault(Invoke(this, &MockRandom::DefaultInsecureRandUint64));
26 }
27 
DefaultRandBytes(void * data,size_t len)28 void MockRandom::DefaultRandBytes(void* data, size_t len) {
29   memset(data, increment_ + static_cast<uint8_t>('r'), len);
30 }
31 
DefaultRandUint64()32 uint64_t MockRandom::DefaultRandUint64() { return base_ + increment_; }
33 
DefaultInsecureRandBytes(void * data,size_t len)34 void MockRandom::DefaultInsecureRandBytes(void* data, size_t len) {
35   DefaultRandBytes(data, len);
36 }
37 
DefaultInsecureRandUint64()38 uint64_t MockRandom::DefaultInsecureRandUint64() { return DefaultRandUint64(); }
39 
ChangeValue()40 void MockRandom::ChangeValue() { increment_++; }
41 
ResetBase(uint32_t base)42 void MockRandom::ResetBase(uint32_t base) {
43   base_ = base;
44   increment_ = 0;
45 }
46 
47 }  // namespace test
48 }  // namespace quic
49