• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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 "net/base/test_data_stream.h"
6 
7 namespace net {
8 
TestDataStream()9 TestDataStream::TestDataStream() {
10   Reset();
11 }
12 
13 // Fill |buffer| with |length| bytes of data from the stream.
GetBytes(char * buffer,int length)14 void TestDataStream::GetBytes(char* buffer, int length) {
15   while (length) {
16     AdvanceIndex();
17     int bytes_to_copy = std::min(length, bytes_remaining_);
18     memcpy(buffer, buffer_ptr_, bytes_to_copy);
19     buffer += bytes_to_copy;
20     Consume(bytes_to_copy);
21     length -= bytes_to_copy;
22   }
23 }
24 
VerifyBytes(const char * buffer,int length)25 bool TestDataStream::VerifyBytes(const char *buffer, int length) {
26   while (length) {
27     AdvanceIndex();
28     int bytes_to_compare = std::min(length, bytes_remaining_);
29     if (memcmp(buffer, buffer_ptr_, bytes_to_compare))
30       return false;
31     Consume(bytes_to_compare);
32     length -= bytes_to_compare;
33     buffer += bytes_to_compare;
34   }
35   return true;
36 }
37 
Reset()38 void TestDataStream::Reset() {
39   index_ = 0;
40   bytes_remaining_ = 0;
41   buffer_ptr_ = buffer_;
42 }
43 
44 // If there is no data spilled over from the previous index, advance the
45 // index and fill the buffer.
AdvanceIndex()46 void TestDataStream::AdvanceIndex() {
47   if (bytes_remaining_ == 0) {
48     // Convert it to ascii, but don't bother to reverse it.
49     // (e.g. 12345 becomes "54321")
50     int val = index_++;
51     do {
52       buffer_[bytes_remaining_++] = (val % 10) + '0';
53     } while ((val /= 10) > 0);
54     buffer_[bytes_remaining_++] = '.';
55   }
56 }
57 
58 // Consume data from the spill buffer.
Consume(int bytes)59 void TestDataStream::Consume(int bytes) {
60   bytes_remaining_ -= bytes;
61   if (bytes_remaining_)
62     buffer_ptr_ += bytes;
63   else
64     buffer_ptr_ = buffer_;
65 }
66 
67 }  // namespace net
68 
69