// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of "Eclipse Public License v1.0"
// which accompanies this distribution, and is available
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
//
// Initial Contributors:
// Nokia Corporation - initial contribution.
//
// Contributors:
//
// Description:
// This contains CommDb Unit Test Cases 007.XX
// 
//

// EPOC includes
#include <e32base.h>
#include <commdb.h>


// Test system includes
#include <networking/log.h>
#include <networking/teststep.h>
#include "Teststepcommdb.h"
#include "TestSuiteCommdb.h"
#include "Step_007_xx.h"

//#ifndef SYMBIAN_COMMS_REPOSITORY
//	_LIT(KTempDb3, "c:\\system\\data\\default3.dat");
//#endif

//
//	Test step 007.001
//

// constructor
CCommDbTest007_01::CCommDbTest007_01()
	{
	// store the name of this test case
	iTestStepName = _L("step_007_01");
	}

// destructor
CCommDbTest007_01::~CCommDbTest007_01()
	{
	}


TVerdict CCommDbTest007_01::doTestStepPreambleL()
	{
	openDbAndViewL(TPtrC(DIAL_OUT_ISP));
	return EPass;
	}

#define EXPECTED_FIELD_VALUE _L8("Call me back")

TInt CCommDbTest007_01::executeStepL()
	{
	TInt ret = EFail;


	CDBLEAVE( ret = iTheView->GotoFirstRecord(), KErrNone );
	//Read the value from the field and compare it to the expected value
	TBuf8<KCommsDbSvrMaxFieldLength> value;

	iTheView->ReadTextL( TPtrC(ISP_IF_CALLBACK_INFO), value );

	if( !value.Compare( TPtrC8(EXPECTED_FIELD_VALUE) ) )
		{
		ret = EPass;
		}

	return ret;
	}

TVerdict CCommDbTest007_01::doTestStepL( )
	{
	Log(_L("Step 007.01 called "));

	iTestStepResult = EFail;


	if ( executeStepL() == EPass )
		iTestStepResult = EPass;
	else
		iTestStepResult = EFail;

	return iTestStepResult;
	}


//
//	Test step 007.002
//

// constructor
CCommDbTest007_02::CCommDbTest007_02()
	{
	// store the name of this test case
	iTestStepName = _L("step_007_02");
	}

// destructor
CCommDbTest007_02::~CCommDbTest007_02()
	{
	}


TVerdict CCommDbTest007_02::doTestStepPreambleL()
	{
	openDbAndViewL(TPtrC(DIAL_OUT_ISP));
	return EPass;
	}

#define EXPECTED_ISP_DESCRIPTION _S("Description")

TInt CCommDbTest007_02::executeStepL()
	{
	TInt32 ret = EFail;


	CDBLEAVE( ret = iTheView->GotoFirstRecord(), KErrNone );
	//Read the value from the field and compare it to the expected value
	TBuf<KCommsDbSvrMaxFieldLength> value;
	iTheView->ReadTextL( TPtrC(ISP_DESCRIPTION), value );

	if( !value.Compare( TPtrC(EXPECTED_ISP_DESCRIPTION) ) )
		{
		ret = EPass;
		}

	return ret;
	}

TVerdict CCommDbTest007_02::doTestStepL( )
	{
	Log(_L("Step 007.02 called "));
	iTestStepResult = EFail;

	if ( executeStepL() == EPass  )
		iTestStepResult = EPass;
	else
		iTestStepResult = EFail;

	return iTestStepResult;
	}


//
//	Test step 007.003
//

// constructor
CCommDbTest007_03::CCommDbTest007_03()
	{
	// store the name of this test case
	iTestStepName = _L("step_007_03");
	}

// destructor
CCommDbTest007_03::~CCommDbTest007_03()
	{
	}

TVerdict CCommDbTest007_03::doTestStepPreambleL()
	{
	openDbAndViewL(TPtrC(DIAL_OUT_ISP));
	return EPass;
	}

#define EXPECTED_ISP_LOGIN_SCRIPT _S("wobble")

TInt CCommDbTest007_03::executeStepL()
	{
	TInt32 ret = EFail;

	CDBLEAVE( ret = iTheView->GotoFirstRecord(), KErrNone );

	//Read the value from the LongText field and compare it to the expected value
	HBufC* value = iTheView->ReadLongTextLC( TPtrC(ISP_LOGIN_SCRIPT) );

	if ( value )
		{
		if( !value->Compare( TPtrC(EXPECTED_ISP_LOGIN_SCRIPT) ) )
			{
			ret = EPass;
			}
		CleanupStack::PopAndDestroy();
		}


	return ret;
	}

TVerdict CCommDbTest007_03::doTestStepL( )
	{
	Log(_L("Step 007.03 called "));

	if ( executeStepL() == EPass  )
		iTestStepResult = EPass;
	else
		iTestStepResult = EFail;

	return iTestStepResult;
	}



//
//	Test step 007.004
//

// constructor
CCommDbTest007_04::CCommDbTest007_04()
	{
	// store the name of this test case
	iTestStepName = _L("step_007_04");
	}

// destructor
CCommDbTest007_04::~CCommDbTest007_04()
	{
	}

TVerdict CCommDbTest007_04::doTestStepPreambleL()
	{
	openDbAndViewL(TPtrC(DIAL_OUT_ISP));
	return EPass;
	}

#define EXPECTED_ISP_TYPE  2

TInt CCommDbTest007_04::executeStepL()
	{
	TBool ret = EFail;


	CDBLEAVE( ret = iTheView->GotoFirstRecord(), KErrNone);
	//Read the value from the Uint field and compare it to the expected value
	TUint32 value;
	iTheView->ReadUintL( TPtrC(ISP_TYPE), value );

	if( value == EXPECTED_ISP_TYPE )
		{
		ret = EPass;
		}

	return ret;
}

TVerdict CCommDbTest007_04::doTestStepL( )
	{
	Log(_L("Step 007.04 called "));


	if ( executeStepL() == EPass  )
		iTestStepResult = EPass;
	else
		iTestStepResult = EFail;


	return iTestStepResult;
	}


//
//	Test step 007.005
//

// constructor
CCommDbTest007_05::CCommDbTest007_05()
	{
	// store the name of this test case
	iTestStepName = _L("step_007_05");
	// default to no local objects allocated
	iLocalObjects = EFalse;
	}

// destructor
CCommDbTest007_05::~CCommDbTest007_05()
	{
	}

TVerdict CCommDbTest007_05::doTestStepPreambleL()
	{
	openDbAndViewL(TPtrC(DIAL_OUT_ISP));
	return EPass;
	}

TInt CCommDbTest007_05::executeStepL()
	{
	TBool ret = EFail;

	CDBLEAVE( ret = iTheView->GotoFirstRecord(), KErrNone);
	//Read the value from the Uint field and compare it to the expected value
	TBool expectedValue;
	iTheView->ReadBoolL( TPtrC(ISP_DISPLAY_PCT), expectedValue );

	if( expectedValue )
		{
		iTestStepResult = EPass;
		}

	return ret;
	}

TVerdict CCommDbTest007_05::doTestStepL( )
	{
	Log(_L("Step 007.05 called "));

	if ( executeStepL() == EPass  )
		iTestStepResult = EPass;
	else
		iTestStepResult = EFail;

	return iTestStepResult;
	}



//
//	Test step 007.006
//

// constructor
CCommDbTest007_06::CCommDbTest007_06()
	{
	// store the name of this test case
	iTestStepName = _L("step_007_06");
	}

// destructor
CCommDbTest007_06::~CCommDbTest007_06()
	{
	}

TVerdict CCommDbTest007_06::doTestStepPreambleL()
	{
	openDbAndViewL(TPtrC(DIAL_OUT_ISP));
	return EPass;
	}

#define EXPECTED_COLUMN_LENGTH	10		//Expected length of ISP_IP_ADDR column

TInt CCommDbTest007_06::executeStepL()
	{
	TBool ret = EFail;

	CDBLEAVE( ret = iTheView->GotoFirstRecord(), KErrNone );

	//Read the length of a column
	TInt value;
	iTheView->ReadColumnLengthL( TPtrC(ISP_IP_ADDR), value );

	if( value == EXPECTED_COLUMN_LENGTH )
		iTestStepResult = EPass;

	return ret;
	}

TVerdict CCommDbTest007_06::doTestStepL( )
	{
	Log(_L("Step 007.06 called "));

	if ( executeStepL() == EPass  )
		iTestStepResult = EPass;
	else
		iTestStepResult = EFail;

	return iTestStepResult;
	}


//
//	Test step 007.007
//

// constructor
CCommDbTest007_07::CCommDbTest007_07()
	{
	// store the name of this test case
	iTestStepName = _L("step_007_07");
	}

// destructor
CCommDbTest007_07::~CCommDbTest007_07()
	{
	}



TVerdict CCommDbTest007_07::doTestStepPreambleL()
	{
	openDbAndViewL(TPtrC(DIAL_OUT_ISP));
	return EPass;
	}

TInt CCommDbTest007_07::executeStepL()
	{
	TInt ret = KErrGeneral;

	ret = iTheView->GotoFirstRecord();
	if ( ret == KErrNotFound )
		return ret;

	//Try to read a column value from the empty view
	TBuf<KCommsDbSvrMaxFieldLength> value;
	iTheView->ReadTextL( TPtrC(ISP_DESCRIPTION), value );
	return ret;
	}

TVerdict CCommDbTest007_07::doTestStepL( )
	{
	Log(_L("Step 007.07 called "));

	//NB. create a view on an empty table
	if ( executeStepL() == KErrNotFound )
		iTestStepResult = EPass;
	else
		iTestStepResult = EFail;


	return iTestStepResult;
	}

//
//	Test step 007.08
//

// constructor
CCommDbTest007_08::CCommDbTest007_08()
	{
	// store the name of this test case
	iTestStepName = _L("step_007_08");
	// default to no local objects allocated
	iLocalObjects = EFalse;
	}

// destructor
CCommDbTest007_08::~CCommDbTest007_08()
	{
	}



TVerdict CCommDbTest007_08::doTestStepPreambleL()
	{
	openDbAndViewL(TPtrC(DIAL_OUT_ISP));
	return EPass;
	}

TInt CCommDbTest007_08::executeStepL()
	{
	TBool ret = EFail;

	ret = iTheView->GotoFirstRecord();
	if ( ret == KErrNotFound )
		return EPass;

	//Read the length of a column
	TInt value;
	iTheView->ReadColumnLengthL( TPtrC(ISP_IF_PARAMS), value );
	if ( value == 0 )
		ret = EPass;

	return ret;
	}

TVerdict CCommDbTest007_08::doTestStepL( )
	{
	Log(_L("Step 007.08 called "));

	//NB. create a view on an empty table

	if ( executeStepL() == EPass )
		iTestStepResult = EPass;
	else
		iTestStepResult = EFail;

	return iTestStepResult;
	}

//
//	Test step 007.09
//

// constructor
CCommDbTest007_09::CCommDbTest007_09()
	{
	// store the name of this test case
	iTestStepName = _L("step_007_09");
	}

// destructor
CCommDbTest007_09::~CCommDbTest007_09()
	{
	}


TVerdict CCommDbTest007_09::doTestStepPreambleL()
	{
	openDbAndViewL(TPtrC(DIAL_OUT_ISP));
	return EPass;
	}

TInt CCommDbTest007_09::executeStepL()
	{
	TInt ret = KErrGeneral;

	CDBLEAVE( ret = iTheView->GotoFirstRecord(), KErrNone )

	//Try to read from an invalid column
	TBuf<KCommsDbSvrMaxFieldLength> value;
	TRAPD(r, iTheView->ReadTextL( KInvalidColumnName, value ) );

	ret = r;

	return ret;
	}

TVerdict CCommDbTest007_09::doTestStepL( )
	{
	Log(_L("Step 007.09 called "));

	//NB. create a view on an empty table

	if ( executeStepL() == KErrNotFound )
		iTestStepResult = EPass;
	else
		iTestStepResult = EFail;


	return iTestStepResult;
	}


//
//	Test step 007.10
//

// constructor
CCommDbTest007_10::CCommDbTest007_10()
	{
	// store the name of this test case
	iTestStepName = _L("step_007_10");
	}

// destructor
CCommDbTest007_10::~CCommDbTest007_10()
	{
	}


TVerdict CCommDbTest007_10::doTestStepPreambleL()
	{
	openDbAndViewL(TPtrC(DIAL_OUT_ISP));
	return EPass;
	}


TInt CCommDbTest007_10::executeStepL()
	{
	TInt ret = KErrGeneral;

	CDBLEAVE( ret = iTheView->GotoFirstRecord(), KErrNone );

	//Try to read length of an invalid column
	TInt value;
	TRAPD(r,iTheView->ReadColumnLengthL( KInvalidColumnName, value ));
	ret = r;

	return ret;
	}

TVerdict CCommDbTest007_10::doTestStepL( )
	{
	Log(_L("Step 007.10 called "));

	//NB. create a view on an empty table

	if ( executeStepL() == KErrNotFound )
		iTestStepResult = EPass;
	else
		iTestStepResult = EFail;

	return iTestStepResult;
	}


//
//	Test step 007.11
//

// constructor
CCommDbTest007_11::CCommDbTest007_11()
	{
	// store the name of this test case
	iTestStepName = _L("step_007_11");
	}

// destructor
CCommDbTest007_11::~CCommDbTest007_11()
	{
	}


TVerdict CCommDbTest007_11::doTestStepPreambleL()
	{
	openDbAndViewL(TPtrC(DIAL_OUT_ISP));
	return EPass;
	}

TInt CCommDbTest007_11::executeStepL()
	{
	TInt ret = KErrGeneral;

	CDBLEAVE( ret = iTheView->GotoFirstRecord(), KErrNone);

	//Read a column that will have a NULL value
	TBuf<KCommsDbSvrMaxFieldLength> value;
	TRAPD( r, iTheView->ReadTextL( TPtrC( ISP_DESCRIPTION ), value ) );
	if ( r==KErrNone && value.Size() == 0 )
		{
			//test passed
			ret = KErrNone;
		}
	else if ( r != KErrNone )
		{
		//return the leave reason
		ret = r;
		}


	return ret;
	}

TVerdict CCommDbTest007_11::doTestStepL( )
	{
	Log(_L("Step 007.11 called "));

	if ( executeStepL() == KErrNone )
		iTestStepResult = EPass;
	else
		iTestStepResult = EFail;


	return iTestStepResult;
	}



//
//	Test step 007.12
//

// constructor
CCommDbTest007_12::CCommDbTest007_12()
	{
	// store the name of this test case
	iTestStepName = _L("step_007_12");
	}

// destructor
CCommDbTest007_12::~CCommDbTest007_12()
	{
	}


TVerdict CCommDbTest007_12::doTestStepPreambleL()
	{
	openDbAndViewL(TPtrC(DIAL_OUT_ISP));
	return EPass;
	}


TInt CCommDbTest007_12::executeStepL()
	{
	TInt ret = KErrGeneral;

	CDBLEAVE( ret =  iTheView->GotoFirstRecord(), KErrNone )

	//Try to read length of column containing a NULL value
	TInt value = -1;
	TRAPD(r, iTheView->ReadColumnLengthL( TPtrC(ISP_DESCRIPTION), value ) );
	if ( r==KErrNone && value == 0 )
		{
			//test passed
			ret = KErrNone;
		}
	else if ( r != KErrNone )
		{
		//return the leave reason
		ret = r;
		}

	return ret;
	}

TVerdict CCommDbTest007_12::doTestStepL( )
	{
	Log(_L("Step 007.12 called "));

	//NB. create a view on an empty table
	if ( executeStepL() == KErrNone )
		iTestStepResult = EPass;
	else
		iTestStepResult = EFail;


	return iTestStepResult;
	}




//
//	Test step 007.13
//
/*
//Removed since this test will not compile on Code warrior due to having an array of zero length
// constructor
CCommDbTest007_13::CCommDbTest007_13()
	{
	// store the name of this test case
	iTestStepName = _L("step_007_13");
	}

// destructor
CCommDbTest007_13::~CCommDbTest007_13()
	{
	}


TVerdict CCommDbTest007_13::doTestStepPreambleL()
	{
	copyTestDatabase( EDatabase_1 );
	openDbAndViewL(TPtrC(DIAL_OUT_ISP));
	return EPass;
	}

TInt CCommDbTest007_13::executeStepL()
	{
	TInt ret = KErrGeneral;


	CDBLEAVE( iTheView->GotoFirstRecord(), KErrNone );

	//Read a column and pass a zero length buffer

	//This next line causes a warning
	TBuf<0> value;


	TRAPD( r, iTheView->ReadTextL( TPtrC( ISP_DESCRIPTION ), value ) );
	if ( r==KErrNone  )
		{
			//test passed
			ret = KErrNone;
		}
	else if ( r != KErrNone )
		{
		//return the leave reason
		ret = r;
		}

	return ret;
	}

TVerdict CCommDbTest007_13::doTestStepL( )
	{
	Log(_L("Step 007.13 called."));

	//NB. create a view on an empty table

	if ( executeStepL() == KErrNone )
		iTestStepResult = EPass;
	else
		iTestStepResult = EFail;


	return iTestStepResult;
	}


*/


//
//	Test step 007.14
//

// constructor
CCommDbTest007_14::CCommDbTest007_14()
	{
	// store the name of this test case
	iTestStepName = _L("step_007_14");
	}

// destructor
CCommDbTest007_14::~CCommDbTest007_14()
	{
	}


TVerdict CCommDbTest007_14::doTestStepPreambleL()
	{
	openDbAndViewL(TPtrC(DIAL_OUT_ISP));
	return EPass;
	}

TInt CCommDbTest007_14::executeStepL()
	{
	TInt ret = KErrGeneral;

	CDBLEAVE( iTheView->GotoFirstRecord(), KErrNone );

	//Read a column and pass a small length buffer

	TBuf<5> value;

	TRAPD( r, iTheView->ReadTextL( TPtrC( ISP_DESCRIPTION ), value ) );
	if ( r==KErrNone  )
		{
			//test passed
			ret = KErrNone;
		}
	else if ( r != KErrNone )
		{
		//return the leave reason
		ret = r;
		}

	return ret;
	}

TVerdict CCommDbTest007_14::doTestStepL( )
	{
	//NB. create a view on an empty table

	if ( executeStepL() == KErrNone )
		iTestStepResult = EPass;
	else
		iTestStepResult = EFail;


	return iTestStepResult;
	}



//
//	Test step 007.15
//

// constructor
CCommDbTest007_15::CCommDbTest007_15()
	{
	// store the name of this test case
	iTestStepName = _L("step_007_15");
	}

// destructor
CCommDbTest007_15::~CCommDbTest007_15()
	{
	}


TVerdict CCommDbTest007_15::doTestStepPreambleL()
	{
	openDbAndViewL(TPtrC(DIAL_OUT_ISP));
	return EPass;
	}


#define ISP_DESCRIPTION_VALUE	_S("Isp #1")

TInt CCommDbTest007_15::executeStepL()
	{
	TInt ret = KErrGeneral;

	CDBLEAVE( iTheView->GotoFirstRecord(), KErrNone );

	//Read a read only column
	TBuf<KCommsDbSvrMaxFieldLength> value;
	TRAPD( r, iTheView->ReadTextL( TPtrC( ISP_DESCRIPTION ), value ) );
	if ( r==KErrNone && value.Compare(TPtrC(ISP_DESCRIPTION_VALUE) ) == 0 )
		{
			//test passed
			ret = KErrNone;
		}
	else if ( r != KErrNone )
		{
		//return the leave reason
		ret = r;
		}

	return ret;
	}

TVerdict CCommDbTest007_15::doTestStepL( )
	{
	Log(_L("Step 007.15 called"));

	//NB. create a view on an empty table

	if ( executeStepL() == KErrNone )
		iTestStepResult = EPass;
	else
		iTestStepResult = EFail;


	return iTestStepResult;
	}


//
//	Test step 007.16
// Check different paths in ReadTextL
//

// constructor
CCommDbTest007_16::CCommDbTest007_16()
	{
	// store the name of this test case
	iTestStepName = _L("step_007_16");
	}

// destructor
CCommDbTest007_16::~CCommDbTest007_16()
	{
	}


TVerdict CCommDbTest007_16::doTestStepPreambleL()
	{
	openDbAndViewL(TPtrC(OUTGOING_GPRS));
	return EPass;
	}


#define SHORT_APN_VALUE	_S("Test")

// this is KCommsDbSvrRealMaxFieldLength chars long (=255)
#define LONG_APN_VALUE	_S("TheQuickBrownFoxJumpedOverTheLazyDogTheQuickBrownFoxJumpedOverTheLazyDogTheQuickBrownFoxJumpedOverTheLazyDogTheQuickBrownFoxJumpedOverTheLazyDogTheQuickBrownFoxJumpedOverTheLazyDogTheQuickBrownFoxJumpedOverTheLazyDogTheQuickBrownFoxJumpedOverTheLazyDog123")

TInt CCommDbTest007_16::executeStepL()
	{
	CDBLEAVE( iTheView->GotoFirstRecord(), KErrNone );

	// Read a short APN value
	TBuf<KCommsDbSvrRealMaxFieldLength> value;
	iTheView->ReadTextL( TPtrC( GPRS_APN ), value );

	if (value.Compare(TPtrC(SHORT_APN_VALUE) ) != 0 )
		{
		User::Leave(KErrGeneral);
		}

	// check that the long desc test is valid - ie KCommsDbSvrRealMaxFieldLength
	// hasn't changed since we wrote this
	TPtrC longDesc(LONG_APN_VALUE);
	if (longDesc.Length() != KCommsDbSvrRealMaxFieldLength)
		{
		User::Leave(KErrGeneral);
		}

	CDBLEAVE( iTheView->GotoNextRecord(), KErrNone );
	iTheView->ReadTextL( TPtrC( GPRS_APN ), value );

	if (value.Compare(TPtrC(LONG_APN_VALUE) ) != 0 )
		{
		User::Leave(KErrGeneral);
		}

	return KErrNone;
	}

TVerdict CCommDbTest007_16::doTestStepL( )
	{
	Log(_L("Step 007.16 called"));

	//NB. create a view on an empty table

	if ( executeStepL() == KErrNone )
		iTestStepResult = EPass;
	else
		iTestStepResult = EFail;


	return iTestStepResult;
	}


//
//	Test step 007.17
// Check different paths in ReadTextL
//

// constructor
CCommDbTest007_17::CCommDbTest007_17()
	{
	// store the name of this test case
	iTestStepName = _L("step_007_17");
	}

// destructor
CCommDbTest007_17::~CCommDbTest007_17()
	{
	}

TVerdict CCommDbTest007_17::doTestStepL()
	{
	Log(_L("Step 007.17 called"));

	iTestStepResult = EPass;

	//Heap test for 007.01 - uses default1.xml 
	CCommDbTest007_01* step007_01 = new CCommDbTest007_01;
	CleanupStack::PushL(step007_01);
	step007_01->iSuite = iSuite;
	doTestStepWithHeapFailureL( *step007_01, KErrNone );
	if ( step007_01->iTestStepResult == EFail )
		iTestStepResult = EFail;
	CleanupStack::PopAndDestroy(step007_01);

	//Heap test for 007.02 - uses default1.xml 
	CCommDbTest007_02* step007_02 = new CCommDbTest007_02;
	CleanupStack::PushL(step007_02);
	step007_02->iSuite = iSuite;
	doTestStepWithHeapFailureL( *step007_02, KErrNone );
	if ( step007_02->iTestStepResult == EFail )
		iTestStepResult = EFail;
	CleanupStack::PopAndDestroy(step007_02);

	//Heap test for 007.03 - uses default1.xml 
	CCommDbTest007_03* step007_03 = new CCommDbTest007_03;
	CleanupStack::PushL(step007_03);
	step007_03->iSuite = iSuite;
	doTestStepWithHeapFailureL( *step007_03, KErrNone );
	if ( step007_03->iTestStepResult == EFail )
		iTestStepResult = EFail;
	CleanupStack::PopAndDestroy(step007_03);

	//Heap test for 007.04 - uses default1.xml 
	CCommDbTest007_04* step007_04 = new CCommDbTest007_04;
	CleanupStack::PushL(step007_04);
	step007_04->iSuite = iSuite;
	doTestStepWithHeapFailureL( *step007_04, KErrNone );
	if ( step007_04->iTestStepResult == EFail )
		iTestStepResult = EFail;
	CleanupStack::PopAndDestroy(step007_04);

	//Heap test for 007.05 - uses default1.xml 
	CCommDbTest007_05* step007_05 = new CCommDbTest007_05;
	CleanupStack::PushL(step007_05);
	step007_05->iSuite = iSuite;
	doTestStepWithHeapFailureL( *step007_05, KErrNone );
	if ( step007_05->iTestStepResult == EFail )
		iTestStepResult = EFail;
	CleanupStack::PopAndDestroy(step007_05);

	//Heap test for 007.06 - uses default1.xml 
	CCommDbTest007_06* step007_06 = new CCommDbTest007_06;
	CleanupStack::PushL(step007_06);
	step007_06->iSuite = iSuite;
	doTestStepWithHeapFailureL( *step007_06, KErrNone );
	if ( step007_06->iTestStepResult == EFail )
		iTestStepResult = EFail;
	CleanupStack::PopAndDestroy(step007_06);

	//Heap test for 007.07 - uses default7.xml 
	//Heap test for 007.08 - uses default7.xml 

	//Heap test for 007.09 - uses default1.xml 
	CCommDbTest007_09* step007_09 = new CCommDbTest007_09;
	CleanupStack::PushL(step007_09);
	step007_09->iSuite = iSuite;
	doTestStepWithHeapFailureL( *step007_09, KErrNotFound );
	if ( step007_09->iTestStepResult == EFail )
		iTestStepResult = EFail;
	CleanupStack::PopAndDestroy(step007_09);

	//Heap test for 007.10 - uses default1.xml 
	CCommDbTest007_10* step007_10 = new CCommDbTest007_10;
	CleanupStack::PushL(step007_10);
	step007_10->iSuite = iSuite;
	doTestStepWithHeapFailureL( *step007_10, KErrNotFound );
	if ( step007_10->iTestStepResult == EFail )
		iTestStepResult = EFail;
	CleanupStack::PopAndDestroy(step007_10);

	//Heap test for 007.11 - uses default1.xml 
	CCommDbTest007_11* step007_11 = new CCommDbTest007_11;
	CleanupStack::PushL(step007_11);
	step007_11->iSuite = iSuite;
	doTestStepWithHeapFailureL( *step007_11, KErrNone );
	if ( step007_11->iTestStepResult == EFail )
		iTestStepResult = EFail;
	CleanupStack::PopAndDestroy(step007_11);

	//Heap test for 007.12 - uses default1.xml 
	CCommDbTest007_12* step007_12 = new CCommDbTest007_12;
	CleanupStack::PushL(step007_12);
	step007_12->iSuite = iSuite;
	doTestStepWithHeapFailureL( *step007_12, KErrNone );
	if ( step007_12->iTestStepResult == EFail )
		iTestStepResult = EFail;
	CleanupStack::PopAndDestroy(step007_12);

	//Heap test for 007.14 - uses default1.xml - panic test see 7.20

	//Heap test for 007.15 - uses default1.xml 
	CCommDbTest007_15* step007_15 = new CCommDbTest007_15;
	CleanupStack::PushL(step007_15);
	step007_15->iSuite = iSuite;
	doTestStepWithHeapFailureL( *step007_15, KErrNone );
	if ( step007_15->iTestStepResult == EFail )
		iTestStepResult = EFail;
	CleanupStack::PopAndDestroy(step007_15);
	
	return iTestStepResult;
	}

//
//	Test step 007.18
// Check different paths in ReadTextL
//

// constructor
CCommDbTest007_18::CCommDbTest007_18()
	{
	// store the name of this test case
	iTestStepName = _L("step_007_18");
	}

// destructor
CCommDbTest007_18::~CCommDbTest007_18()
	{
	}

TVerdict CCommDbTest007_18::doTestStepL()
	{
	Log(_L("Step 007.18 called"));

	iTestStepResult = EPass;

	//Heap test for 007.07 - uses default7.xml 
	copyTestDatabase( EDatabase_7 );
	CCommDbTest007_07* step007_07 = new CCommDbTest007_07;
	CleanupStack::PushL(step007_07);
	step007_07->iSuite = iSuite;
	doTestStepWithHeapFailureL( *step007_07, KErrNotFound );
	if ( step007_07->iTestStepResult == EFail )
		iTestStepResult = EFail;
	CleanupStack::PopAndDestroy(step007_07);


	//Heap test for 007.08 - uses default7.xml
	CCommDbTest007_08* step007_08 = new CCommDbTest007_08;
	CleanupStack::PushL(step007_08);
	step007_08->iSuite = iSuite;
	doTestStepWithHeapFailureL( *step007_08, KErrNone );
	if ( step007_08->iTestStepResult == EFail )
		iTestStepResult = EFail;
	CleanupStack::PopAndDestroy(step007_08);

	return iTestStepResult;
	}
	
//
//	Test step 007.19
// Check different paths in ReadTextL
//

// constructor
CCommDbTest007_19::CCommDbTest007_19()
	{
	// store the name of this test case
	iTestStepName = _L("step_007_19");
	}

// destructor
CCommDbTest007_19::~CCommDbTest007_19()
	{
	}

TVerdict CCommDbTest007_19::doTestStepL()
	{
	Log(_L("Step 007.19 called"));

	iTestStepResult = EPass;

	//Heap test for 007.16 - uses default3.xml
	CCommDbTest007_16* step007_16 = new CCommDbTest007_16;
	CleanupStack::PushL(step007_16);
	step007_16->iSuite = iSuite;
	doTestStepWithHeapFailureL( *step007_16, KErrNone );
	if ( step007_16->iTestStepResult == EFail )
		iTestStepResult = EFail;
	CleanupStack::PopAndDestroy(step007_16);

	return iTestStepResult;
	}
	
//
//	Test step 007.20
// Check different paths in ReadTextL
//

// constructor
CCommDbTest007_20::CCommDbTest007_20()
	{
	// store the name of this test case
	iTestStepName = _L("step_007_20");
	}

// destructor
CCommDbTest007_20::~CCommDbTest007_20()
	{
	}

TVerdict CCommDbTest007_20::doTestStepL()
	{

	iTestStepResult = EPass;

	//Heap test for 007.14 - uses default1.xml
	CCommDbTest007_14* step007_14 = new CCommDbTest007_14;
	CleanupStack::PushL(step007_14);
	step007_14->iSuite = iSuite;
	doTestStepWithHeapFailureL( *step007_14, KErrNone );
	if ( step007_14->iTestStepResult == EFail )
		iTestStepResult = EFail;
	CleanupStack::PopAndDestroy(step007_14);

	return iTestStepResult;
	}
