greenplumn CEnumSetTest 源码

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

greenplumn CEnumSetTest 代码

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

//---------------------------------------------------------------------------
//	Greenplum Database
//	Copyright (C) 2009 Greenplum, Inc.
//
//	@filename:
//		CEnumSetTest.cpp
//
//	@doc:
//      Test for CEnumSet/CEnumSetIter
//---------------------------------------------------------------------------

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

#include "gpos/base.h"
#include "gpos/common/CEnumSet.h"
#include "gpos/common/CEnumSetIter.h"
#include "gpos/memory/CAutoMemoryPool.h"
#include "gpos/test/CUnittest.h"
#include "gpos/types.h"

using namespace gpos;

//---------------------------------------------------------------------------
//	@function:
//		CEnumSetTest::EresUnittest
//
//	@doc:
//		Unittest for enum sets
//
//---------------------------------------------------------------------------
GPOS_RESULT
CEnumSetTest::EresUnittest()
{
	CUnittest rgut[] = {GPOS_UNITTEST_FUNC(CEnumSetTest::EresUnittest_Basics)};

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


//---------------------------------------------------------------------------
//	@function:
//		CEnumSetTest::EresUnittest_Basics
//
//	@doc:
//		Testing ctors/dtor, accessors, iterator
//
//---------------------------------------------------------------------------
GPOS_RESULT
CEnumSetTest::EresUnittest_Basics()
{
	// create memory pool
	CAutoMemoryPool amp;
	CMemoryPool *mp = amp.Pmp();

	using CETestSet = CEnumSet<eTest, eTestSentinel>;
	using CETestIter = CEnumSetIter<eTest, eTestSentinel>;

	CETestSet *enum_set = GPOS_NEW(mp) CETestSet(mp);

	(void) enum_set->ExchangeSet(eTestOne);
	(void) enum_set->ExchangeSet(eTestTwo);

	GPOS_ASSERT(enum_set->ExchangeClear(eTestTwo));
	GPOS_ASSERT(!enum_set->ExchangeSet(eTestTwo));

	CETestIter type_info(*enum_set);
	while (type_info.Advance())
	{
		GPOS_ASSERT((BOOL) type_info);
		GPOS_ASSERT(eTestSentinel > type_info.TBit());
		GPOS_ASSERT(enum_set->Get(type_info.TBit()));
	}

	enum_set->Release();

	return GPOS_OK;
}

// EOF

相关信息

greenplumn 源码目录

相关文章

greenplumn CAutoPTest 源码

greenplumn CAutoRefTest 源码

greenplumn CAutoRgTest 源码

greenplumn CBitSetIterTest 源码

greenplumn CBitSetTest 源码

greenplumn CBitVectorTest 源码

greenplumn CDoubleTest 源码

greenplumn CDynamicPtrArrayTest 源码

greenplumn CHashMapIterTest 源码

greenplumn CHashMapTest 源码

0  赞