Index: src/libchcore/Tests/TReadBufferQueueWrapperTests.cpp =================================================================== diff -u -N --- src/libchcore/Tests/TReadBufferQueueWrapperTests.cpp (revision cb1a7688ad1ac1081a219c170754776e986ccc8c) +++ src/libchcore/Tests/TReadBufferQueueWrapperTests.cpp (revision 0) @@ -1,271 +0,0 @@ -#include "stdafx.h" -#include "gtest/gtest.h" -#include "gmock/gmock.h" -#include "../TReadBufferQueueWrapper.h" -#include -#include "../TCoreException.h" -#include "../GTestMacros.h" - -using namespace chcore; - -TEST(TReadBufferQueueWrapperTests, ConstructorWithZeroChunkSize) -{ - TBufferListPtr spList(std::make_shared()); - - EXPECT_THROW(TReadBufferQueueWrapper(spList, 0, 0, 0, 0, nullptr, nullptr), TCoreException); -} - -TEST(TReadBufferQueueWrapperTests, Constructor) -{ - TBufferListPtr spList(std::make_shared()); - - TSharedCountPtr spOtfBufferCount(std::make_shared>()); - TSharedCountMTPtr spReadAheadBufferCount(std::make_shared>()); - - TReadBufferQueueWrapper queue(spList, 0, 1024, 1, 1, spOtfBufferCount, spReadAheadBufferCount); - EXPECT_SIGNALED(queue.GetHasBuffersEvent()); - EXPECT_EQ(false, queue.IsDataSourceFinished()); -} - -TEST(TReadBufferQueueWrapperTests, Pop_EmptyQueue) -{ - TBufferListPtr spList(std::make_shared()); - - TSharedCountPtr spOtfBufferCount(std::make_shared>()); - TSharedCountMTPtr spReadAheadBufferCount(std::make_shared>()); - - TReadBufferQueueWrapper queue(spList, 0, 1024, 1, 1, spOtfBufferCount, spReadAheadBufferCount); - - EXPECT_EQ(nullptr, queue.Pop()); -} - -TEST(TReadBufferQueueWrapperTests, Pop_FromBufferList) -{ - TBufferListPtr spList(std::make_shared()); - TOverlappedDataBuffer buffer1(1024, nullptr); - TOverlappedDataBuffer buffer2(1024, nullptr); - TOverlappedDataBuffer buffer3(1024, nullptr); - TOverlappedDataBuffer buffer4(1024, nullptr); - spList->Push(&buffer1); - spList->Push(&buffer2); - spList->Push(&buffer3); - spList->Push(&buffer4); - - TSharedCountPtr spOtfBufferCount(std::make_shared>()); - TSharedCountMTPtr spReadAheadBufferCount(std::make_shared>()); - - TReadBufferQueueWrapper queue(spList, 0, 1024, 1, 1, spOtfBufferCount, spReadAheadBufferCount); - - EXPECT_EQ(&buffer4, queue.Pop()); - EXPECT_EQ(0, buffer4.GetFilePosition()); - EXPECT_EQ(1024, buffer4.GetRequestedDataSize()); - - EXPECT_EQ(&buffer3, queue.Pop()); - EXPECT_EQ(1024, buffer3.GetFilePosition()); - EXPECT_EQ(1024, buffer3.GetRequestedDataSize()); - - EXPECT_EQ(&buffer2, queue.Pop()); - EXPECT_EQ(2048, buffer2.GetFilePosition()); - EXPECT_EQ(1024, buffer2.GetRequestedDataSize()); - - EXPECT_EQ(&buffer1, queue.Pop()); - EXPECT_EQ(3072, buffer1.GetFilePosition()); - EXPECT_EQ(1024, buffer1.GetRequestedDataSize()); - - EXPECT_EQ(nullptr, queue.Pop()); -} - -TEST(TReadBufferQueueWrapperTests, PushPop_ClaimedBuffers) -{ - TBufferListPtr spList(std::make_shared()); - TSharedCountPtr spOtfBufferCount(std::make_shared>()); - TSharedCountMTPtr spReadAheadBufferCount(std::make_shared>()); - - TReadBufferQueueWrapper queue(spList, 0, 1024, 1, 1, spOtfBufferCount, spReadAheadBufferCount); - - TOverlappedDataBuffer buffer1(1024, nullptr); - TOverlappedDataBuffer buffer2(1024, nullptr); - TOverlappedDataBuffer buffer3(1024, nullptr); - TOverlappedDataBuffer buffer4(1024, nullptr); - queue.PushEmpty(&buffer1); - queue.PushEmpty(&buffer2); - queue.PushEmpty(&buffer3); - queue.PushEmpty(&buffer4); - - EXPECT_SIGNALED(queue.GetHasBuffersEvent()); - EXPECT_EQ(&buffer4, queue.Pop()); - EXPECT_EQ(0, buffer4.GetFilePosition()); - EXPECT_EQ(1024, buffer4.GetRequestedDataSize()); - - EXPECT_SIGNALED(queue.GetHasBuffersEvent()); - EXPECT_EQ(&buffer3, queue.Pop()); - EXPECT_EQ(1024, buffer3.GetFilePosition()); - EXPECT_EQ(1024, buffer3.GetRequestedDataSize()); - - EXPECT_SIGNALED(queue.GetHasBuffersEvent()); - EXPECT_EQ(&buffer2, queue.Pop()); - EXPECT_EQ(2048, buffer2.GetFilePosition()); - EXPECT_EQ(1024, buffer2.GetRequestedDataSize()); - - EXPECT_SIGNALED(queue.GetHasBuffersEvent()); - EXPECT_EQ(&buffer1, queue.Pop()); - EXPECT_EQ(3072, buffer1.GetFilePosition()); - EXPECT_EQ(1024, buffer1.GetRequestedDataSize()); - - EXPECT_SIGNALED(queue.GetHasBuffersEvent()); - EXPECT_EQ(nullptr, queue.Pop()); - EXPECT_TIMEOUT(queue.GetHasBuffersEvent()); -} - -TEST(TReadBufferQueueWrapperTests, PushPop_MixedBuffers) -{ - TBufferListPtr spList(std::make_shared()); - TOverlappedDataBuffer buffer1(1024, nullptr); - TOverlappedDataBuffer buffer2(1024, nullptr); - spList->Push(&buffer1); - spList->Push(&buffer2); - - TSharedCountPtr spOtfBufferCount(std::make_shared>()); - TSharedCountMTPtr spReadAheadBufferCount(std::make_shared>()); - - TReadBufferQueueWrapper queue(spList, 0, 1024, 1, 1, spOtfBufferCount, spReadAheadBufferCount); - - TOverlappedDataBuffer buffer3(1024, nullptr); - TOverlappedDataBuffer buffer4(1024, nullptr); - queue.PushEmpty(&buffer3); - queue.PushEmpty(&buffer4); - - EXPECT_SIGNALED(queue.GetHasBuffersEvent()); - EXPECT_EQ(&buffer4, queue.Pop()); - EXPECT_EQ(0, buffer4.GetFilePosition()); - EXPECT_EQ(1024, buffer4.GetRequestedDataSize()); - - EXPECT_SIGNALED(queue.GetHasBuffersEvent()); - EXPECT_EQ(&buffer3, queue.Pop()); - EXPECT_EQ(1024, buffer3.GetFilePosition()); - EXPECT_EQ(1024, buffer3.GetRequestedDataSize()); - - EXPECT_SIGNALED(queue.GetHasBuffersEvent()); - EXPECT_EQ(&buffer2, queue.Pop()); - EXPECT_EQ(2048, buffer2.GetFilePosition()); - EXPECT_EQ(1024, buffer2.GetRequestedDataSize()); - - EXPECT_SIGNALED(queue.GetHasBuffersEvent()); - EXPECT_EQ(&buffer1, queue.Pop()); - EXPECT_EQ(3072, buffer1.GetFilePosition()); - EXPECT_EQ(1024, buffer1.GetRequestedDataSize()); - - EXPECT_SIGNALED(queue.GetHasBuffersEvent()); - EXPECT_EQ(nullptr, queue.Pop()); - EXPECT_TIMEOUT(queue.GetHasBuffersEvent()); -} - -///////////////////////////////////////////////////////////////////////////////// -// data source finished mode - -TEST(TReadBufferQueueWrapperTests, PushPop_DataSourceFinished) -{ - TBufferListPtr spList(std::make_shared()); - - TOverlappedDataBuffer buffer1(1024, nullptr); - buffer1.SetLastPart(true); - - spList->Push(&buffer1); - - TSharedCountPtr spOtfBufferCount(std::make_shared>()); - TSharedCountMTPtr spReadAheadBufferCount(std::make_shared>()); - - TReadBufferQueueWrapper queue(spList, 0, 1024, 1, 1, spOtfBufferCount, spReadAheadBufferCount); - queue.SetDataSourceFinished(&buffer1); - - EXPECT_EQ(true, queue.IsDataSourceFinished()); - EXPECT_EQ(nullptr, queue.Pop()); -} - -TEST(TReadBufferQueueWrapperTests, PushPop_DataSourceFinishedUsingInvalidBuffer) -{ - TBufferListPtr spList(std::make_shared()); - - TOverlappedDataBuffer buffer1(1024, nullptr); - spList->Push(&buffer1); - - TSharedCountPtr spOtfBufferCount(std::make_shared>()); - TSharedCountMTPtr spReadAheadBufferCount(std::make_shared>()); - - TReadBufferQueueWrapper queue(spList, 0, 1024, 1, 1, spOtfBufferCount, spReadAheadBufferCount); - - EXPECT_THROW(queue.SetDataSourceFinished(&buffer1), TCoreException); -} - -TEST(TReadBufferQueueWrapperTests, PushPop_DataSourceFinished_CheckBufferMaintenance) -{ - TBufferListPtr spList(std::make_shared()); - TSharedCountPtr spOtfBufferCount(std::make_shared>()); - TSharedCountMTPtr spReadAheadBufferCount(std::make_shared>()); - - TReadBufferQueueWrapper queue(spList, 0, 1024, 1, 1, spOtfBufferCount, spReadAheadBufferCount); - - TOverlappedDataBuffer buffer1(1024, nullptr); - buffer1.SetFilePosition(0); - buffer1.SetLastPart(true); - queue.Push(&buffer1); - TOverlappedDataBuffer buffer2(1024, nullptr); - buffer2.SetFilePosition(1024); - buffer2.SetLastPart(true); - queue.Push(&buffer2); - - queue.SetDataSourceFinished(&buffer1); - - EXPECT_EQ(&buffer1, queue.Pop()); - - EXPECT_EQ(0, spList->GetCount()); - EXPECT_EQ(nullptr, spList->Pop()); -} - -TEST(TReadBufferQueueWrapperTests, PushPop_DataSourceFinished_ValidPushAfterFinished) -{ - TBufferListPtr spList(std::make_shared()); - TSharedCountPtr spOtfBufferCount(std::make_shared>()); - TSharedCountMTPtr spReadAheadBufferCount(std::make_shared>()); - - TReadBufferQueueWrapper queue(spList, 0, 1024, 1, 1, spOtfBufferCount, spReadAheadBufferCount); - - TOverlappedDataBuffer buffer1(1024, nullptr); - buffer1.SetLastPart(true); - queue.Push(&buffer1); - - queue.SetDataSourceFinished(&buffer1); - - EXPECT_EQ(0, spList->GetCount()); - - TOverlappedDataBuffer buffer2(1024, nullptr); - buffer2.SetLastPart(true); - queue.Push(&buffer2); - - EXPECT_EQ(&buffer1, queue.Pop()); - EXPECT_EQ(1, spList->GetCount()); - EXPECT_EQ(&buffer2, spList->Pop()); -} - -TEST(TReadBufferQueueWrapperTests, PushPop_DataSourceFinished_InvalidPushAfterFinished) -{ - TBufferListPtr spList(std::make_shared()); - TSharedCountPtr spOtfBufferCount(std::make_shared>()); - TSharedCountMTPtr spReadAheadBufferCount(std::make_shared>()); - - TReadBufferQueueWrapper queue(spList, 0, 1024, 1, 1, spOtfBufferCount, spReadAheadBufferCount); - - TOverlappedDataBuffer buffer1(1024, nullptr); - buffer1.SetLastPart(true); - buffer1.SetFilePosition(0); - queue.Push(&buffer1); - - queue.SetDataSourceFinished(&buffer1); - - EXPECT_EQ(&buffer1, queue.Pop()); - EXPECT_EQ(0, spList->GetCount()); - - TOverlappedDataBuffer buffer2(1024, nullptr); - buffer2.SetFilePosition(1000); - EXPECT_THROW(queue.Push(&buffer2), TCoreException); -}