Index: src/libchcore/Tests/TFailedBufferQueueTests.cpp =================================================================== diff -u -N --- src/libchcore/Tests/TFailedBufferQueueTests.cpp (revision bef894e38e5c1486824787cf8c47a87a0828b228) +++ src/libchcore/Tests/TFailedBufferQueueTests.cpp (revision 0) @@ -1,194 +0,0 @@ -#include "stdafx.h" -#include "gtest/gtest.h" -#include "gmock/gmock.h" -#include "../TFailedBufferQueue.h" -#include "../GTestMacros.h" -#include "../TOverlappedDataBuffer.h" -#include - -using namespace chcore; - -class FallbackCollection : public std::vector -{ -public: - void Push(TOverlappedDataBuffer* pBuffer, bool /*bKeepPos*/) - { - push_back(pBuffer); - } -}; - -/////////////////////////////////////////////////////////////////////////////// -// Construction tests - -TEST(TFailedBufferQueueTests, ConstructionSanityTest) -{ - TFailedBufferQueue queue; - - EXPECT_EQ(0, queue.GetCount()); - EXPECT_TIMEOUT(queue.GetHasBuffersEvent()); - EXPECT_EQ(true, queue.IsEmpty()); -} - -/////////////////////////////////////////////////////////////////////////////// -// PushBuffer tests - -TEST(TFailedBufferQueueTests, PushBuffer_FirstFailure) -{ - TFailedBufferQueue queue; - TOverlappedDataBuffer buffer(4096, nullptr); - buffer.SetErrorCode(123); - - FallbackCollection collection; - - queue.PushWithFallback(&buffer, collection); - EXPECT_EQ(false, queue.IsEmpty()); - EXPECT_EQ(1, queue.GetCount()); - EXPECT_SIGNALED(queue.GetHasBuffersEvent()); - EXPECT_EQ(true, collection.empty()); -} - -TEST(TFailedBufferQueueTests, PushBuffer_TwoSubsequentFailures) -{ - TFailedBufferQueue queue; - TOverlappedDataBuffer buffer1(4096, nullptr); - TOverlappedDataBuffer buffer2(4096, nullptr); - buffer1.SetFilePosition(0); - buffer1.SetErrorCode(123); - buffer2.SetFilePosition(1000); - buffer2.SetErrorCode(234); - - FallbackCollection collection; - - queue.PushWithFallback(&buffer1, collection); - queue.PushWithFallback(&buffer2, collection); - - EXPECT_EQ(false, queue.IsEmpty()); - EXPECT_EQ(1, queue.GetCount()); - EXPECT_SIGNALED(queue.GetHasBuffersEvent()); - EXPECT_EQ(1, collection.size()); - EXPECT_EQ(&buffer2, collection.front()); - EXPECT_EQ(1000, collection.front()->GetFilePosition()); - EXPECT_EQ(234, collection.front()->GetErrorCode()); -} - -TEST(TFailedBufferQueueTests, PushBuffer_TwoFailuresOutOfOrder) -{ - TFailedBufferQueue queue; - TOverlappedDataBuffer buffer1(4096, nullptr); - TOverlappedDataBuffer buffer2(4096, nullptr); - buffer1.SetFilePosition(0); - buffer1.SetErrorCode(123); - buffer2.SetFilePosition(1000); - buffer2.SetErrorCode(234); - - FallbackCollection collection; - - queue.PushWithFallback(&buffer2, collection); - queue.PushWithFallback(&buffer1, collection); - - EXPECT_EQ(false, queue.IsEmpty()); - EXPECT_EQ(1, queue.GetCount()); - EXPECT_SIGNALED(queue.GetHasBuffersEvent()); - EXPECT_EQ(1, collection.size()); - EXPECT_EQ(&buffer2, collection.front()); - EXPECT_EQ(1000, collection.front()->GetFilePosition()); - EXPECT_EQ(234, collection.front()->GetErrorCode()); -} - -TEST(TFailedBufferQueueTests, PushBuffer_ThrowOnNonErrorBuffer) -{ - TFailedBufferQueue queue; - TOverlappedDataBuffer buffer1(4096, nullptr); - buffer1.SetFilePosition(0); - buffer1.SetErrorCode(ERROR_SUCCESS); - - FallbackCollection collection; - - EXPECT_THROW(queue.PushWithFallback(&buffer1, collection), TCoreException); -} - -TEST(TFailedBufferQueueTests, PushBuffer_WithSamePosition) -{ - TFailedBufferQueue queue; - TOverlappedDataBuffer buffer1(4096, nullptr); - TOverlappedDataBuffer buffer2(4096, nullptr); - buffer1.SetFilePosition(1000); - buffer1.SetErrorCode(123); - buffer2.SetFilePosition(1000); - buffer2.SetErrorCode(234); - - FallbackCollection collection; - - queue.PushWithFallback(&buffer1, collection); - EXPECT_THROW(queue.PushWithFallback(&buffer2, collection), TCoreException); -} - -///////////////////////////////////////////////////////////////////////////////////////// -// Pop tests - -TEST(TFailedBufferQueueTests, PopBuffer_EmptyContainer) -{ - TFailedBufferQueue queue; - EXPECT_EQ(nullptr, queue.Pop()); -} - -TEST(TFailedBufferQueueTests, PopBuffer_WithSamePosition) -{ - TFailedBufferQueue queue; - TOverlappedDataBuffer buffer1(4096, nullptr); - TOverlappedDataBuffer buffer2(4096, nullptr); - TOverlappedDataBuffer buffer3(4096, nullptr); - buffer1.SetFilePosition(0); - buffer1.SetErrorCode(123); - buffer2.SetFilePosition(1000); - buffer2.SetErrorCode(234); - - FallbackCollection collection; - - queue.PushWithFallback(&buffer1, collection); - queue.Pop(); - - EXPECT_EQ(0, collection.size()); - EXPECT_TIMEOUT(queue.GetHasBuffersEvent()); - - queue.PushWithFallback(&buffer2, collection); - EXPECT_EQ(1, queue.GetCount()); -} - -/////////////////////////////////////////////////////////////////////////////////////////// -// Clear tests - -TEST(TFailedBufferQueueTests, Clear) -{ - TFailedBufferQueue queue; - TOverlappedDataBuffer buffer1(4096, nullptr); - buffer1.SetFilePosition(0); - buffer1.SetErrorCode(123); - - FallbackCollection collection; - - queue.PushWithFallback(&buffer1, collection); - queue.Clear(); - - EXPECT_EQ(0, queue.GetCount()); -} - -////////////////////////////////////////////////////////////////////////////////////////// -// ReleaseBuffers - -TEST(TFailedBufferQueueTests, ReleaseBuffers) -{ - TFailedBufferQueue queue; - TOverlappedDataBuffer buffer1(4096, nullptr); - buffer1.SetFilePosition(0); - buffer1.SetErrorCode(123); - - FallbackCollection collection; - - queue.PushWithFallback(&buffer1, collection); - - TBufferListPtr spReturnedBuffers(std::make_shared()); - queue.ReleaseBuffers(spReturnedBuffers); - - EXPECT_EQ(1, spReturnedBuffers->GetCount()); -}