|
5 | 5 | #include "gtest/gtest.h"
|
6 | 6 |
|
7 | 7 | #define TEST_BUFFER_SIZE 100
|
| 8 | +#define REDUCE_SIZE 100 |
8 | 9 |
|
9 | 10 | class CircularBufferTest : public ::testing::Test{
|
10 | 11 |
|
@@ -72,6 +73,9 @@ TEST_F(CircularBufferTest, ClearTest){
|
72 | 73 | //check size and empty flags after clearing
|
73 | 74 | EXPECT_TRUE(test_buff.empty());
|
74 | 75 | EXPECT_EQ(test_buff.size(), 0);
|
| 76 | + //fill buffer after clear |
| 77 | + for(int i=0; i<TEST_BUFFER_SIZE; i++) |
| 78 | + test_buff.push_back("string" + std::to_string(i)); |
75 | 79 |
|
76 | 80 | }
|
77 | 81 |
|
@@ -347,6 +351,53 @@ TEST_F(CircularBufferTest, EndIteratorTest){
|
347 | 351 |
|
348 | 352 | }
|
349 | 353 |
|
| 354 | +TEST_F(CircularBufferTest, IteratorBasedLoopTest){ |
| 355 | + //create full buffer |
| 356 | + for(int i=0; i<TEST_BUFFER_SIZE; i++) |
| 357 | + test_buff.push_back("string" + std::to_string(i)); |
| 358 | + int i = 0; |
| 359 | + for(auto it = test_buff.begin(); it!=test_buff.end(); it++) |
| 360 | + EXPECT_EQ(*it, "string" + std::to_string(i++)); |
| 361 | + //partially fill buffers |
| 362 | + test_buff.clear(); |
| 363 | + for(int i=0; i<TEST_BUFFER_SIZE/2; i++) |
| 364 | + test_buff.push_back("string" + std::to_string(i)); |
| 365 | + //test begin and end on partially full buffer |
| 366 | + i = 0; |
| 367 | + for(auto it = test_buff.begin(); it!=test_buff.end(); it++) |
| 368 | + EXPECT_EQ(*it, "string" + std::to_string(i++)); |
| 369 | + //test size with increment variable |
| 370 | + EXPECT_EQ(i, TEST_BUFFER_SIZE/2); |
| 371 | + |
| 372 | +} |
| 373 | + |
| 374 | +TEST_F(CircularBufferTest, RangeBasedLoopTest){ |
| 375 | + //create full buffer |
| 376 | + for(int i=0; i<TEST_BUFFER_SIZE; i++) |
| 377 | + test_buff.push_back("string" + std::to_string(i)); |
| 378 | + int i = 0; |
| 379 | + //copied elements |
| 380 | + for(auto buff_elem : test_buff) |
| 381 | + EXPECT_EQ(buff_elem, "string" + std::to_string(i++)); |
| 382 | + //auto reference |
| 383 | + i = 0; |
| 384 | + for(auto& buff_elem : test_buff) |
| 385 | + EXPECT_EQ(buff_elem, "string" + std::to_string(i++)); |
| 386 | + //auto const reference |
| 387 | + i = 0; |
| 388 | + for(const auto& buff_elem : test_buff) |
| 389 | + EXPECT_EQ(buff_elem, "string" + std::to_string(i++)); |
| 390 | + //check iterators after modifications |
| 391 | + for(int i = 0; i<REDUCE_SIZE; i++) |
| 392 | + test_buff.pop_front(); |
| 393 | + i = 0; |
| 394 | + for(const auto& buff_elem : test_buff) |
| 395 | + EXPECT_EQ(buff_elem, "string" + std::to_string(i++)); |
| 396 | + EXPECT_EQ(i, TEST_BUFFER_SIZE - REDUCE_SIZE); |
| 397 | +} |
| 398 | + |
| 399 | + |
| 400 | + |
350 | 401 |
|
351 | 402 |
|
352 | 403 |
|
|
0 commit comments