| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/message_loop.h" | 5 #include "base/message_loop.h" |
| 6 #include "base/ref_counted.h" | 6 #include "base/ref_counted.h" |
| 7 #include "base/scoped_ptr.h" | 7 #include "base/scoped_ptr.h" |
| 8 #include "net/base/io_buffer.h" | 8 #include "net/base/io_buffer.h" |
| 9 #include "net/base/net_errors.h" | 9 #include "net/base/net_errors.h" |
| 10 #include "net/socket/socket.h" | 10 #include "net/socket/socket.h" |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 | 57 |
| 58 MockTransportChannel channel_; | 58 MockTransportChannel channel_; |
| 59 scoped_ptr<TransportChannelSocketAdapter> target_; | 59 scoped_ptr<TransportChannelSocketAdapter> target_; |
| 60 net::CompletionCallbackImpl<TransportChannelSocketAdapterTest> callback_; | 60 net::CompletionCallbackImpl<TransportChannelSocketAdapterTest> callback_; |
| 61 int callback_result_; | 61 int callback_result_; |
| 62 MessageLoopForIO message_loop_; | 62 MessageLoopForIO message_loop_; |
| 63 }; | 63 }; |
| 64 | 64 |
| 65 // Verify that Read() returns net::ERR_IO_PENDING. | 65 // Verify that Read() returns net::ERR_IO_PENDING. |
| 66 TEST_F(TransportChannelSocketAdapterTest, Read) { | 66 TEST_F(TransportChannelSocketAdapterTest, Read) { |
| 67 scoped_refptr<IOBuffer> buffer = new IOBuffer(kBufferSize); | 67 scoped_refptr<IOBuffer> buffer(new IOBuffer(kBufferSize)); |
| 68 | 68 |
| 69 int result = target_->Read(buffer, kBufferSize, &callback_); | 69 int result = target_->Read(buffer, kBufferSize, &callback_); |
| 70 ASSERT_EQ(net::ERR_IO_PENDING, result); | 70 ASSERT_EQ(net::ERR_IO_PENDING, result); |
| 71 | 71 |
| 72 channel_.SignalReadPacket(&channel_, kTestData, kTestDataSize); | 72 channel_.SignalReadPacket(&channel_, kTestData, kTestDataSize); |
| 73 EXPECT_EQ(kTestDataSize, callback_result_); | 73 EXPECT_EQ(kTestDataSize, callback_result_); |
| 74 } | 74 } |
| 75 | 75 |
| 76 // Verify that Read() after Close() returns error. | 76 // Verify that Read() after Close() returns error. |
| 77 TEST_F(TransportChannelSocketAdapterTest, ReadClose) { | 77 TEST_F(TransportChannelSocketAdapterTest, ReadClose) { |
| 78 scoped_refptr<IOBuffer> buffer = new IOBuffer(kBufferSize); | 78 scoped_refptr<IOBuffer> buffer(new IOBuffer(kBufferSize)); |
| 79 | 79 |
| 80 int result = target_->Read(buffer, kBufferSize, &callback_); | 80 int result = target_->Read(buffer, kBufferSize, &callback_); |
| 81 ASSERT_EQ(net::ERR_IO_PENDING, result); | 81 ASSERT_EQ(net::ERR_IO_PENDING, result); |
| 82 | 82 |
| 83 target_->Close(kTestError); | 83 target_->Close(kTestError); |
| 84 EXPECT_EQ(kTestError, callback_result_); | 84 EXPECT_EQ(kTestError, callback_result_); |
| 85 | 85 |
| 86 // All Read() calls after Close() should return the error. | 86 // All Read() calls after Close() should return the error. |
| 87 EXPECT_EQ(kTestError, target_->Read(buffer, kBufferSize, &callback_)); | 87 EXPECT_EQ(kTestError, target_->Read(buffer, kBufferSize, &callback_)); |
| 88 } | 88 } |
| 89 | 89 |
| 90 // Verify that Write sends the packet and returns correct result. | 90 // Verify that Write sends the packet and returns correct result. |
| 91 TEST_F(TransportChannelSocketAdapterTest, Write) { | 91 TEST_F(TransportChannelSocketAdapterTest, Write) { |
| 92 scoped_refptr<IOBuffer> buffer = new IOBuffer(kTestDataSize); | 92 scoped_refptr<IOBuffer> buffer(new IOBuffer(kTestDataSize)); |
| 93 | 93 |
| 94 EXPECT_CALL(channel_, SendPacket(buffer->data(), kTestDataSize)) | 94 EXPECT_CALL(channel_, SendPacket(buffer->data(), kTestDataSize)) |
| 95 .WillOnce(Return(kTestDataSize)); | 95 .WillOnce(Return(kTestDataSize)); |
| 96 | 96 |
| 97 int result = target_->Write(buffer, kTestDataSize, &callback_); | 97 int result = target_->Write(buffer, kTestDataSize, &callback_); |
| 98 EXPECT_EQ(kTestDataSize, result); | 98 EXPECT_EQ(kTestDataSize, result); |
| 99 } | 99 } |
| 100 | 100 |
| 101 // Verify that the message is still send if Write() is called while | 101 // Verify that the message is still send if Write() is called while |
| 102 // socket is not open yet, and that the callback is called. | 102 // socket is not open yet, and that the callback is called. |
| 103 TEST_F(TransportChannelSocketAdapterTest, WritePending) { | 103 TEST_F(TransportChannelSocketAdapterTest, WritePending) { |
| 104 scoped_refptr<IOBuffer> buffer = new IOBuffer(kTestDataSize); | 104 scoped_refptr<IOBuffer> buffer(new IOBuffer(kTestDataSize)); |
| 105 | 105 |
| 106 EXPECT_CALL(channel_, SendPacket(buffer->data(), kTestDataSize)) | 106 EXPECT_CALL(channel_, SendPacket(buffer->data(), kTestDataSize)) |
| 107 .Times(2) | 107 .Times(2) |
| 108 .WillOnce(Return(SOCKET_ERROR)) | 108 .WillOnce(Return(SOCKET_ERROR)) |
| 109 .WillOnce(Return(kTestDataSize)); | 109 .WillOnce(Return(kTestDataSize)); |
| 110 | 110 |
| 111 EXPECT_CALL(channel_, GetError()) | 111 EXPECT_CALL(channel_, GetError()) |
| 112 .WillOnce(Return(EWOULDBLOCK)); | 112 .WillOnce(Return(EWOULDBLOCK)); |
| 113 | 113 |
| 114 int result = target_->Write(buffer, kTestDataSize, &callback_); | 114 int result = target_->Write(buffer, kTestDataSize, &callback_); |
| 115 ASSERT_EQ(net::ERR_IO_PENDING, result); | 115 ASSERT_EQ(net::ERR_IO_PENDING, result); |
| 116 | 116 |
| 117 channel_.SignalWritableState(&channel_); | 117 channel_.SignalWritableState(&channel_); |
| 118 EXPECT_EQ(kTestDataSize, callback_result_); | 118 EXPECT_EQ(kTestDataSize, callback_result_); |
| 119 } | 119 } |
| 120 | 120 |
| 121 } // namespace remoting | 121 } // namespace remoting |
| OLD | NEW |