Index: device/hid/hid_connection_unittest.cc |
diff --git a/device/hid/hid_connection_unittest.cc b/device/hid/hid_connection_unittest.cc |
index eb973f776e0d831ac70be7081e35e9b1fde2f0ad..e5f215fbcf23f5fbabbd71b57a7cf971c9eab324 100644 |
--- a/device/hid/hid_connection_unittest.cc |
+++ b/device/hid/hid_connection_unittest.cc |
@@ -24,12 +24,23 @@ using net::IOBufferWithSize; |
class TestCompletionCallback { |
public: |
TestCompletionCallback() |
- : callback_(base::Bind(&TestCompletionCallback::SetResult, |
- base::Unretained(this))) {} |
+ : read_callback_(base::Bind(&TestCompletionCallback::SetReadResult, |
+ base::Unretained(this))), |
+ write_callback_(base::Bind(&TestCompletionCallback::SetWriteResult, |
+ base::Unretained(this))) {} |
+ ~TestCompletionCallback() {} |
+ |
+ void SetReadResult(bool success, |
+ scoped_refptr<net::IOBuffer> buffer, |
+ size_t size) { |
+ result_ = success; |
+ buffer_ = buffer; |
+ size_ = size; |
+ run_loop_.Quit(); |
+ } |
- void SetResult(bool success, size_t size) { |
+ void SetWriteResult(bool success) { |
result_ = success; |
- transferred_ = size; |
run_loop_.Quit(); |
} |
@@ -38,14 +49,20 @@ class TestCompletionCallback { |
return result_; |
} |
- const HidConnection::IOCallback& callback() const { return callback_; } |
- size_t transferred() const { return transferred_; } |
+ const HidConnection::ReadCallback& read_callback() { return read_callback_; } |
+ const HidConnection::WriteCallback write_callback() { |
+ return write_callback_; |
+ } |
+ scoped_refptr<net::IOBuffer> buffer() const { return buffer_; } |
+ size_t size() const { return size_; } |
private: |
- const HidConnection::IOCallback callback_; |
base::RunLoop run_loop_; |
bool result_; |
- size_t transferred_; |
+ size_t size_; |
+ scoped_refptr<net::IOBuffer> buffer_; |
+ HidConnection::ReadCallback read_callback_; |
+ HidConnection::WriteCallback write_callback_; |
}; |
} // namespace |
@@ -113,20 +130,24 @@ TEST_F(HidConnectionTest, ReadWrite) { |
ASSERT_TRUE(conn); |
for (int i = 0; i < 8; ++i) { |
- scoped_refptr<IOBufferWithSize> write_buffer(new IOBufferWithSize(8)); |
- *(int64_t*)write_buffer->data() = i; |
+ scoped_refptr<IOBufferWithSize> buffer(new IOBufferWithSize(9)); |
+ buffer->data()[0] = 0; |
+ for (int j = 1; j < buffer->size(); ++j) { |
+ buffer->data()[j] = i + j - 1; |
+ } |
TestCompletionCallback write_callback; |
- conn->Write(0, write_buffer, write_callback.callback()); |
+ conn->Write(buffer, buffer->size(), write_callback.write_callback()); |
ASSERT_TRUE(write_callback.WaitForResult()); |
- ASSERT_EQ(8UL, write_callback.transferred()); |
- scoped_refptr<IOBufferWithSize> read_buffer(new IOBufferWithSize(8)); |
TestCompletionCallback read_callback; |
- conn->Read(read_buffer, read_callback.callback()); |
+ conn->Read(read_callback.read_callback()); |
ASSERT_TRUE(read_callback.WaitForResult()); |
- ASSERT_EQ(8UL, read_callback.transferred()); |
- ASSERT_EQ(i, *(int64_t*)read_buffer->data()); |
+ ASSERT_EQ(9UL, read_callback.size()); |
+ ASSERT_EQ(0, read_callback.buffer()->data()[0]); |
+ for (int j = 1; j < buffer->size(); ++j) { |
+ ASSERT_EQ(i + j - 1, read_callback.buffer()->data()[j]); |
+ } |
} |
} |