|  | // 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. | 
|  |  | 
|  | #ifndef NET_BASE_TEST_DATA_STREAM_H_ | 
|  | #define NET_BASE_TEST_DATA_STREAM_H_ | 
|  |  | 
|  | #include <string.h>  // for memcpy(). | 
|  | #include <algorithm> | 
|  | #include "net/base/net_export.h" | 
|  | #include "starboard/types.h" | 
|  |  | 
|  | // This is a class for generating an infinite stream of data which can be | 
|  | // verified independently to be the correct stream of data. | 
|  |  | 
|  | namespace net { | 
|  |  | 
|  | class NET_EXPORT TestDataStream { | 
|  | public: | 
|  | TestDataStream(); | 
|  |  | 
|  | // Fill |buffer| with |length| bytes of data from the stream. | 
|  | void GetBytes(char* buffer, int length); | 
|  |  | 
|  | // Verify that |buffer| contains the expected next |length| bytes from the | 
|  | // stream.  Returns true if correct, false otherwise. | 
|  | bool VerifyBytes(const char *buffer, int length); | 
|  |  | 
|  | // Resets all the data. | 
|  | void Reset(); | 
|  |  | 
|  | private: | 
|  | // If there is no data spilled over from the previous index, advance the | 
|  | // index and fill the buffer. | 
|  | void AdvanceIndex(); | 
|  |  | 
|  | // Consume data from the spill buffer. | 
|  | void Consume(int bytes); | 
|  |  | 
|  | int index_; | 
|  | int bytes_remaining_; | 
|  | char buffer_[16]; | 
|  | char* buffer_ptr_; | 
|  | }; | 
|  |  | 
|  | }  // namespace net | 
|  |  | 
|  | #endif  // NET_BASE_TEST_DATA_STREAM_H_ |