12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- // Copyright (c) 2011 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 "net/base/test_data_stream.h"
- #include <algorithm>
- #include <cstring>
- namespace net {
- TestDataStream::TestDataStream() {
- Reset();
- }
- // Fill |buffer| with |length| bytes of data from the stream.
- void TestDataStream::GetBytes(char* buffer, int length) {
- while (length) {
- AdvanceIndex();
- int bytes_to_copy = std::min(length, bytes_remaining_);
- memcpy(buffer, buffer_ptr_, bytes_to_copy);
- buffer += bytes_to_copy;
- Consume(bytes_to_copy);
- length -= bytes_to_copy;
- }
- }
- bool TestDataStream::VerifyBytes(const char *buffer, int length) {
- while (length) {
- AdvanceIndex();
- int bytes_to_compare = std::min(length, bytes_remaining_);
- if (memcmp(buffer, buffer_ptr_, bytes_to_compare))
- return false;
- Consume(bytes_to_compare);
- length -= bytes_to_compare;
- buffer += bytes_to_compare;
- }
- return true;
- }
- void TestDataStream::Reset() {
- index_ = 0;
- bytes_remaining_ = 0;
- buffer_ptr_ = buffer_;
- }
- // If there is no data spilled over from the previous index, advance the
- // index and fill the buffer.
- void TestDataStream::AdvanceIndex() {
- if (bytes_remaining_ == 0) {
- // Convert it to ascii, but don't bother to reverse it.
- // (e.g. 12345 becomes "54321")
- int val = index_++;
- do {
- buffer_[bytes_remaining_++] = (val % 10) + '0';
- } while ((val /= 10) > 0);
- buffer_[bytes_remaining_++] = '.';
- }
- }
- // Consume data from the spill buffer.
- void TestDataStream::Consume(int bytes) {
- bytes_remaining_ -= bytes;
- if (bytes_remaining_)
- buffer_ptr_ += bytes;
- else
- buffer_ptr_ = buffer_;
- }
- } // namespace net
|