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