From 44bea612ff47c2081acb8702bd63d98a6a5a8345 Mon Sep 17 00:00:00 2001 From: Sviatoslav Tsariov Date: Mon, 13 May 2024 17:52:03 +0300 Subject: [PATCH] Added CircularBufferWithNestedCircularBuffer test --- test/libs/CircularBuffer_unittest.cpp | 41 +++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/test/libs/CircularBuffer_unittest.cpp b/test/libs/CircularBuffer_unittest.cpp index 85dd686..99ddd4f 100644 --- a/test/libs/CircularBuffer_unittest.cpp +++ b/test/libs/CircularBuffer_unittest.cpp @@ -74,3 +74,44 @@ TEST_F(CircularBufferTest, FullAndEmpty) { // Try popping from an empty buffer EXPECT_EQ(buffer->popFront(item), ErrorCode::BUFFER_EMPTY); } + +// Test CircularBuffer with nested CircularBuffer +TEST_F(CircularBufferTest, CircularBufferWithNestedCircularBuffer) { + CircularBuffer*> charBuffer(2); + + CircularBuffer charSubBuffer1(3); + CircularBuffer charSubBuffer2(3); + + EXPECT_EQ(charSubBuffer1.pushBack('a'), ErrorCode::SUCCESS); + EXPECT_EQ(charSubBuffer1.pushBack('b'), ErrorCode::SUCCESS); + EXPECT_EQ(charSubBuffer1.pushBack('c'), ErrorCode::SUCCESS); + + EXPECT_EQ(charSubBuffer2.pushBack('d'), ErrorCode::SUCCESS); + EXPECT_EQ(charSubBuffer2.pushBack('e'), ErrorCode::SUCCESS); + EXPECT_EQ(charSubBuffer2.pushBack('f'), ErrorCode::SUCCESS); + + EXPECT_EQ(charBuffer.pushBack(&charSubBuffer1), ErrorCode::SUCCESS); + EXPECT_EQ(charBuffer.pushBack(&charSubBuffer2), ErrorCode::SUCCESS); + + CircularBuffer* poppedCharSubBuffer; + EXPECT_EQ(charBuffer.popFront(poppedCharSubBuffer), ErrorCode::SUCCESS); + EXPECT_EQ(poppedCharSubBuffer, &charSubBuffer1); + + char c; + EXPECT_EQ(poppedCharSubBuffer->popFront(c), ErrorCode::SUCCESS); + EXPECT_EQ(c, 'a'); + EXPECT_EQ(poppedCharSubBuffer->popFront(c), ErrorCode::SUCCESS); + EXPECT_EQ(c, 'b'); + EXPECT_EQ(poppedCharSubBuffer->popFront(c), ErrorCode::SUCCESS); + EXPECT_EQ(c, 'c'); + + EXPECT_EQ(charBuffer.popFront(poppedCharSubBuffer), ErrorCode::SUCCESS); + EXPECT_EQ(poppedCharSubBuffer, &charSubBuffer2); + + EXPECT_EQ(poppedCharSubBuffer->popFront(c), ErrorCode::SUCCESS); + EXPECT_EQ(c, 'd'); + EXPECT_EQ(poppedCharSubBuffer->popFront(c), ErrorCode::SUCCESS); + EXPECT_EQ(c, 'e'); + EXPECT_EQ(poppedCharSubBuffer->popFront(c), ErrorCode::SUCCESS); + EXPECT_EQ(c, 'f'); +}