add memalign unit test

This commit is contained in:
sijchen 2014-03-10 16:28:05 +08:00
parent d63fc1004e
commit 53a570556d
4 changed files with 63 additions and 4 deletions

View File

@ -50,9 +50,7 @@ void* WelsMallocz (const uint32_t kuiSize, const char* kpTag);
void* WelsMalloc (const uint32_t kuiSize, const char* kpTag);
void WelsFree (void* pPointer, const char* kpTag);
const uint32_t WelsGetCacheLineSize() const;
#if defined(MEMORY_MONITOR)
const uint32_t WelsGetMemoryUsage() const;
#endif//MEMORY_MONITOR
private:
// private copy & assign constructors adding to fix klocwork scan issues

View File

@ -139,10 +139,8 @@ const uint32_t CMemoryAlign::WelsGetCacheLineSize() const {
return m_nCacheLineSize;
}
#if defined(MEMORY_MONITOR)
const uint32_t CMemoryAlign::WelsGetMemoryUsage() const {
return m_nMemoryUsageInBytes;
}
#endif//MEMORY_MONITOR
} // end of namespace WelsSVCEnc

View File

@ -0,0 +1,62 @@
#include "../gtest/include/gtest/gtest.h"
#include <string.h> // use memset/memcmp
#include "../codec/encoder/core/inc/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);
ASSERT_EQ( 16, cTestMa.WelsGetCacheLineSize() );
}
TEST(MemoryAlignTest, GetCacheLineSize_MaxUINT)
{
CMemoryAlign cTestMa(0xFFFFFFFF);
ASSERT_EQ( 16, cTestMa.WelsGetCacheLineSize() );
}
//Tests of WelsGetCacheLineSize End
//Tests of WelsMallocAndFree Begin
TEST(MemoryAlignTest, WelsMallocAndFreeOnceFunctionVerify)
{
const uint32_t kuiTargetAlignSize[4] = {32, 16, 64, 8};
srand((uint32_t)time(NULL));
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( (((int64_t)(static_cast<void *>(pUnitTestData))) & kuiExtraAlignSize) == 0 );
EXPECT_EQ( kuiExpectedSize, cTestMa.WelsGetMemoryUsage() );
cTestMa.WelsFree( pUnitTestData, strUnitTestTag );
EXPECT_EQ( 0, cTestMa.WelsGetMemoryUsage() );
}
else {
EXPECT_EQ( NULL, pUnitTestData );
EXPECT_EQ( 0, cTestMa.WelsGetMemoryUsage() );
cTestMa.WelsFree( pUnitTestData, strUnitTestTag );
EXPECT_EQ( 0, cTestMa.WelsGetMemoryUsage() );
}
}
}

View File

@ -7,6 +7,7 @@ CODEC_UNITTEST_CPP_SRCS=\
$(CODEC_UNITTEST_SRCDIR)/decoder_test.cpp\
$(CODEC_UNITTEST_SRCDIR)/encoder_test.cpp\
$(CODEC_UNITTEST_SRCDIR)/simple_test.cpp\
$(CODEC_UNITTEST_SRCDIR)/EncUT_MemoryAlloc.cpp\
CODEC_UNITTEST_OBJS += $(CODEC_UNITTEST_CPP_SRCS:.cpp=.o)