greenplumn CAutoRefTest 源码

  • 2022-08-18
  • 浏览 (368)

greenplumn CAutoRefTest 代码

文件路径:/src/backend/gporca/libgpos/server/src/unittest/gpos/common/CAutoRefTest.cpp

//---------------------------------------------------------------------------
//	Greenplum Database
//	Copyright (C) 2009 Greenplum, Inc.
//
//	@filename:
//		CAutoRefTest.cpp
//
//	@doc:
//		Tests for CAutoRef
//---------------------------------------------------------------------------

#include "unittest/gpos/common/CAutoRefTest.h"

#include "gpos/base.h"
#include "gpos/common/CAutoRef.h"
#include "gpos/memory/CAutoMemoryPool.h"
#include "gpos/test/CUnittest.h"

using namespace gpos;


//---------------------------------------------------------------------------
//	@function:
//		CAutoRef::EresUnittest
//
//	@doc:
//		Unittest for reference counted auto pointers
//
//---------------------------------------------------------------------------
GPOS_RESULT
CAutoRefTest::EresUnittest()
{
	CUnittest rgut[] = {GPOS_UNITTEST_FUNC(CAutoRefTest::EresUnittest_Basics)};

	return CUnittest::EresExecute(rgut, GPOS_ARRAY_SIZE(rgut));
}


//---------------------------------------------------------------------------
//	@function:
//		CAutoRefTest::EresUnittest_Basics
//
//	@doc:
//		Various basic operations
//
//---------------------------------------------------------------------------
GPOS_RESULT
CAutoRefTest::EresUnittest_Basics()
{
	// create memory pool
	CAutoMemoryPool amp;
	CMemoryPool *mp = amp.Pmp();

	// assignment
	CAutoRef<CElem> aelem;
	CElem *pelem = GPOS_NEW(mp) CElem(0);
	aelem = pelem;

	GPOS_ASSERT(aelem->m_ul == pelem->m_ul);
	GPOS_ASSERT(&aelem->m_ul == &pelem->m_ul);

#ifdef GPOS_DEBUG
	CElem *pelem2 = &(*pelem);
	GPOS_ASSERT(pelem2 == pelem);
#endif	// GPOS_DEBUG

	// hand reference over to other auto ref count
	CAutoRef<CElem> aelem2;
	aelem2 = aelem.Reset();

	// c'tor
	CAutoRef<CElem> aelem3(GPOS_NEW(mp) CElem(10));
	GPOS_ASSERT(aelem3->m_ul == ULONG(10));

	return GPOS_OK;
}

// EOF

相关信息

greenplumn 源码目录

相关文章

greenplumn CAutoPTest 源码

greenplumn CAutoRgTest 源码

greenplumn CBitSetIterTest 源码

greenplumn CBitSetTest 源码

greenplumn CBitVectorTest 源码

greenplumn CDoubleTest 源码

greenplumn CDynamicPtrArrayTest 源码

greenplumn CEnumSetTest 源码

greenplumn CHashMapIterTest 源码

greenplumn CHashMapTest 源码

0  赞