| // Copyright 2015 The Chromium OS 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 "byte_buffer.h" |
| |
| #include <gtest/gtest.h> |
| |
| namespace { |
| |
| TEST(ByteBuffer, ReadWrite) { |
| struct byte_buffer* b; |
| uint8_t* data; |
| unsigned int data_size; |
| |
| b = byte_buffer_create(100); |
| EXPECT_EQ(100, buf_available(b)); |
| EXPECT_EQ(0, buf_queued(b)); |
| |
| data = buf_read_pointer_size(b, &data_size); |
| EXPECT_NE((void*)NULL, data); |
| EXPECT_EQ(0, data_size); |
| |
| data = buf_write_pointer_size(b, &data_size); |
| EXPECT_NE((void*)NULL, data); |
| EXPECT_EQ(100, data_size); |
| |
| buf_increment_write(b, 50); |
| data = buf_read_pointer_size(b, &data_size); |
| EXPECT_NE((void*)NULL, data); |
| EXPECT_EQ(50, data_size); |
| |
| buf_increment_read(b, 40); |
| EXPECT_EQ(10, buf_queued(b)); |
| EXPECT_EQ(90, buf_available(b)); |
| |
| /* Test write to the end of ring buffer. */ |
| data = buf_write_pointer_size(b, &data_size); |
| EXPECT_NE((void*)NULL, data); |
| EXPECT_EQ(50, data_size); |
| |
| buf_increment_write(b, 50); |
| data = buf_write_pointer_size(b, &data_size); |
| EXPECT_NE((void*)NULL, data); |
| EXPECT_EQ(40, data_size); |
| |
| byte_buffer_destroy(&b); |
| } |
| |
| TEST(ByteBuffer, SetUsedSizeReadWrite) { |
| struct byte_buffer* b; |
| uint8_t* data; |
| unsigned int data_size; |
| |
| b = byte_buffer_create(100); |
| EXPECT_EQ(100, buf_available(b)); |
| EXPECT_EQ(0, buf_queued(b)); |
| |
| /* Test set used_size to limit the initial allocated max size. */ |
| byte_buffer_set_used_size(b, 90); |
| EXPECT_EQ(90, buf_available(b)); |
| |
| data = buf_write_pointer_size(b, &data_size); |
| EXPECT_NE((void*)NULL, data); |
| EXPECT_EQ(90, data_size); |
| |
| buf_increment_write(b, 90); |
| data = buf_read_pointer_size(b, &data_size); |
| EXPECT_NE((void*)NULL, data); |
| EXPECT_EQ(90, data_size); |
| |
| buf_increment_read(b, 50); |
| EXPECT_EQ(50, buf_available(b)); |
| EXPECT_EQ(40, buf_queued(b)); |
| |
| data = buf_write_pointer_size(b, &data_size); |
| EXPECT_NE((void*)NULL, data); |
| EXPECT_EQ(50, data_size); |
| |
| buf_increment_write(b, 50); |
| data = buf_write_pointer_size(b, &data_size); |
| EXPECT_NE((void*)NULL, data); |
| EXPECT_EQ(0, data_size); |
| |
| /* Test read to the end of ring buffer. */ |
| data = buf_read_pointer_size(b, &data_size); |
| EXPECT_NE((void*)NULL, data); |
| EXPECT_EQ(40, data_size); |
| |
| buf_increment_read(b, 40); |
| data = buf_read_pointer_size(b, &data_size); |
| EXPECT_NE((void*)NULL, data); |
| EXPECT_EQ(50, data_size); |
| |
| byte_buffer_destroy(&b); |
| } |
| |
| } // namespace |
| |
| int main(int argc, char** argv) { |
| ::testing::InitGoogleTest(&argc, argv); |
| return RUN_ALL_TESTS(); |
| } |