1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
// 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();
}
|