// Copyright 2014 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 "components/pairing/message_buffer.h" #include "net/base/io_buffer.h" #include "testing/gtest/include/gtest/gtest.h" namespace pairing_chromeos { typedef testing::Test MessageBufferTest; TEST_F(MessageBufferTest, BasicReadWrite) { MessageBuffer message_buffer; scoped_refptr io_buffer(new net::IOBuffer(3)); io_buffer->data()[0] = 3; io_buffer->data()[1] = 1; io_buffer->data()[2] = 4; message_buffer.AddIOBuffer(io_buffer, 3); EXPECT_EQ(message_buffer.AvailableBytes(), 3); char data = 0; message_buffer.ReadBytes(&data, 1); EXPECT_EQ(data, 3); EXPECT_EQ(message_buffer.AvailableBytes(), 2); message_buffer.ReadBytes(&data, 1); EXPECT_EQ(data, 1); EXPECT_EQ(message_buffer.AvailableBytes(), 1); message_buffer.ReadBytes(&data, 1); EXPECT_EQ(data, 4); EXPECT_EQ(message_buffer.AvailableBytes(), 0); } TEST_F(MessageBufferTest, SplitBuffer) { MessageBuffer message_buffer; scoped_refptr io_buffer0(new net::IOBuffer(1)); io_buffer0->data()[0] = 3; scoped_refptr io_buffer1(new net::IOBuffer(2)); io_buffer1->data()[0] = 1; io_buffer1->data()[1] = 4; message_buffer.AddIOBuffer(io_buffer0, 1); message_buffer.AddIOBuffer(io_buffer1, 2); EXPECT_EQ(message_buffer.AvailableBytes(), 3); char data[3]; message_buffer.ReadBytes(data, 3); EXPECT_EQ(message_buffer.AvailableBytes(), 0); EXPECT_EQ(data[0], 3); EXPECT_EQ(data[1], 1); EXPECT_EQ(data[2], 4); } TEST_F(MessageBufferTest, EmptyBuffer) { MessageBuffer message_buffer; scoped_refptr io_buffer0(new net::IOBuffer(1)); io_buffer0->data()[0] = 3; scoped_refptr io_buffer1(new net::IOBuffer(0)); scoped_refptr io_buffer2(new net::IOBuffer(2)); io_buffer2->data()[0] = 1; io_buffer2->data()[1] = 4; message_buffer.AddIOBuffer(io_buffer0, 1); message_buffer.AddIOBuffer(io_buffer1, 0); message_buffer.AddIOBuffer(io_buffer2, 2); EXPECT_EQ(message_buffer.AvailableBytes(), 3); char data = 0; message_buffer.ReadBytes(&data, 1); EXPECT_EQ(data, 3); EXPECT_EQ(message_buffer.AvailableBytes(), 2); message_buffer.ReadBytes(&data, 1); EXPECT_EQ(data, 1); EXPECT_EQ(message_buffer.AvailableBytes(), 1); message_buffer.ReadBytes(&data, 1); EXPECT_EQ(data, 4); EXPECT_EQ(message_buffer.AvailableBytes(), 0); } } // namespace pairing_chromeos