//---------------------------------------------------------------------------
//	@function:
//		CXMLSerializerTest::EresUnittest_Basic
//
//	@doc:
//		Testing XML serialization
//
//---------------------------------------------------------------------------
GPOS_RESULT
CXMLSerializerTest::EresUnittest_Basic()
{
	CAutoMemoryPool amp;
	IMemoryPool *pmp = amp.Pmp();
	
	// test XML serializer with indentation
	CWStringDynamic *pstrIndented = Pstr(pmp, true /* fIndent */);
	
	CWStringConst strExpectedIndented(GPOS_WSZ_LIT("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<dxl:Plan>\n  <Subplan/>\n</dxl:Plan>\n"));
	
	GPOS_RESULT eresIndented = GPOS_FAILED;
		
	if (pstrIndented->FEquals(&strExpectedIndented))
	{
		eresIndented = GPOS_OK;
	}
	
	// test XML serializer without indentation
	CWStringDynamic *pstrNotIndented = Pstr(pmp, false /* fIndent */);
	
	CWStringConst strExpectedNotIndented(GPOS_WSZ_LIT("<?xml version=\"1.0\" encoding=\"UTF-8\"?><dxl:Plan><Subplan/></dxl:Plan>"));
	
	GPOS_RESULT eresNotIndented = GPOS_FAILED;
		
	if (pstrNotIndented->FEquals(&strExpectedNotIndented))
	{
		eresNotIndented = GPOS_OK;
	}
	
	GPOS_DELETE(pstrIndented);
	GPOS_DELETE(pstrNotIndented);
	
	if (GPOS_FAILED == eresIndented || GPOS_FAILED == eresNotIndented)
	{
		return GPOS_FAILED;
	}
	return GPOS_OK;
}