OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/memory/ref_counted.h" | 5 #include "base/memory/ref_counted.h" |
6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
8 #include "jingle/glue/channel_socket_adapter.h" | 8 #include "jingle/glue/channel_socket_adapter.h" |
9 #include "net/base/io_buffer.h" | 9 #include "net/base/io_buffer.h" |
10 #include "net/base/net_errors.h" | 10 #include "net/base/net_errors.h" |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
62 scoped_ptr<TransportChannelSocketAdapter> target_; | 62 scoped_ptr<TransportChannelSocketAdapter> target_; |
63 net::CompletionCallback callback_; | 63 net::CompletionCallback callback_; |
64 int callback_result_; | 64 int callback_result_; |
65 MessageLoopForIO message_loop_; | 65 MessageLoopForIO message_loop_; |
66 }; | 66 }; |
67 | 67 |
68 // Verify that Read() returns net::ERR_IO_PENDING. | 68 // Verify that Read() returns net::ERR_IO_PENDING. |
69 TEST_F(TransportChannelSocketAdapterTest, Read) { | 69 TEST_F(TransportChannelSocketAdapterTest, Read) { |
70 scoped_refptr<IOBuffer> buffer(new IOBuffer(kBufferSize)); | 70 scoped_refptr<IOBuffer> buffer(new IOBuffer(kBufferSize)); |
71 | 71 |
72 int result = target_->Read(buffer, kBufferSize, callback_); | 72 int result = target_->Read(buffer.get(), kBufferSize, callback_); |
73 ASSERT_EQ(net::ERR_IO_PENDING, result); | 73 ASSERT_EQ(net::ERR_IO_PENDING, result); |
74 | 74 |
75 channel_.SignalReadPacket(&channel_, kTestData, kTestDataSize, 0); | 75 channel_.SignalReadPacket(&channel_, kTestData, kTestDataSize, 0); |
76 EXPECT_EQ(kTestDataSize, callback_result_); | 76 EXPECT_EQ(kTestDataSize, callback_result_); |
77 } | 77 } |
78 | 78 |
79 // Verify that Read() after Close() returns error. | 79 // Verify that Read() after Close() returns error. |
80 TEST_F(TransportChannelSocketAdapterTest, ReadClose) { | 80 TEST_F(TransportChannelSocketAdapterTest, ReadClose) { |
81 scoped_refptr<IOBuffer> buffer(new IOBuffer(kBufferSize)); | 81 scoped_refptr<IOBuffer> buffer(new IOBuffer(kBufferSize)); |
82 | 82 |
83 int result = target_->Read(buffer, kBufferSize, callback_); | 83 int result = target_->Read(buffer.get(), kBufferSize, callback_); |
84 ASSERT_EQ(net::ERR_IO_PENDING, result); | 84 ASSERT_EQ(net::ERR_IO_PENDING, result); |
85 | 85 |
86 target_->Close(kTestError); | 86 target_->Close(kTestError); |
87 EXPECT_EQ(kTestError, callback_result_); | 87 EXPECT_EQ(kTestError, callback_result_); |
88 | 88 |
89 // All Read() calls after Close() should return the error. | 89 // All Read() calls after Close() should return the error. |
90 EXPECT_EQ(kTestError, target_->Read(buffer, kBufferSize, callback_)); | 90 EXPECT_EQ(kTestError, target_->Read(buffer.get(), kBufferSize, callback_)); |
91 } | 91 } |
92 | 92 |
93 // Verify that Write sends the packet and returns correct result. | 93 // Verify that Write sends the packet and returns correct result. |
94 TEST_F(TransportChannelSocketAdapterTest, Write) { | 94 TEST_F(TransportChannelSocketAdapterTest, Write) { |
95 scoped_refptr<IOBuffer> buffer(new IOBuffer(kTestDataSize)); | 95 scoped_refptr<IOBuffer> buffer(new IOBuffer(kTestDataSize)); |
96 | 96 |
97 EXPECT_CALL(channel_, SendPacket(buffer->data(), kTestDataSize, 0)) | 97 EXPECT_CALL(channel_, SendPacket(buffer->data(), kTestDataSize, 0)) |
98 .WillOnce(Return(kTestDataSize)); | 98 .WillOnce(Return(kTestDataSize)); |
99 | 99 |
100 int result = target_->Write(buffer, kTestDataSize, callback_); | 100 int result = target_->Write(buffer.get(), kTestDataSize, callback_); |
101 EXPECT_EQ(kTestDataSize, result); | 101 EXPECT_EQ(kTestDataSize, result); |
102 } | 102 } |
103 | 103 |
104 // Verify that the message is still sent if Write() is called while | 104 // Verify that the message is still sent if Write() is called while |
105 // socket is not open yet. The result is the packet is lost. | 105 // socket is not open yet. The result is the packet is lost. |
106 TEST_F(TransportChannelSocketAdapterTest, WritePending) { | 106 TEST_F(TransportChannelSocketAdapterTest, WritePending) { |
107 scoped_refptr<IOBuffer> buffer(new IOBuffer(kTestDataSize)); | 107 scoped_refptr<IOBuffer> buffer(new IOBuffer(kTestDataSize)); |
108 | 108 |
109 EXPECT_CALL(channel_, SendPacket(buffer->data(), kTestDataSize, 0)) | 109 EXPECT_CALL(channel_, SendPacket(buffer->data(), kTestDataSize, 0)) |
110 .Times(1) | 110 .Times(1) |
111 .WillOnce(Return(SOCKET_ERROR)); | 111 .WillOnce(Return(SOCKET_ERROR)); |
112 | 112 |
113 EXPECT_CALL(channel_, GetError()) | 113 EXPECT_CALL(channel_, GetError()) |
114 .WillOnce(Return(EWOULDBLOCK)); | 114 .WillOnce(Return(EWOULDBLOCK)); |
115 | 115 |
116 int result = target_->Write(buffer, kTestDataSize, callback_); | 116 int result = target_->Write(buffer.get(), kTestDataSize, callback_); |
117 ASSERT_EQ(net::OK, result); | 117 ASSERT_EQ(net::OK, result); |
118 } | 118 } |
119 | 119 |
120 } // namespace jingle_glue | 120 } // namespace jingle_glue |
OLD | NEW |