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