@@ -12,75 +12,88 @@ class CircularBufferTest : public ::testing::Test{
12
12
13
13
protected:
14
14
15
- CircularBuffer<std::string> test_buff {TEST_BUFFER_SIZE};
16
-
15
+ CircularBuffer<std::string> test_str_buff {TEST_BUFFER_SIZE};
16
+ CircularBuffer< int > test_int_buff{TEST_BUFFER_SIZE};
17
17
};
18
18
19
19
TEST_F (CircularBufferTest, IteratorBasedLoopTest){
20
20
// create full buffer
21
21
for (int i=0 ; i<TEST_BUFFER_SIZE; i++)
22
- test_buff .push_back (" string" + std::to_string (i));
22
+ test_str_buff .push_back (" string" + std::to_string (i));
23
23
int i = 0 ;
24
- for (auto it = test_buff .begin (); it!=test_buff .end (); it++)
24
+ for (auto it = test_str_buff .begin (); it!=test_str_buff .end (); it++)
25
25
EXPECT_EQ (*it, " string" + std::to_string (i++));
26
26
// partially fill buffers
27
- test_buff .clear ();
27
+ test_str_buff .clear ();
28
28
for (int i=0 ; i<TEST_BUFFER_SIZE/2 ; i++)
29
- test_buff .push_back (" string" + std::to_string (i));
29
+ test_str_buff .push_back (" string" + std::to_string (i));
30
30
// test begin and end on partially full buffer
31
31
i = 0 ;
32
- for (auto it = test_buff .begin (); it!=test_buff .end (); it++)
32
+ for (auto it = test_str_buff .begin (); it!=test_str_buff .end (); it++)
33
33
EXPECT_EQ (*it, " string" + std::to_string (i++));
34
34
// test size with increment variable
35
35
EXPECT_EQ (i, TEST_BUFFER_SIZE/2 );
36
-
37
-
38
36
}
39
37
40
38
TEST_F (CircularBufferTest, RangeBasedLoopTest){
41
39
// create full buffer
42
40
for (int i=0 ; i<TEST_BUFFER_SIZE; i++)
43
- test_buff .push_back (" string" + std::to_string (i));
41
+ test_str_buff .push_back (" string" + std::to_string (i));
44
42
int i = 0 ;
45
43
// copied elements
46
- for (auto buff_elem : test_buff )
44
+ for (auto buff_elem : test_str_buff )
47
45
EXPECT_EQ (buff_elem, " string" + std::to_string (i++));
48
46
// auto reference
49
47
i = 0 ;
50
- for (auto & buff_elem : test_buff )
48
+ for (auto & buff_elem : test_str_buff )
51
49
EXPECT_EQ (buff_elem, " string" + std::to_string (i++));
52
50
// auto const reference
53
51
i = 0 ;
54
- for (const auto & buff_elem : test_buff )
52
+ for (const auto & buff_elem : test_str_buff )
55
53
EXPECT_EQ (buff_elem, " string" + std::to_string (i++));
56
54
// check iterators after modifications
57
55
for (int i = 0 ; i<REDUCE_SIZE; i++)
58
- test_buff .pop_front ();
56
+ test_str_buff .pop_front ();
59
57
i = 0 ;
60
- for (const auto & buff_elem : test_buff )
58
+ for (const auto & buff_elem : test_str_buff )
61
59
EXPECT_EQ (buff_elem, " string" + std::to_string (i++));
62
60
EXPECT_EQ (i, TEST_BUFFER_SIZE - REDUCE_SIZE);
63
61
}
64
62
65
63
TEST_F (CircularBufferTest, FindTest){
66
64
// create full buffer
67
65
for (int i=0 ; i<TEST_BUFFER_SIZE; i++)
68
- test_buff .push_back (" string" + std::to_string (i));
69
- auto result = std::find (test_buff .cbegin (), test_buff .cend (), " string50" );
66
+ test_str_buff .push_back (" string" + std::to_string (i));
67
+ auto result = std::find (test_str_buff .cbegin (), test_str_buff .cend (), " string50" );
70
68
EXPECT_EQ (*result, " string50" );
71
- result = std::find (test_buff.cbegin (), test_buff.cend (), " string100" );
72
- EXPECT_EQ (result, test_buff.cend ());
69
+ result = std::find (test_str_buff.cbegin (), test_str_buff.cend (), " string100" );
70
+ EXPECT_EQ (result, test_str_buff.cend ());
71
+ // partial buffer search
72
+ result = std::find (test_str_buff.cbegin (), test_str_buff.cbegin () + 50 , " string30" );
73
+ EXPECT_EQ (*result, " string30" );
74
+ result = std::find (test_str_buff.cbegin (), test_str_buff.cbegin () + 50 , " string51" );
75
+ EXPECT_EQ (result, test_str_buff.cbegin () + 50 );
73
76
}
74
77
75
78
TEST_F (CircularBufferTest, ForEachTest){
76
79
// create full buffer
77
80
for (int i=0 ; i<TEST_BUFFER_SIZE; i++)
78
- test_buff .push_back (" string" + std::to_string (i));
79
- std::for_each (test_buff .begin (), test_buff .end (), [](std::string& elem){ elem = elem + " modified" ;});
81
+ test_str_buff .push_back (" string" + std::to_string (i));
82
+ std::for_each (test_str_buff .begin (), test_str_buff .end (), [](std::string& elem){ elem = elem + " modified" ;});
80
83
int i=0 ;
81
- for (const auto & elem: test_buff )
84
+ for (const auto & elem: test_str_buff )
82
85
EXPECT_EQ (elem, " string" + std::to_string (i++) + " modified" );
83
86
}
84
87
88
+ TEST_F (CircularBufferTest, SortTest){
89
+ // create full buffer
90
+ for (int i=0 ; i<TEST_BUFFER_SIZE; i++)
91
+ test_int_buff.push_back (i);
92
+ std::sort (test_int_buff.begin (), test_int_buff.end (), std::greater<int >());
93
+ int i = 99 ;
94
+ for (const auto & elem: test_int_buff)
95
+ EXPECT_EQ (elem, i--);
96
+ }
97
+
85
98
86
99
0 commit comments