|  | // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #include "quiche/quic/test_tools/mock_random.h" | 
|  |  | 
|  | #include <string.h> | 
|  |  | 
|  | namespace quic { | 
|  | namespace test { | 
|  |  | 
|  | using testing::_; | 
|  | using testing::Invoke; | 
|  |  | 
|  | MockRandom::MockRandom() : MockRandom(0xDEADBEEF) {} | 
|  |  | 
|  | MockRandom::MockRandom(uint32_t base) : base_(base), increment_(0) { | 
|  | ON_CALL(*this, RandBytes(_, _)) | 
|  | .WillByDefault(Invoke(this, &MockRandom::DefaultRandBytes)); | 
|  | ON_CALL(*this, RandUint64()) | 
|  | .WillByDefault(Invoke(this, &MockRandom::DefaultRandUint64)); | 
|  | ON_CALL(*this, InsecureRandBytes(_, _)) | 
|  | .WillByDefault(Invoke(this, &MockRandom::DefaultInsecureRandBytes)); | 
|  | ON_CALL(*this, InsecureRandUint64()) | 
|  | .WillByDefault(Invoke(this, &MockRandom::DefaultInsecureRandUint64)); | 
|  | } | 
|  |  | 
|  | void MockRandom::DefaultRandBytes(void* data, size_t len) { | 
|  | memset(data, increment_ + static_cast<uint8_t>('r'), len); | 
|  | } | 
|  |  | 
|  | uint64_t MockRandom::DefaultRandUint64() { return base_ + increment_; } | 
|  |  | 
|  | void MockRandom::DefaultInsecureRandBytes(void* data, size_t len) { | 
|  | DefaultRandBytes(data, len); | 
|  | } | 
|  |  | 
|  | uint64_t MockRandom::DefaultInsecureRandUint64() { return DefaultRandUint64(); } | 
|  |  | 
|  | void MockRandom::ChangeValue() { increment_++; } | 
|  |  | 
|  | void MockRandom::ResetBase(uint32_t base) { | 
|  | base_ = base; | 
|  | increment_ = 0; | 
|  | } | 
|  |  | 
|  | }  // namespace test | 
|  | }  // namespace quic |