| Index: content/browser/streams/stream_unittest.cc
|
| ===================================================================
|
| --- content/browser/streams/stream_unittest.cc (revision 187273)
|
| +++ content/browser/streams/stream_unittest.cc (working copy)
|
| @@ -1,207 +0,0 @@
|
| -// Copyright (c) 2013 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 "base/message_loop.h"
|
| -#include "base/test/test_simple_task_runner.h"
|
| -#include "content/browser/streams/stream.h"
|
| -#include "content/browser/streams/stream_read_observer.h"
|
| -#include "content/browser/streams/stream_registry.h"
|
| -#include "content/browser/streams/stream_write_observer.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace content {
|
| -
|
| -class StreamTest : public testing::Test {
|
| - public:
|
| - StreamTest() {}
|
| -
|
| - virtual void SetUp() OVERRIDE {
|
| - registry_.reset(new StreamRegistry());
|
| - }
|
| -
|
| - // Create a new IO buffer of the given |buffer_size| and fill it with random
|
| - // data.
|
| - scoped_refptr<net::IOBuffer> NewIOBuffer(size_t buffer_size) {
|
| - scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(buffer_size));
|
| - char *bufferp = buffer->data();
|
| - for (size_t i = 0; i < buffer_size; i++)
|
| - bufferp[i] = (i + producing_seed_key_) % (1 << sizeof(char));
|
| - ++producing_seed_key_;
|
| - return buffer;
|
| - }
|
| -
|
| - protected:
|
| - MessageLoop message_loop_;
|
| - scoped_ptr<StreamRegistry> registry_;
|
| -
|
| - private:
|
| - int producing_seed_key_;
|
| -};
|
| -
|
| -class TestStreamReader : public StreamReadObserver {
|
| - public:
|
| - TestStreamReader() : buffer_(new net::GrowableIOBuffer()) {
|
| - }
|
| - virtual ~TestStreamReader() {}
|
| -
|
| - void Read(Stream* stream) {
|
| - const size_t kBufferSize = 32768;
|
| - scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kBufferSize));
|
| -
|
| - int bytes_read = 0;
|
| - while (stream->ReadRawData(buffer, kBufferSize, &bytes_read) ==
|
| - Stream::STREAM_HAS_DATA) {
|
| - size_t old_capacity = buffer_->capacity();
|
| - buffer_->SetCapacity(old_capacity + bytes_read);
|
| - memcpy(buffer_->data() + old_capacity, buffer->data(), bytes_read);
|
| - }
|
| - }
|
| -
|
| - virtual void OnDataAvailable(Stream* stream) OVERRIDE {
|
| - Read(stream);
|
| - }
|
| -
|
| - scoped_refptr<net::GrowableIOBuffer> buffer() { return buffer_; }
|
| -
|
| - private:
|
| - scoped_refptr<net::GrowableIOBuffer> buffer_;
|
| -};
|
| -
|
| -class TestStreamWriter : public StreamWriteObserver {
|
| - public:
|
| - TestStreamWriter() {}
|
| - virtual ~TestStreamWriter() {}
|
| -
|
| - void Write(Stream* stream,
|
| - scoped_refptr<net::IOBuffer> buffer,
|
| - size_t buffer_size) {
|
| - stream->AddData(buffer, buffer_size);
|
| - }
|
| -
|
| - virtual void OnSpaceAvailable(Stream* stream) OVERRIDE {
|
| - }
|
| -};
|
| -
|
| -TEST_F(StreamTest, SetReadObserver) {
|
| - TestStreamReader reader;
|
| - TestStreamWriter writer;
|
| -
|
| - GURL url("blob://stream");
|
| - scoped_refptr<Stream> stream(
|
| - new Stream(registry_.get(), &writer, GURL(), url));
|
| - EXPECT_TRUE(stream->SetReadObserver(&reader));
|
| -}
|
| -
|
| -TEST_F(StreamTest, SetReadObserver_SecondFails) {
|
| - TestStreamReader reader1;
|
| - TestStreamReader reader2;
|
| - TestStreamWriter writer;
|
| -
|
| - GURL url("blob://stream");
|
| - scoped_refptr<Stream> stream(
|
| - new Stream(registry_.get(), &writer, GURL(), url));
|
| - EXPECT_TRUE(stream->SetReadObserver(&reader1));
|
| - EXPECT_FALSE(stream->SetReadObserver(&reader2));
|
| -}
|
| -
|
| -TEST_F(StreamTest, SetReadObserver_TwoReaders) {
|
| - TestStreamReader reader1;
|
| - TestStreamReader reader2;
|
| - TestStreamWriter writer;
|
| -
|
| - GURL url("blob://stream");
|
| - scoped_refptr<Stream> stream(
|
| - new Stream(registry_.get(), &writer, GURL(), url));
|
| - EXPECT_TRUE(stream->SetReadObserver(&reader1));
|
| -
|
| - // Once the first read observer is removed, a new one can be added.
|
| - stream->RemoveReadObserver(&reader1);
|
| - EXPECT_TRUE(stream->SetReadObserver(&reader2));
|
| -}
|
| -
|
| -TEST_F(StreamTest, Stream) {
|
| - TestStreamReader reader;
|
| - TestStreamWriter writer;
|
| -
|
| - GURL url("blob://stream");
|
| - scoped_refptr<Stream> stream(
|
| - new Stream(registry_.get(), &writer, GURL(), url));
|
| - EXPECT_TRUE(stream->SetReadObserver(&reader));
|
| -
|
| - int buffer_size = 1000000;
|
| - scoped_refptr<net::IOBuffer> buffer(NewIOBuffer(buffer_size));
|
| - writer.Write(stream, buffer, buffer_size);
|
| - stream->Finalize();
|
| - reader.Read(stream);
|
| - MessageLoop::current()->RunUntilIdle();
|
| -
|
| - ASSERT_EQ(reader.buffer()->capacity(), buffer_size);
|
| - ASSERT_EQ(0, memcmp(buffer->data(),
|
| - reader.buffer()->data(),
|
| - buffer_size));
|
| -}
|
| -
|
| -TEST_F(StreamTest, GetStream) {
|
| - TestStreamWriter writer;
|
| -
|
| - GURL url("blob://stream");
|
| - scoped_refptr<Stream> stream1(
|
| - new Stream(registry_.get(), &writer, GURL(), url));
|
| -
|
| - scoped_refptr<Stream> stream2 = registry_->GetStream(url);
|
| - ASSERT_EQ(stream1, stream2);
|
| -}
|
| -
|
| -TEST_F(StreamTest, GetStream_Missing) {
|
| - TestStreamWriter writer;
|
| -
|
| - GURL url1("blob://stream");
|
| - scoped_refptr<Stream> stream1(
|
| - new Stream(registry_.get(), &writer, GURL(), url1));
|
| -
|
| - GURL url2("blob://stream2");
|
| - scoped_refptr<Stream> stream2 = registry_->GetStream(url2);
|
| - ASSERT_FALSE(stream2);
|
| -}
|
| -
|
| -TEST_F(StreamTest, CloneStream) {
|
| - TestStreamWriter writer;
|
| -
|
| - GURL url1("blob://stream");
|
| - scoped_refptr<Stream> stream1(
|
| - new Stream(registry_.get(), &writer, GURL(), url1));
|
| -
|
| - GURL url2("blob://stream2");
|
| - ASSERT_TRUE(registry_->CloneStream(url2, url1));
|
| - scoped_refptr<Stream> stream2 = registry_->GetStream(url2);
|
| - ASSERT_EQ(stream1, stream2);
|
| -}
|
| -
|
| -TEST_F(StreamTest, CloneStream_Missing) {
|
| - TestStreamWriter writer;
|
| -
|
| - GURL url1("blob://stream");
|
| - scoped_refptr<Stream> stream1(
|
| - new Stream(registry_.get(), &writer, GURL(), url1));
|
| -
|
| - GURL url2("blob://stream2");
|
| - GURL url3("blob://stream3");
|
| - ASSERT_FALSE(registry_->CloneStream(url2, url3));
|
| - scoped_refptr<Stream> stream2 = registry_->GetStream(url2);
|
| - ASSERT_FALSE(stream2);
|
| -}
|
| -
|
| -TEST_F(StreamTest, UnregisterStream) {
|
| - TestStreamWriter writer;
|
| -
|
| - GURL url("blob://stream");
|
| - scoped_refptr<Stream> stream1(
|
| - new Stream(registry_.get(), &writer, GURL(), url));
|
| -
|
| - registry_->UnregisterStream(url);
|
| - scoped_refptr<Stream> stream2 = registry_->GetStream(url);
|
| - ASSERT_FALSE(stream2);
|
| -}
|
| -
|
| -} // namespace content
|
|
|