Index: tests/libchcore_test/src/TDataBufferManagerTest.cpp =================================================================== diff -u -N -r409a0af1e9fdea72ca016118d76a5a95e53496e8 -r6f082e25ab71169e9e631f139a2eddc4ef45d2e9 --- tests/libchcore_test/src/TDataBufferManagerTest.cpp (.../TDataBufferManagerTest.cpp) (revision 409a0af1e9fdea72ca016118d76a5a95e53496e8) +++ tests/libchcore_test/src/TDataBufferManagerTest.cpp (.../TDataBufferManagerTest.cpp) (revision 6f082e25ab71169e9e631f139a2eddc4ef45d2e9) @@ -37,4 +37,105 @@ } /////////////////////////////////////////////////////////////////////////////// -// TSimpleDataBuffer +// TDataBufferManager + +TEST(TDataBufferManager, CheckBufferConfigBase) +{ + // only max mem - default values + size_t stMaxMem(0); + EXPECT_EQ(chcore::TDataBufferManager::CheckBufferConfig(stMaxMem), false); + EXPECT_EQ(stMaxMem, chcore::TDataBufferManager::DefaultMaxMemory); + + const size_t stTestSize = 103145; + stMaxMem = stTestSize; + EXPECT_EQ(chcore::TDataBufferManager::CheckBufferConfig(stMaxMem), false); + EXPECT_LE(stTestSize, stMaxMem); +} + +TEST(TDataBufferManager, CheckBufferConfigExt) +{ + // detailed config - default values + size_t stMaxMem = 0; + size_t stPageSize(0); + size_t stChunkSize(0); + EXPECT_EQ(chcore::TDataBufferManager::CheckBufferConfig(stMaxMem, stPageSize, stChunkSize), false); + EXPECT_EQ(stMaxMem, chcore::TDataBufferManager::DefaultMaxMemory); + EXPECT_EQ(stPageSize, chcore::TDataBufferManager::DefaultPageSize); + EXPECT_EQ(stChunkSize, chcore::TDataBufferManager::DefaultBufferSize); + + const size_t stTestMaxSize = 1237645; + const size_t stTestPageSize = 34563; + const size_t stTestBufferSize = 120; + stMaxMem = stTestMaxSize; + stPageSize = stTestPageSize; + stChunkSize = stTestBufferSize; + EXPECT_EQ(chcore::TDataBufferManager::CheckBufferConfig(stMaxMem, stPageSize, stChunkSize), false); + EXPECT_LE(stTestMaxSize, stMaxMem); + EXPECT_LE(stTestPageSize, stPageSize); + EXPECT_LE(stTestBufferSize, stChunkSize); +} + +TEST(TDataBufferManager, FailedInitializations) +{ + chcore::TDataBufferManager tBufferManager; + + // failed initializations + EXPECT_THROW(tBufferManager.Initialize(chcore::TDataBufferManager::DefaultMaxMemory - 1), chcore::TCoreException); + EXPECT_EQ(tBufferManager.IsInitialized(), false); + + EXPECT_THROW(tBufferManager.Initialize(chcore::TDataBufferManager::DefaultMaxMemory, chcore::TDataBufferManager::DefaultPageSize - 1, + chcore::TDataBufferManager::DefaultBufferSize), chcore::TCoreException); + EXPECT_EQ(tBufferManager.IsInitialized(), false); + + // succeeded initialization + EXPECT_NO_FATAL_FAILURE(tBufferManager.Initialize(chcore::TDataBufferManager::DefaultPageSize)); + EXPECT_EQ(tBufferManager.IsInitialized(), true); + EXPECT_EQ(tBufferManager.GetMaxMemorySize(), chcore::TDataBufferManager::DefaultPageSize); +} + +class TInitializedBufferManager : public ::testing::Test +{ +protected: + virtual void SetUp() + { + size_t stMaxMemory = 1048034; + + chcore::TDataBufferManager::CheckBufferConfig(stMaxMemory); + tBufferManager.Initialize(stMaxMemory); + } + + chcore::TDataBufferManager tBufferManager; +}; + +TEST_F(TInitializedBufferManager, FailedResize) +{ + EXPECT_TRUE(tBufferManager.IsInitialized()); + + size_t stCurrentMaxSize = tBufferManager.GetMaxMemorySize(); + size_t stCurrentPageSize = tBufferManager.GetPageSize(); + size_t stCurrentBufferSize = tBufferManager.GetSimpleBufferSize(); + + // try to change to something useless, check if nothing breaks inside + EXPECT_THROW(tBufferManager.ChangeMaxMemorySize(0), chcore::TCoreException); + EXPECT_EQ(stCurrentMaxSize ,tBufferManager.GetMaxMemorySize()); + EXPECT_EQ(stCurrentPageSize, tBufferManager.GetPageSize()); + EXPECT_EQ(stCurrentBufferSize, tBufferManager.GetSimpleBufferSize()); +} + +TEST_F(TInitializedBufferManager, ResizeWithSimpleBufferChecks) +{ + EXPECT_TRUE(tBufferManager.IsInitialized()); + EXPECT_EQ((tBufferManager.GetMaxMemorySize() / tBufferManager.GetSimpleBufferSize()), tBufferManager.GetCountOfFreeBuffers()); + + size_t stCurrentMaxSize = tBufferManager.GetMaxMemorySize(); + + // try to change to something useless, check if nothing breaks inside + size_t stNewBufferSize = stCurrentMaxSize / 2; + tBufferManager.CheckResizeSize(stNewBufferSize); // can't assume that it will return true here, since we don't really know what's the buffer size now... + + EXPECT_NO_FATAL_FAILURE(tBufferManager.ChangeMaxMemorySize(stNewBufferSize)); + EXPECT_EQ(tBufferManager.GetMaxMemorySize(), stNewBufferSize); + + EXPECT_TRUE(tBufferManager.HasFreeBuffer()); + EXPECT_EQ((tBufferManager.GetMaxMemorySize() / tBufferManager.GetSimpleBufferSize()), tBufferManager.GetCountOfFreeBuffers()); +}