Home | History | Annotate | Download | only in tests
      1 // Copyright 2015 The Chromium OS Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include <gtest/gtest.h>
      6 
      7 #include "byte_buffer.h"
      8 
      9 namespace {
     10 
     11 TEST(ByteBuffer, ReadWrite) {
     12   struct byte_buffer *b;
     13   uint8_t *data;
     14   unsigned int data_size;
     15 
     16   b = byte_buffer_create(100);
     17   EXPECT_EQ(100, buf_available(b));
     18   EXPECT_EQ(0, buf_queued(b));
     19 
     20   data = buf_read_pointer_size(b, &data_size);
     21   EXPECT_NE((void *)NULL, data);
     22   EXPECT_EQ(0, data_size);
     23 
     24   data = buf_write_pointer_size(b, &data_size);
     25   EXPECT_NE((void *)NULL, data);
     26   EXPECT_EQ(100, data_size);
     27 
     28   buf_increment_write(b, 50);
     29   data = buf_read_pointer_size(b, &data_size);
     30   EXPECT_NE((void *)NULL, data);
     31   EXPECT_EQ(50, data_size);
     32 
     33   buf_increment_read(b, 40);
     34   EXPECT_EQ(10, buf_queued(b));
     35   EXPECT_EQ(90, buf_available(b));
     36 
     37   /* Test write to the end of ring buffer. */
     38   data = buf_write_pointer_size(b, &data_size);
     39   EXPECT_NE((void *)NULL, data);
     40   EXPECT_EQ(50, data_size);
     41 
     42   buf_increment_write(b, 50);
     43   data = buf_write_pointer_size(b, &data_size);
     44   EXPECT_NE((void *)NULL, data);
     45   EXPECT_EQ(40, data_size);
     46 
     47   byte_buffer_destroy(&b);
     48 }
     49 
     50 TEST(ByteBuffer, SetUsedSizeReadWrite) {
     51   struct byte_buffer *b;
     52   uint8_t *data;
     53   unsigned int data_size;
     54 
     55   b = byte_buffer_create(100);
     56   EXPECT_EQ(100, buf_available(b));
     57   EXPECT_EQ(0, buf_queued(b));
     58 
     59   /* Test set used_size to limit the initial allocated max size. */
     60   byte_buffer_set_used_size(b, 90);
     61   EXPECT_EQ(90, buf_available(b));
     62 
     63   data = buf_write_pointer_size(b, &data_size);
     64   EXPECT_NE((void *)NULL, data);
     65   EXPECT_EQ(90, data_size);
     66 
     67   buf_increment_write(b, 90);
     68   data = buf_read_pointer_size(b, &data_size);
     69   EXPECT_NE((void *)NULL, data);
     70   EXPECT_EQ(90, data_size);
     71 
     72   buf_increment_read(b, 50);
     73   EXPECT_EQ(50, buf_available(b));
     74   EXPECT_EQ(40, buf_queued(b));
     75 
     76   data = buf_write_pointer_size(b, &data_size);
     77   EXPECT_NE((void *)NULL, data);
     78   EXPECT_EQ(50, data_size);
     79 
     80   buf_increment_write(b, 50);
     81   data = buf_write_pointer_size(b, &data_size);
     82   EXPECT_NE((void *)NULL, data);
     83   EXPECT_EQ(0, data_size);
     84 
     85   /* Test read to the end of ring buffer. */
     86   data = buf_read_pointer_size(b, &data_size);
     87   EXPECT_NE((void *)NULL, data);
     88   EXPECT_EQ(40, data_size);
     89 
     90   buf_increment_read(b, 40);
     91   data = buf_read_pointer_size(b, &data_size);
     92   EXPECT_NE((void *)NULL, data);
     93   EXPECT_EQ(50, data_size);
     94 
     95   byte_buffer_destroy(&b);
     96 }
     97 
     98 } // namespace
     99 
    100 int main(int argc, char **argv) {
    101   ::testing::InitGoogleTest(&argc, argv);
    102   return RUN_ALL_TESTS();
    103 }