ref: fa8e56e944ae8163e8ac7b66fea2ae2845aa1bce
dir: /test/encoder/EncUT_MemoryAlloc.cpp/
#include "gtest/gtest.h" #include "memory_align.h" using namespace WelsSVCEnc; //Tests of WelsGetCacheLineSize Begin TEST (MemoryAlignTest, GetCacheLineSize_LoopWithin16K) { const unsigned int kuiTestBoundary16K = 16 * 1024; unsigned int uiTargetAlign = 1; while (uiTargetAlign < kuiTestBoundary16K) { CMemoryAlign cTestMa (uiTargetAlign); ASSERT_EQ ((uiTargetAlign & 0x0F) ? 16 : uiTargetAlign, cTestMa.WelsGetCacheLineSize()); ++ uiTargetAlign; } } TEST (MemoryAlignTest, GetCacheLineSize_Zero) { CMemoryAlign cTestMa (0); const uint32_t kuiSixteen = 16; ASSERT_EQ (kuiSixteen, cTestMa.WelsGetCacheLineSize()); } TEST (MemoryAlignTest, GetCacheLineSize_MaxUINT) { CMemoryAlign cTestMa (0xFFFFFFFF); const uint32_t kuiSixteen = 16; ASSERT_EQ (kuiSixteen, cTestMa.WelsGetCacheLineSize()); } //Tests of WelsGetCacheLineSize End //Tests of WelsMallocAndFree Begin TEST (MemoryAlignTest, WelsMallocAndFreeOnceFunctionVerify) { const uint32_t kuiTargetAlignSize[4] = {32, 16, 64, 8}; const uint32_t kuiZero = 0; for (int i = 0; i < 4; i++) { const uint32_t kuiTestAlignSize = kuiTargetAlignSize[i]; const uint32_t kuiTestDataSize = abs (rand()); CMemoryAlign cTestMa (kuiTestAlignSize); const uint32_t uiSize = kuiTestDataSize; const char strUnitTestTag[100] = "pUnitTestData"; const uint32_t kuiUsedCacheLineSize = ((kuiTestAlignSize == 0) || (kuiTestAlignSize & 0x0F)) ? (16) : (kuiTestAlignSize); const uint32_t kuiExtraAlignSize = kuiUsedCacheLineSize - 1; const uint32_t kuiExpectedSize = sizeof (void**) + sizeof (int32_t) + kuiExtraAlignSize + uiSize; uint8_t* pUnitTestData = static_cast<uint8_t*> (cTestMa.WelsMalloc (uiSize, strUnitTestTag)); if (pUnitTestData != NULL) { ASSERT_TRUE ((((uintptr_t) (pUnitTestData)) & kuiExtraAlignSize) == 0); EXPECT_EQ (kuiExpectedSize, cTestMa.WelsGetMemoryUsage()); cTestMa.WelsFree (pUnitTestData, strUnitTestTag); EXPECT_EQ (kuiZero, cTestMa.WelsGetMemoryUsage()); } else { EXPECT_EQ (NULL, pUnitTestData); EXPECT_EQ (kuiZero, cTestMa.WelsGetMemoryUsage()); cTestMa.WelsFree (pUnitTestData, strUnitTestTag); EXPECT_EQ (kuiZero, cTestMa.WelsGetMemoryUsage()); } } }