buildverification/autosmoketest/messaging/Src/TestMessBase.cpp
changeset 0 9736f095102e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildverification/autosmoketest/messaging/Src/TestMessBase.cpp	Tue Jan 26 15:16:33 2010 +0200
@@ -0,0 +1,1517 @@
+// Copyright (c) 2002-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 CTestCase which is the base class for all the TestCase DLLs
+// 
+//
+
+#include "TestMessBase.h"
+#include "TestMessProcessor.h"
+#include "TestMessTimer.h"
+#include "TestMessPrintEntryUtil.h"
+
+// EPOC includes
+#include <smtpset.h>
+#include <pop3set.h>
+#include <imapset.h>
+#include <txtrich.h>
+#include <f32file.h>
+#include <msvids.h>
+#include <fbs.h>
+#include <emsuserpromptie.h>
+#ifdef __MESSAGING_API_V2__
+#include <smut.h>
+#include <miutset.h>
+#include <cemailaccounts.h>
+#include <csmsaccount.h>
+#endif
+/**
+ * @name Constant Literals used.
+ */
+/*@{*/
+_LIT(KDepth,					"depth");
+_LIT(KFolder,					"folder%d");
+
+// Default value for depth of the count
+#define KDefaultDepthCount		1
+
+// Default value for depth of the count
+#define KDefaultDepthCount		1
+
+_LIT(KDefault,					"default");
+
+_LIT(KScheduled,				"scheduled");
+_LIT(KProgress,					"progress");
+
+//_LIT(KIap,						"iap");
+//_LIT(KIapName,					"iapname");
+
+_LIT(KElements,					"elements");
+_LIT(KStartPosition,			"StartPosition%d");
+_LIT(KFile,						"File%d");
+_LIT(KType,						"Type%d");
+_LIT(KTypeFormat,				"Format");
+_LIT(KTypeSound,				"Sound");
+_LIT(KTypePreDefSound,			"PreDefSound");
+_LIT(KTypeAnimation,			"Animation");
+_LIT(KTypePreDefAnimation,		"PreDefAnimation");
+_LIT(KTypePicture,				"Picture");
+_LIT(KTypeUserPrompt,			"UserPrompt");
+_LIT(KFormatLength,				"FormatLength%d");
+_LIT(KBold,						"Bold%d");
+_LIT(KItalic,					"Italic%d");
+_LIT(KUnderline,				"Underline%d");
+_LIT(KStrikethrough,			"Strikethrough%d");
+_LIT(KAlignment,				"Alignment%d");
+_LIT(KFontSize,					"FontSize%d");
+
+_LIT(KLeftAlign,				"LeftAlign");
+_LIT(KRightAlign,				"RightAlign");
+_LIT(KCenterAlign,				"CenterAlign");
+_LIT(KLangDepend,				"LangDepend");
+
+_LIT(KNormal,					"Normal");
+_LIT(KLarge,					"Large");
+_LIT(KSmall,					"Small");
+_LIT(KVariable,					"Variable");
+_LIT(KReserved,					"Reserved");
+
+_LIT(KEmsPreDef,				"emspredef%d");
+
+_LIT(KEmsAnimTypeFlirty,		"a0");
+_LIT(KEmsAnimTypeGlad,			"a1");
+_LIT(KEmsAnimTypeSceptic,		"a2");
+_LIT(KEmsAnimTypeSad,			"a3");
+_LIT(KEmsAnimTypeWow,			"a4");
+_LIT(KEmsAnimTypeCrying,		"a5");
+_LIT(KEmsAnimTypeWinking,		"a6");
+_LIT(KEmsAnimTypeLaughing,		"a7");
+_LIT(KEmsAnimTypeIndifferent,	"a8");
+_LIT(KEmsAnimTypeKissing,		"a9");
+_LIT(KEmsAnimTypeConfused,		"a10");
+_LIT(KEmsAnimTypeTongueOut,		"a11");
+_LIT(KEmsAnimTypeAngry,			"a12");
+_LIT(KEmsAnimTypeGlasses,		"a13");
+_LIT(KEmsAnimTypeDevil,			"a14");
+
+_LIT(KEmsSoundTypeChimesHigh,	"s0");
+_LIT(KEmsSoundTypeChimesLow,	"s1");
+_LIT(KEmsSoundTypeDing,			"s2");
+_LIT(KEmsSoundTypeTaDa,			"s3");
+_LIT(KEmsSoundTypeNotify,		"s4");
+_LIT(KEmsSoundTypeDrum,			"s5");
+_LIT(KEmsSoundTypeClaps,		"s6");
+_LIT(KEmsSoundTypeFanFar,		"s7");
+_LIT(KEmsSoundTypeChordHigh,	"s8");
+_LIT(KEmsSoundTypeChordLow,		"s9");
+
+/*
+_LIT(KBioIAP,					"IAP");
+_LIT(KBioEmailNotification,		"EmailNotification");
+_LIT(KBioBusinessCard,			"BusinessCard");
+_LIT(KBioWAPAccessPoint,		"WAPAccessPoint");
+_LIT(KBioVCalendar,				"VCalendar");
+_LIT(KBioVCard,					"VCard");
+_LIT(KBioRingingTones,			"RingingTones");
+_LIT(KBioOperatorLogo,			"OperatorLogo");
+_LIT(KBioWPRV,					"WPRV");
+_LIT(KBioCLILogo,				"CLILogo");
+*/
+_LIT(KObjectSize,				"ObjectSize%d");
+_LIT(KBody,						"body");
+/*@}*/
+
+const TInt KSmallObject		= 0;
+const TInt KLargeObject		= 1;
+const TInt KVariableObject	= 2;
+
+const TInt KDefaultStartPos	= 1;
+
+/**
+ * Constructor.
+ * @return - None
+ * 
+*/	
+CTestMessBase::CTestMessBase(TBool aSetDirectory)
+:	CTestStepSmokeTest()
+,	iSession(NULL)
+,	iMessageProcessor(NULL)
+,   iParaFormatLayer(NULL)
+,   iCharFormatLayer(NULL)
+,   iBodyText(NULL)
+,	iBodyAvailable(EFalse)
+,	iSetDirectory(aSetDirectory)
+,	iMessageTimer(NULL)
+,	iSchedular(NULL)
+,	iEntry(NULL)
+,	iOrder(KMsvGroupByType|KMsvGroupByStandardFolders, EMsvSortById, ETrue)
+	{
+	}
+
+CTestMessBase::~CTestMessBase()
+	{
+	delete iEntry;
+	iEntry=NULL;
+	delete iMessageTimer;
+	iMessageTimer=NULL;
+	delete iMessageProcessor;
+	iMessageProcessor=NULL;
+	delete iSession;
+	iSession=NULL;
+	delete iSchedular;
+	iSchedular=NULL;
+	delete iBodyText;
+	iBodyText=NULL;
+	delete iCharFormatLayer;
+	iCharFormatLayer=NULL;
+	delete iParaFormatLayer;
+	iParaFormatLayer=NULL;
+	}
+
+enum TVerdict CTestMessBase::doTestStepPreambleL()
+	{
+	TVerdict	ret=CTestStepSmokeTest::doTestStepPreambleL();
+
+	// Printing to the console and log file
+	const TDesC&	stepName=TestStepName();
+	INFO_PRINTF2(_L("%S"), &stepName);
+
+	iSchedular=new (ELeave) CActiveScheduler();
+	CActiveScheduler::Install(iSchedular);
+	iSession=CMsvSession::OpenSyncL(*this);
+
+	//	Get progress
+	TInt	progress=0;
+	TBool	hasProgress=GetIntFromConfig(ConfigSection(), KProgress, progress);
+	if ( !hasProgress )
+		{
+		hasProgress=GetIntFromConfig(KDefault, KProgress, progress);
+		}
+
+	iMessageProcessor=CTestMessProcessor::NewL(*this, *iSession);
+	if ( hasProgress )
+		{
+		iMessageTimer=CTestMessTimer::NewL(progress*KOneSecond, *iMessageProcessor);
+		}
+
+	if ( iSetDirectory )
+		{
+		TInt	depth=KDefaultDepthCount;
+		TBool	returnValue=GetIntFromConfig(ConfigSection(), KDepth, depth);
+		if ( !returnValue )
+			{
+			depth=KDefaultDepthCount;
+			}
+		INFO_PRINTF2(_L("Depth = %d"), depth);
+
+		//	Searce for the entry
+		TRAPD(error,SetEntryL(KMsvRootIndexEntryId));
+		if( error != KErrNone)
+			{
+			INFO_PRINTF2(_L("Set Entry failed, Error %D"),error);
+			SetTestStepError(error);
+			ret=EFail;
+			}
+		else
+			{
+
+			TBuf<KMaxTestExecuteCommandLength>	tempStore;
+			TBool								found=ETrue;
+			for (TInt entry=0; entry<depth && found;)
+				{
+				TPtrC	subject;
+				tempStore.Format(KFolder(), ++entry);
+				returnValue =GetStringFromConfig(ConfigSection(), tempStore, subject);
+				if ( !returnValue )
+					{
+					INFO_PRINTF1(_L("Null Folder"));
+					}
+				INFO_PRINTF2(_L("Folder = %S"), &subject);
+
+				CMsvEntrySelection*	selection=EntryL().ChildrenL();
+				CleanupStack::PushL(selection);
+				TInt				count=selection->Count();
+		
+				found=EFalse;
+				for (TInt i=count; i>0 && !found; )
+					{
+					TMsvId	childId=selection->At(--i);
+
+					SetEntryL(childId);
+					INFO_PRINTF2(_L("Entry Detail : %S"), &(EntryL().Entry().iDetails));
+					INFO_PRINTF2(_L("Entry Description: %S"), &(EntryL().Entry().iDescription));
+					if ( subject.Compare(EntryL().Entry().iDetails) == 0 ||
+						 subject.Compare(EntryL().Entry().iDescription) == 0 )
+						{
+						found=ETrue;
+						}
+					}
+				CleanupStack::PopAndDestroy(selection);
+				}
+
+			if ( !found )
+				{
+				ERR_PRINTF1(_L("Folder not found"));
+				ret=EFail;
+				}
+			}
+		}
+	if (TestStepResult() == EPass)
+		{
+		//Get body(file path) from ini file and read respective file. Store it into CRichText format.
+		iParaFormatLayer=CParaFormatLayer::NewL();
+		iCharFormatLayer=CCharFormatLayer::NewL(); 
+		iBodyText=CRichText::NewL(iParaFormatLayer, iCharFormatLayer);
+		iBodyAvailable=EFalse;
+	
+		TPtrC	body;
+		if(GetStringFromConfig(ConfigSection(), KBody, body))
+			{
+			INFO_PRINTF2(_L("Body = %S"), &body);
+			iBodyAvailable=ETrue;
+			}
+		else
+			{
+			INFO_PRINTF1(_L("No Body"));
+			}
+
+		if ( iBodyAvailable )
+			{
+			// open the file
+			RFile	file;
+	
+			TInt anError = file.Open(iSession->FileSession(), body, EFileShareAny);
+			if(anError == KErrNone)
+				{
+				TBool		reading=ETrue;
+				TInt		pos=0;
+				TBuf8<1>	charIn;
+				while (reading)
+					{
+					file.Read(charIn, 1);
+					if(charIn.Length())
+						{
+						switch ( charIn[0] )
+							{
+						case '\r':
+							iBodyText->InsertL(pos++, CEditableText::ELineBreak);
+						case '\n':
+							break;
+						default:
+							iBodyText->InsertL(pos++, TChar(charIn[0]));
+							}
+						}
+					else
+						{
+						reading = EFalse;	// stop at the end of the file
+						}
+					}
+				iBodyAvailable=ETrue;
+				file.Close();
+				}
+			else
+			{
+			INFO_PRINTF2(_L("Cannot open file = %S"), &body);
+			iBodyAvailable=EFalse;
+			}
+		}//End of read file.
+	}
+
+	SetTestStepResult(ret);
+	return ret;
+	}
+
+enum TVerdict CTestMessBase::doTestStepPostambleL()
+	{
+	delete iEntry;
+	iEntry=NULL;
+	delete iMessageTimer;
+	iMessageTimer=NULL;
+	delete iMessageProcessor;
+	iMessageProcessor=NULL;
+	delete iSession;
+	iSession=NULL;
+	delete iSchedular;
+	iSchedular=NULL;
+	CActiveScheduler::Install(NULL);
+	return CTestStepSmokeTest::doTestStepPostambleL();
+	}
+
+void CTestMessBase::SetEntryL(TMsvId aId)
+	{
+	delete iEntry;
+	iEntry=NULL;
+	iEntry=iSession->GetEntryL(aId);
+	}
+
+CMsvEntry& CTestMessBase::EntryL()
+	{
+	if ( iEntry == NULL )
+		{
+		User::Leave(KErrGeneral);
+		}
+
+	return *iEntry;
+	}
+
+
+HBufC8* CTestMessBase::CopyToBuf8LC(const TDesC& aDesC)
+//
+// @return - HBufC8*
+// Converts TDesC to HBufC8*.
+//
+	{
+	HBufC8*	itemBuff8 = HBufC8::NewLC(aDesC.Length());
+	itemBuff8->Des().Copy(aDesC);
+
+	return itemBuff8;
+	}
+
+HBufC* CTestMessBase::CopyToBufLC(const TDesC8& aDesC)
+//
+// @return - HBufC8*
+// Converts TDesC to HBufC8*.
+//
+	{
+	HBufC*	itemBuff = HBufC::NewLC(aDesC.Length());
+	itemBuff->Des().Copy(aDesC);
+
+	return itemBuff;
+	}
+
+
+#ifndef __MESSAGING_API_V2__
+void CTestMessBase::SetDefaultServiceL(TUid aMtm, TMsvId aService) const
+	{
+	// --- Now restore the default services from the root store ---
+	CMsvEntry*				rootEntry=iSession->GetEntryL(KMsvRootIndexEntryIdValue);
+	CleanupStack::PushL(rootEntry);
+	CMsvStore*				store = rootEntry->EditStoreL();
+	CleanupStack::PushL(store);
+	CMsvDefaultServices*	services = new(ELeave)CMsvDefaultServices;
+	CleanupStack::PushL(services);
+	services->RestoreL(*store);
+
+	// --- And now re-set the default service for the MTM to the one given ---
+	TMsvDefaultService	defaultService;
+	defaultService.iMtm=aMtm;
+	defaultService.iService=aService;
+	services->ChangeDefaultServiceL(defaultService);
+	services->StoreL(*store);
+	store->CommitL();
+	CleanupStack::PopAndDestroy(3, rootEntry);
+	}
+
+TInt CTestMessBase::DefaultServiceL(TUid aMtm, TMsvId& aService) const
+	{
+	// --- Now restore the default services from the root store ---
+	CMsvEntry*				rootEntry=iSession->GetEntryL(KMsvRootIndexEntryIdValue);
+	CleanupStack::PushL(rootEntry);
+	CMsvStore*				store=rootEntry->ReadStoreL();
+	CleanupStack::PushL(store);
+	CMsvDefaultServices*	services=new(ELeave)CMsvDefaultServices;
+	CleanupStack::PushL(services);
+	services->RestoreL(*store);
+
+	TInt					ret=services->DefaultService(aMtm, aService);
+
+	CleanupStack::PopAndDestroy(3, rootEntry);
+
+	return ret;
+	}
+#endif
+
+void CTestMessBase::PrintTreeL(TMsvId aRoot)
+	{
+	INFO_PRINTF1(_L("PrintTreeL In"));
+	CMsvEntry*			entry=iSession->GetEntryL(aRoot);
+	CleanupStack::PushL(entry);
+	entry->SetSortTypeL(SelectionOrdering());
+	CMsvEntrySelection*	selection=entry->ChildrenL();
+	CleanupStack::PushL(selection);
+
+	PrintEntryL(*entry);
+	for (TInt i=0; i<selection->Count(); )
+		{
+		PrintTreeL(selection->At(i++));
+		}
+
+	CleanupStack::PopAndDestroy(2, entry);
+	INFO_PRINTF1(_L("PrintTreeL Out"));
+	}
+
+void CTestMessBase::PrintEntryL(CMsvEntry& aEntry)
+	{
+	TMsvEntry	entry=aEntry.Entry();
+
+	INFO_PRINTF2(_L("Entry Detail : %S"), &(entry.iDetails));
+	INFO_PRINTF2(_L("  Description: %S"), &(entry.iDescription));
+	INFO_PRINTF2(_L("  Id         : %x"), entry.Id());
+	INFO_PRINTF2(_L("  Parent Id  : %x"), entry.Parent());
+	INFO_PRINTF2(_L("  Service Id : %x"), entry.iServiceId);
+	if ( entry.iRelatedId != 0 )
+		{
+		INFO_PRINTF2(_L("  Related Id : %x"), entry.iRelatedId);
+		}
+	INFO_PRINTF2(_L("  Type       : %x"), entry.iType);
+	INFO_PRINTF2(_L("  Mtm        : %x"), entry.iMtm);
+
+
+	if ( entry.iSize != 0 )
+		{
+		INFO_PRINTF2(_L("  Size       : %x"), entry.iSize);
+		}
+	if ( entry.iError != 0 )
+		{
+		INFO_PRINTF2(_L("  Error      : %d"), entry.iError);
+		}
+	if ( entry.iBioType != 0 )
+		{
+		INFO_PRINTF2(_L("  BioType    : %x"), entry.iBioType);
+		}
+	if ( entry.MtmData1() != 0 )
+		{
+		INFO_PRINTF2(_L("  MtmData1   : %x"), entry.MtmData1());
+		}
+	if ( entry.MtmData2() != 0 )
+		{
+		INFO_PRINTF2(_L("  MtmData2   : %x"), entry.MtmData2());
+		}
+	if ( entry.MtmData3() != 0 )
+		{
+		INFO_PRINTF2(_L("  MtmData3   : %x"), entry.MtmData3());
+		}
+	if ( entry.Attachment() != 0 )
+		{
+		INFO_PRINTF2(_L("  Attachment : %x"), entry.Attachment());
+		}
+	if ( entry.Complete() != 0 )
+		{
+		INFO_PRINTF2(_L("  Complete   : %x"), entry.Complete());
+		}
+	if ( entry.Connected() != 0 )
+		{
+		INFO_PRINTF2(_L("  Connected  : %x"), entry.Connected());
+		}
+	if ( entry.Deleted() != 0 )
+		{
+		INFO_PRINTF2(_L("  Deleted    : %x"), entry.Deleted());
+		}
+	if ( entry.Failed() != 0 )
+		{
+		INFO_PRINTF2(_L("  Failed     : %x"), entry.Failed());
+		}
+	if ( entry.InPreparation() != 0 )
+		{
+		INFO_PRINTF2(_L("  InPrep     : %x"), entry.InPreparation());
+		}
+	if ( entry.MultipleRecipients() != 0 )
+		{
+		INFO_PRINTF2(_L("  MultiRecip : %x"), entry.MultipleRecipients());
+		}
+	if ( entry.OffPeak() != 0 )
+		{
+		INFO_PRINTF2(_L("  OffPeak    : %x"), entry.OffPeak());
+		}
+	if ( entry.Operation() != 0 )
+		{
+		INFO_PRINTF2(_L("  Operation  : %x"), entry.Operation());
+		}
+	if ( entry.Owner() != 0 )
+		{
+		INFO_PRINTF2(_L("  Owner      : %x"), entry.Owner());
+		}
+	if ( entry.PcSyncCount() != 0 )
+		{
+		INFO_PRINTF2(_L("  PcSyncCount: %x"), entry.PcSyncCount());
+		}
+	if ( entry.Priority() != 0 )
+		{
+		INFO_PRINTF2(_L("  Priority   : %x"), entry.Priority());
+		}
+	if ( entry.ReadOnly() != 0 )
+		{
+		INFO_PRINTF2(_L("  ReadOnly   : %x"), entry.ReadOnly());
+		}
+	if ( entry.Scheduled() != 0 )
+		{
+		INFO_PRINTF2(_L("  Scheduled  : %x"), entry.Scheduled());
+		}
+	if ( entry.SendingState() != 0 )
+		{
+		INFO_PRINTF2(_L("  Send State : %x"), entry.SendingState());
+		}
+	if ( entry.StandardFolder() != 0 )
+		{
+		INFO_PRINTF2(_L("  StdFolder  : %x"), entry.StandardFolder());
+		}
+	if ( entry.Unread() != 0 )
+		{
+		INFO_PRINTF2(_L("  Unread     : %x"), entry.Unread());
+		}
+	if ( entry.Visible() != 0 )
+		{
+		INFO_PRINTF2(_L("  Visible    : %x"), entry.Visible());
+		}
+
+#if (!defined CDMA_API_ENABLED)
+	if ( aEntry.HasStoreL() )
+		{
+		PrintStoreL(aEntry);
+		}
+#endif
+	}
+
+void CTestMessBase::PrintStoreL(CMsvEntry& aEntry)
+	{
+	TMsvEntry					entry=aEntry.Entry();
+	CTestMessPrintEntryUtil*	printUtil=new (ELeave) CTestMessPrintEntryUtil(*this);
+	CleanupStack::PushL(printUtil);
+
+	printUtil->ProcessEntryL(entry.Id());
+	CleanupStack::PopAndDestroy(printUtil);
+
+	if ( entry.iMtm==KUidMsgTypeSMTP )
+		{
+		PrintStoreSmtpL(aEntry);
+		}
+	else if ( entry.iMtm == KUidMsgTypePOP3 )
+		{
+		PrintStorePop3L(aEntry);
+		}
+	else if ( entry.iMtm == KUidMsgTypeIMAP4 )
+		{
+		PrintStoreImap4L(aEntry);
+		}
+	else if ( entry.iMtm == KUidMsgTypeSMS )
+		{
+		PrintStoreSmsL(aEntry);
+		}
+	}
+
+void CTestMessBase::PrintStoreSmtpL(CMsvEntry& aEntry)
+	{
+	TMsvEntry	entry=aEntry.Entry();
+	CMsvStore*	store=aEntry.ReadStoreL();
+	CleanupStack::PushL(store);
+
+	TPtrC	ptrTemp;
+	if ( entry.iType == KUidMsvServiceEntry )
+		{
+		CImSmtpSettings*	settings = new(ELeave) CImSmtpSettings();
+		CleanupStack::PushL(settings);
+#ifdef __MESSAGING_API_V2__
+		CEmailAccounts*		accounts = CEmailAccounts::NewLC();
+		TSmtpAccount smtpAccountId;
+		accounts->GetSmtpAccountL(aEntry.EntryId(), smtpAccountId);
+		TRAPD(err, accounts->LoadSmtpSettingsL(smtpAccountId, *settings));
+		CleanupStack::PopAndDestroy(accounts);
+#else
+		TRAPD(err, settings->RestoreL(*store));
+#endif
+		if ( err == KErrNone )
+			{
+			ptrTemp.Set(settings->ServerAddress());
+			INFO_PRINTF2(_L("  ServerAddress                : %S"), &ptrTemp);
+#ifndef __MESSAGING_API_V2__
+			ptrTemp.Set(settings->UserAddress());
+			INFO_PRINTF2(_L("  UserAddress                  : %S"), &ptrTemp);
+			INFO_PRINTF2(_L("  Version                      : %x"), (TUint)settings->Version());
+#endif
+			INFO_PRINTF2(_L("  Port                         : %x"), settings->Port());
+			INFO_PRINTF2(_L("  SecureSockets                : %x"), (TUint)settings->SecureSockets());
+			ptrTemp.Set(settings->EmailAlias());
+			INFO_PRINTF2(_L("  EmailAlias                   : %S"), &ptrTemp);
+			ptrTemp.Set(settings->EmailAddress());
+			INFO_PRINTF2(_L("  EmailAddress                 : %S"), &ptrTemp);
+			ptrTemp.Set(settings->ReplyToAddress());
+			INFO_PRINTF2(_L("  ReplyToAddress               : %S"), &ptrTemp);
+			ptrTemp.Set(settings->ReceiptAddress());
+			INFO_PRINTF2(_L("  ReceiptAddress               : %S"), &ptrTemp);
+			if ( settings->RequestReceipts() != 0 )
+				{
+				INFO_PRINTF2(_L("  RequestReceipts              : %x"), (TUint)settings->RequestReceipts());
+				}
+			if ( settings->SendCopyToSelf() != 0 )
+				{
+				INFO_PRINTF2(_L("  SendCopyToSelf               : %x"), (TUint)settings->SendCopyToSelf());
+				}
+			INFO_PRINTF2(_L("  SendMessageOption            : %x"), (TUint)settings->SendMessageOption());
+			}
+		CleanupStack::PopAndDestroy(settings);
+		}
+
+	CleanupStack::PopAndDestroy(store);
+	}
+
+void CTestMessBase::PrintStorePop3L(CMsvEntry& aEntry)
+	{
+	TMsvEntry	entry=aEntry.Entry();
+	CMsvStore*	store=aEntry.ReadStoreL();
+	CleanupStack::PushL(store);
+
+	TPtrC	ptrTemp;
+	if ( entry.iType == KUidMsvServiceEntry )
+		{
+		CImPop3Settings*	settings = new(ELeave) CImPop3Settings();
+		CleanupStack::PushL(settings);
+
+#ifdef __MESSAGING_API_V2__
+		CEmailAccounts*		accounts = CEmailAccounts::NewLC();
+		TPopAccount popAccountId;
+		accounts->GetPopAccountL(aEntry.EntryId(), popAccountId);
+		TRAPD(err, accounts->LoadPopSettingsL(popAccountId, *settings));
+		CleanupStack::PopAndDestroy(accounts);
+#else
+		TRAPD(err, settings->RestoreL(*store));
+#endif
+		if ( err == KErrNone )
+			{
+			ptrTemp.Set(settings->ServerAddress());
+			INFO_PRINTF2(_L("  ServerAddress                : %S"), &ptrTemp);
+#ifndef __MESSAGING_API_V2__
+			ptrTemp.Set(settings->UserAddress());
+			INFO_PRINTF2(_L("  UserAddress                  : %S"), &ptrTemp);
+			INFO_PRINTF2(_L("  Version                      : %x"), (TUint)settings->Version());
+#endif
+			INFO_PRINTF2(_L("  Port                         : %x"), settings->Port());
+			INFO_PRINTF2(_L("  SecureSockets                : %x"), (TUint)settings->SecureSockets());
+			HBufC*	loginName=CopyToBufLC(settings->LoginName());
+			INFO_PRINTF2(_L("  LoginName                    : %S"), loginName);
+			CleanupStack::PopAndDestroy(loginName);
+			if ( settings->AutoSendOnConnect() != 0 )
+				{
+				INFO_PRINTF2(_L("  AutoSendOnConnect            : %x"), (TUint)settings->AutoSendOnConnect());
+				}
+			if ( settings->Apop() != 0 )
+				{
+				INFO_PRINTF2(_L("  Apop                         : %x"), (TUint)settings->Apop());
+				}
+			if ( settings->DisconnectedUserMode() != 0 )
+				{
+				INFO_PRINTF2(_L("  DisconnectedUserMode         : %x"), (TUint)settings->DisconnectedUserMode());
+				}
+			if ( settings->DeleteEmailsWhenDisconnecting() != 0 )
+				{
+				INFO_PRINTF2(_L("  DeleteEmailsWhenDisconnecting: %x"), (TUint)settings->DeleteEmailsWhenDisconnecting());
+				}
+			if ( settings->AcknowledgeReceipts() != 0 )
+				{
+				INFO_PRINTF2(_L("  AcknowledgeReceipts          : %x"), (TUint)settings->AcknowledgeReceipts());
+				}
+			if ( settings->MaxEmailSize() != 0 )
+				{
+				INFO_PRINTF2(_L("  MaxEmailSize                 : %x"), (TUint)settings->MaxEmailSize());
+				}
+			if ( settings->GetMailOptions() != 0 )
+				{
+				INFO_PRINTF2(_L("  GetMailOptions               : %x"), (TUint)settings->GetMailOptions());
+				}
+			if ( settings->InboxSynchronisationLimit() != 0 )
+				{
+				INFO_PRINTF2(_L("  InboxSynchronisationLimit    : %x"), (TUint)settings->InboxSynchronisationLimit());
+				}
+			}
+		CleanupStack::PopAndDestroy(settings);
+		}
+
+	CleanupStack::PopAndDestroy(store);
+	}
+
+void CTestMessBase::PrintStoreImap4L(CMsvEntry& aEntry)
+	{
+	TMsvEntry	entry=aEntry.Entry();
+	CMsvStore*	store=aEntry.ReadStoreL();
+	CleanupStack::PushL(store);
+
+	TPtrC	ptrTemp;
+	if ( entry.iType == KUidMsvServiceEntry )
+		{
+		CImImap4Settings*	settings = new(ELeave) CImImap4Settings();
+		CleanupStack::PushL(settings);
+
+#ifdef __MESSAGING_API_V2__
+		CEmailAccounts*		accounts = CEmailAccounts::NewLC();
+		TImapAccount imapAccountId;
+		accounts->GetImapAccountL(aEntry.EntryId(), imapAccountId);
+		TRAPD(err, accounts->LoadImapSettingsL(imapAccountId, *settings));
+		CleanupStack::PopAndDestroy(accounts);
+#else
+		TRAPD(err, settings->RestoreL(*store));
+#endif
+		if ( err == KErrNone )
+			{
+			ptrTemp.Set(settings->ServerAddress());
+			INFO_PRINTF2(_L("  ServerAddress                : %S"), &ptrTemp);
+#ifndef __MESSAGING_API_V2__
+			ptrTemp.Set(settings->UserAddress());
+			INFO_PRINTF2(_L("  UserAddress                  : %S"), &ptrTemp);
+			INFO_PRINTF2(_L("  Version                      : %x"), (TUint)settings->Version());
+#endif
+			INFO_PRINTF2(_L("  Port                         : %x"), settings->Port());
+			INFO_PRINTF2(_L("  SecureSockets                : %x"), (TUint)settings->SecureSockets());
+
+			HBufC*	loginName=CopyToBufLC(settings->LoginName());
+			INFO_PRINTF2(_L("  LoginName                    : %S"), loginName);
+			HBufC*	folderPath=CopyToBufLC(settings->FolderPath());
+			INFO_PRINTF2(_L("  FolderPath                   : %S"), folderPath);
+			CleanupStack::PopAndDestroy(2, loginName);
+			if ( settings->PathSeparator() != 0 )
+				{
+				INFO_PRINTF2(_L("  PathSeparator                : %c"), (TText)settings->PathSeparator());
+				}
+			if ( settings->DisconnectedUserMode() != 0 )
+				{
+				INFO_PRINTF2(_L("  DisconnectedUserMode         : %x"), (TUint)settings->DisconnectedUserMode());
+				}
+			if ( settings->Synchronise() != 0 )
+				{
+				INFO_PRINTF2(_L("  Synchronise                  : %x"), (TUint)settings->Synchronise());
+				}
+			if ( settings->Subscribe() != 0 )
+				{
+				INFO_PRINTF2(_L("  Subscribe                    : %x"), (TUint)settings->Subscribe());
+				}
+			if ( settings->AutoSendOnConnect() != 0 )
+				{
+				INFO_PRINTF2(_L("  AutoSendOnConnect            : %x"), (TUint)settings->AutoSendOnConnect());
+				}
+			if ( settings->MaxEmailSize() != 0 )
+				{
+				INFO_PRINTF2(_L("  MaxEmailSize                 : %x"), (TUint)settings->MaxEmailSize());
+				}
+			if ( settings->DeleteEmailsWhenDisconnecting() != 0 )
+				{
+				INFO_PRINTF2(_L("  DeleteEmailsWhenDisconnecting: %x"), (TUint)settings->DeleteEmailsWhenDisconnecting());
+				}
+			if ( settings->AcknowledgeReceipts() != 0 )
+				{
+				INFO_PRINTF2(_L("  AcknowledgeReceipts          : %x"), (TUint)settings->AcknowledgeReceipts());
+				}
+			if ( settings->GetMailOptions() != 0 )
+				{
+				INFO_PRINTF2(_L("  GetMailOptions               : %x"), (TUint)settings->GetMailOptions());
+				}
+			if ( settings->InboxSynchronisationLimit() != 0 )
+				{
+				INFO_PRINTF2(_L("  InboxSynchronisationLimit    : %x"), (TUint)settings->InboxSynchronisationLimit());
+				}
+			if ( settings->MailboxSynchronisationLimit() != 0 )
+				{
+				INFO_PRINTF2(_L("  MailboxSynchronisationLimit  : %x"), (TUint)settings->MailboxSynchronisationLimit());
+				}
+			}
+		CleanupStack::PopAndDestroy(settings);
+		}
+
+	CleanupStack::PopAndDestroy(store);
+	}
+
+void CTestMessBase::PrintStoreSmsL(CMsvEntry& aEntry)
+	{
+	TMsvEntry	entry=aEntry.Entry();
+	CMsvStore*	store=aEntry.ReadStoreL();
+	CleanupStack::PushL(store);
+
+	TPtrC	ptrTemp;
+	if ( entry.iType == KUidMsvServiceEntry )
+		{
+		CSmsSettings*	settings = CSmsSettings::NewL();
+		CleanupStack::PushL(settings);
+
+#ifdef __MESSAGING_API_V2__
+		CSmsAccount*		smsAccount = CSmsAccount::NewLC();
+		TRAPD(err, smsAccount->LoadSettingsL(*settings));
+		CleanupStack::PopAndDestroy(smsAccount);
+#else
+		TRAPD(err, settings->RestoreL(*store));
+#endif
+		if ( err == KErrNone )
+			{
+			TSmsDelivery	delivery(settings->Delivery());
+			INFO_PRINTF2(_L("  Delivery                     : %d"), delivery);
+			CSmsSettings::TSmsReportHandling	reportHandling(settings->StatusReportHandling());
+			INFO_PRINTF2(_L("  StatusReportHandling         : %d"), reportHandling);
+			CSmsSettings::TSmsReportHandling	specialMsgHandling(settings->SpecialMessageHandling());
+			INFO_PRINTF2(_L("  SpecialMessageHandling       : %d"), specialMsgHandling);
+			INFO_PRINTF2(_L("  ReplyQuoted                  : %d"), settings->ReplyQuoted());
+#ifdef __MESSAGING_API_V2__
+			const TInt	numSCAddr = settings->ServiceCenterCount();
+#else
+			const TInt	numSCAddr = settings->NumSCAddresses();
+#endif
+			for( TInt index=0;index<numSCAddr;index++ )
+				{
+#ifdef __MESSAGING_API_V2__
+				CSmsServiceCenter&	scAddr = settings->GetServiceCenter(index);
+#else
+				CSmsNumber&			scAddr = settings->SCAddress(index);
+#endif
+				ptrTemp.Set(scAddr.Name());
+				INFO_PRINTF2(_L("  SC Name                      : %S"), &ptrTemp);
+				ptrTemp.Set(scAddr.Address());
+				INFO_PRINTF2(_L("  SC Address                   : %S"), &ptrTemp);
+				}
+			CSmsSettings::TSmsSettingsCommDbAction	commDbAction(settings->SmsBearerAction());
+			INFO_PRINTF2(_L("  SmsBearerAction              : %d"), commDbAction);
+
+			CSmsSettings::TMobileSmsBearer	smsBearer(settings->SmsBearer());
+			INFO_PRINTF2(_L("  SmsBearer                    : %d"), smsBearer);
+			}
+		CleanupStack::PopAndDestroy(settings);
+		}
+
+	CleanupStack::PopAndDestroy(store);
+	}
+
+void CTestMessBase::IssueTimerRequest()
+	{
+	if (iMessageTimer!= NULL)
+		{
+		iMessageTimer->IssueRequest();
+		}
+	}
+
+void CTestMessBase::HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny*, TAny*)
+/**
+ Handler for the Session Event
+ @param aEvent - TMsvSessionEvent object
+ @param aArg1 - TAny object pointer, used to store the argument for the event
+ @leave - System wide error codes
+*/
+	{
+	TBool	printSelection=EFalse;
+
+	switch (aEvent)
+		{
+	case EMsvEntriesCreated:
+		INFO_PRINTF1(_L("EMsvEntriesCreated"));
+		printSelection=ETrue;
+		break;
+	case EMsvEntriesChanged:
+		INFO_PRINTF1(_L("EMsvEntriesChanged"));
+		printSelection=ETrue;
+		break;
+	case EMsvEntriesDeleted:
+		INFO_PRINTF1(_L("EMsvEntriesDeleted"));
+		break;
+	case EMsvEntriesMoved:
+		INFO_PRINTF1(_L("EMsvEntriesMoved"));
+		printSelection=ETrue;
+		break;
+	case EMsvMtmGroupInstalled:
+		INFO_PRINTF1(_L("EMsvMtmGroupInstalled"));
+		break;
+	case EMsvMtmGroupDeInstalled:
+		INFO_PRINTF1(_L("EMsvMtmGroupDeInstalled"));
+		break;
+	case EMsvGeneralError:
+		INFO_PRINTF1(_L("EMsvGeneralError"));
+		break;
+	case EMsvCloseSession:
+		INFO_PRINTF1(_L("EMsvCloseSession"));
+		break;
+	case EMsvServerReady:
+		INFO_PRINTF1(_L("EMsvServerReady"));
+		break;
+	case EMsvServerFailedToStart:
+		INFO_PRINTF1(_L("EMsvServerFailedToStart"));
+		break;
+	case EMsvCorruptedIndexRebuilt:
+		INFO_PRINTF1(_L("EMsvCorruptedIndexRebuilt"));
+		break;
+	case EMsvServerTerminated:
+		INFO_PRINTF1(_L("EMsvServerTerminated"));
+		break;
+	case EMsvMediaChanged:
+		INFO_PRINTF1(_L("EMsvMediaChanged"));
+		break;
+	case EMsvMediaUnavailable:
+		INFO_PRINTF1(_L("EMsvMediaUnavailable"));
+		break;
+	case EMsvMediaAvailable:
+		INFO_PRINTF1(_L("EMsvMediaAvailable"));
+		break;
+	case EMsvMediaIncorrect:
+		INFO_PRINTF1(_L("EMsvMediaIncorrect"));
+		break;
+	case EMsvCorruptedIndexRebuilding:
+		INFO_PRINTF1(_L("EMsvCorruptedIndexRebuilding"));
+		break;
+	default:
+		INFO_PRINTF2(_L("EMsv Unknown event:%d"), aEvent);
+		break;
+	}
+
+	if ( printSelection )
+		{
+		CMsvEntrySelection*	selection=STATIC_CAST(CMsvEntrySelection*, aArg1);
+		CMsvEntry*			entry=NULL;
+		for ( int i=0; i<selection->Count(); )
+			{
+			entry=iSession->GetEntryL(selection->At(i++));
+			CleanupStack::PushL(entry);
+			PrintEntryL(*entry);
+			CleanupStack::PopAndDestroy(entry);
+			}
+		}
+	}
+
+
+void CTestMessBase::PrepareSmsHeaderFromIniFileL(CSmsHeader& aSmsHeader)
+	{
+	// Starts the Bitmap server
+	FbsStartup();
+	// start the server
+	RFbsSession::Connect();
+
+	// Add the Fromating required for EMS if required
+	TInt	emsElements=0;
+	if ( !GetIntFromConfig(ConfigSection(), KElements, emsElements) )
+		{
+		ERR_PRINTF1(_L("Elements not set"));
+		SetTestStepResult(EFail);
+		}
+
+// Macro usage for CDMA mtm
+#if (defined CDMA_API_ENABLED)
+	TMsvMessageSms&	message=aSmsHeader.SmsMessage();
+#else
+	CSmsMessage&	message=aSmsHeader.Message(); 
+#endif
+
+	TBuf<KMaxTestExecuteCommandLength>	tempStore;
+	for ( TInt element=0; element<emsElements && TestStepResult()==EPass;)
+		{
+		++element;
+		INFO_PRINTF2(_L("==== PROCESSING ELEMENT %d ===="), element);
+		//	Start position
+		tempStore.Format(KStartPosition, element);
+		TInt	startPosition=KDefaultStartPos;
+		if ( GetIntFromConfig(ConfigSection(), tempStore, startPosition) )
+			{
+			INFO_PRINTF2(_L("Start position %d"), startPosition);
+			}
+
+		//	File
+		tempStore.Format(KFile, element);
+		TPtrC	file;
+		TParse	fileName;
+		TBool	hasFile=GetStringFromConfig(ConfigSection(), tempStore, file);
+		if ( hasFile )
+			{
+			INFO_PRINTF2(_L("File %S"), &file);
+			fileName.Set(file,NULL,NULL);
+			}
+
+		tempStore.Format(KType, element);
+		TPtrC	type;
+		if ( GetStringFromConfig(ConfigSection(), tempStore, type) )
+			{
+			if ( type.Compare(KTypeFormat) == 0 )
+				{
+				//	=== Process text formating Information Element ===
+				CEmsFormatIE*	newElement=CEmsFormatIE::NewL();
+				CleanupStack::PushL(newElement);
+				newElement->SetStartPosition(startPosition);
+
+				TInt			intTemp;
+				TBool			boolTemp;
+				TPtrC			alignment;
+				TPtrC			fontSize;
+
+				// Set the Format length and other information
+				tempStore.Format(KFormatLength, element);
+				if ( GetIntFromConfig(ConfigSection(), tempStore, intTemp) )
+					{
+					INFO_PRINTF2(_L("Format Length %d"), intTemp);
+					newElement->SetFormatLength(intTemp);
+					}
+				tempStore.Format(KBold, element);
+				if ( GetBoolFromConfig(ConfigSection(), tempStore, boolTemp) )
+					{
+					INFO_PRINTF2(_L("Bold %d"), boolTemp);
+					newElement->SetBold(boolTemp);
+					}
+				tempStore.Format(KItalic, element);
+				if ( GetBoolFromConfig(ConfigSection(), tempStore, boolTemp) )
+					{
+					INFO_PRINTF2(_L("Italic %d"), boolTemp);
+				    newElement->SetItalic(boolTemp);
+					}
+				tempStore.Format(KUnderline, element);
+				if ( GetBoolFromConfig(ConfigSection(), tempStore, boolTemp) )
+					{
+					INFO_PRINTF2(_L("Underline %d"), boolTemp);
+					newElement->SetUnderline(boolTemp);
+					}
+				tempStore.Format(KStrikethrough, element);
+				if ( GetBoolFromConfig(ConfigSection(), tempStore, boolTemp) )
+					{
+					INFO_PRINTF2(_L("Strikethrough %d"), boolTemp);
+					newElement->SetStrikethrough(boolTemp);
+					}
+				tempStore.Format(KAlignment,element);
+				if(GetStringFromConfig(ConfigSection(),tempStore,alignment))
+					{
+					SetAlignmentFormat(*newElement, alignment);
+					}
+				
+				tempStore.Format(KFontSize,element);
+				if(GetStringFromConfig(ConfigSection(),tempStore,fontSize))
+					{
+					//
+					SetFontSizeFormat(*newElement, fontSize);
+					}
+			    message.AddEMSInformationElementL(*newElement); 
+				CleanupStack::PopAndDestroy(newElement);
+				}
+			else if ( type.Compare(KTypeSound) == 0 )
+				{
+				//	=== Process sound Information Element ===
+				if ( hasFile )
+					{
+					HBufC8*			buffFile=CopyToBuf8LC(fileName.FullName());
+					CEmsSoundIE*	newElement=CEmsSoundIE::NewL(buffFile->Des());
+					CleanupStack::PushL(newElement);
+					newElement->SetStartPosition(startPosition); 
+				    message.AddEMSInformationElementL(*newElement); 
+					CleanupStack::PopAndDestroy(2, buffFile);
+					}
+				else
+					{
+					ERR_PRINTF1(_L("No Sound file name"));
+					SetTestStepResult(EFail);
+					}
+				}
+			else if ( type.Compare(KTypePreDefSound) == 0 )
+				{
+				//	=== Process predefined sound Information Element ===
+				TPtrC	preDefSound;
+				tempStore.Format(KEmsPreDef, element);
+				if ( !GetStringFromConfig(ConfigSection(),tempStore, preDefSound))
+					{
+					ERR_PRINTF1(_L("Predefined sound not present"));
+					SetTestStepResult(EFail);
+					}
+				else
+					{
+					INFO_PRINTF2(_L("Predefined sound %S"), &preDefSound);
+					CEmsPreDefSoundIE*	newElement=NewPreDefSoundL(preDefSound);
+
+					if ( newElement != NULL )
+						{
+						//Assign the predef animation element to newElement
+						CleanupStack::PushL(newElement);
+						newElement->SetStartPosition(startPosition);
+					    message.AddEMSInformationElementL(*newElement); 
+						CleanupStack::PopAndDestroy(newElement);
+						}
+					else
+						{
+						ERR_PRINTF1(_L("Unable to create predefined sound"));
+						SetTestStepResult(EFail);
+						}
+					}
+				}
+			else if ( type.Compare(KTypeAnimation) == 0 )
+				{
+				//	=== Process animation Information Element ===
+				if ( hasFile )
+					{
+					TPtrC	objectSize;
+
+					tempStore.Format(KObjectSize, element);
+					if ( !GetStringFromConfig(ConfigSection(),tempStore,objectSize) )
+						{
+						ERR_PRINTF1(_L("No size provided"));
+						SetTestStepResult(EFail);
+						}
+					else
+						{
+						CFbsBitmap*	bmp=NewBitmapL(fileName, objectSize);
+						if ( bmp == NULL )
+							{
+							ERR_PRINTF1(_L("Failed to Load Animation File. Error %d"));
+							SetTestStepResult(EFail);
+							}
+						else
+							{
+							CleanupStack::PushL(bmp);
+							CEmsAnimationIE*	newElement=CEmsAnimationIE::NewL(*bmp);
+							CleanupStack::PushL(newElement);
+							newElement->SetStartPosition(startPosition);
+						    message.AddEMSInformationElementL(*newElement); 
+							CleanupStack::PopAndDestroy(2, bmp);
+							}
+						}
+					}
+				else
+					{
+					ERR_PRINTF1(_L("No Animation file name"));
+					SetTestStepResult(EFail);
+					}
+				}
+			else if ( type.Compare(KTypePreDefAnimation) == 0 )
+				{
+				//	=== Process predefined animation Information Element ===
+				TPtrC	preDefAnim;
+				tempStore.Format(KEmsPreDef, element);
+				if ( !GetStringFromConfig(ConfigSection(),tempStore, preDefAnim) )
+					{
+					ERR_PRINTF1(_L("Predefined animations not present"));
+					SetTestStepResult(EFail);
+					}
+				else
+					{
+					INFO_PRINTF2(_L("Predefined animation %S"), &preDefAnim);
+					CEmsPreDefAnimationIE*	newElement=NewPreDefAnimationL(preDefAnim);
+
+					if ( newElement != NULL )
+						{
+						//Assign the predef animation element to newElement
+						CleanupStack::PushL(newElement);
+						newElement->SetStartPosition(startPosition);
+					    message.AddEMSInformationElementL(*newElement); 
+						CleanupStack::PopAndDestroy(newElement);
+						}
+					else
+						{
+						ERR_PRINTF1(_L("Unable to create predefined animation"));
+						SetTestStepResult(EFail);
+						}
+					}
+				}
+			else if ( type.Compare(KTypePicture) == 0 )
+				{
+				//	=== Process picture Information Element ===
+				if ( hasFile )
+					{
+					TPtrC	objectSize;
+
+					tempStore.Format(KObjectSize, element);
+					if ( !GetStringFromConfig(ConfigSection(),tempStore,objectSize) )
+						{
+						ERR_PRINTF1(_L("No size provided"));
+						SetTestStepResult(EFail);
+						}
+					else
+						{
+						CFbsBitmap*	bmp=NewBitmapL(fileName, objectSize);
+						if ( bmp == NULL )
+							{
+							ERR_PRINTF1(_L("Failed to Load Animation File. Error %d"));
+							SetTestStepResult(EFail);
+							}
+						else
+							{
+							CleanupStack::PushL(bmp);
+							CEmsPictureIE*	newElement=CEmsPictureIE::NewL(*bmp);
+							CleanupStack::PushL(newElement);
+							newElement->SetStartPosition(startPosition);
+						    message.AddEMSInformationElementL(*newElement); 
+							CleanupStack::PopAndDestroy(2, bmp);
+							}
+						}
+					}
+				else
+					{
+					ERR_PRINTF1(_L("No Picture file name"));
+					SetTestStepResult(EFail);
+					}
+				}
+			else if ( type.Compare(KTypeUserPrompt) == 0 )
+				{
+				//	=== Process user prompt Information Element ===
+				CEmsUserPrompt*	newElement=CEmsUserPrompt::NewL(2);
+				CleanupStack::PushL(newElement);
+				newElement->SetStartPosition(startPosition);
+			    message.AddEMSInformationElementL(*newElement); 
+				CleanupStack::PopAndDestroy(newElement);
+				}
+			else
+				{
+				ERR_PRINTF2(_L("Unknown element type %S"), &type);
+				SetTestStepResult(EFail);
+				}
+			}
+		else
+			{
+			ERR_PRINTF1(_L("No type given"));
+			SetTestStepResult(EFail);
+			}
+		}
+
+	RFbsSession::Disconnect(); 
+	}
+
+/**
+ This function reads the schedule time from ini file
+ @return - returns the schedule time read from the ini file
+*/
+TTimeIntervalMinutes CTestMessBase::ReadScheduleTime()
+	{
+	// Read  the schedule time from ini file. Add this schedule time to current time.
+	// This time will be set as the scheduled time for sending the SMS message from task scheduler
+	// By default schedule time will be 1 min
+	TInt	scheduled=0;
+	GetIntFromConfig(ConfigSection(), KScheduled, scheduled);
+	INFO_PRINTF2(_L("Scheduled Time in minutes is %d"), scheduled);
+	return TTimeIntervalMinutes(scheduled);
+	}
+
+void CTestMessBase::SetAlignmentFormat(CEmsFormatIE& aEmsFormatIE, const TDesC& aAlignment)
+	{
+	//Sets the alignment to the text
+	INFO_PRINTF2(_L("Alignment %S"), &aAlignment);
+	if( aAlignment.Compare(KLeftAlign)== 0 )
+		{
+		aEmsFormatIE.SetAlignment(CEmsFormatIE::ELeft);
+		}
+	else if( aAlignment.Compare(KRightAlign)== 0 )
+		{
+		aEmsFormatIE.SetAlignment(CEmsFormatIE::ERight);
+		}
+	else if( aAlignment.Compare(KCenterAlign)== 0 )
+		{
+		aEmsFormatIE.SetAlignment(CEmsFormatIE::ECenter);
+		}
+	else if( aAlignment.Compare(KLangDepend)== 0 )
+		{
+		aEmsFormatIE.SetAlignment(CEmsFormatIE::ELangDepend);
+		}
+	else
+		{
+		ERR_PRINTF1(_L("Illegal alignment value"));
+		SetTestStepResult(EFail);
+		}
+	}
+
+void CTestMessBase::SetFontSizeFormat(CEmsFormatIE& aEmsFormatIE, const TDesC& aFontSize)
+	{
+	//Sets the specified font to the text 
+	INFO_PRINTF2(_L("FontSize %S"), &aFontSize);
+	if( aFontSize.Compare(KNormal)== 0 )
+		{
+		aEmsFormatIE.SetFontSize(CEmsFormatIE::ENormal);
+		}
+	else if( aFontSize.Compare(KLarge)== 0 )
+		{
+		aEmsFormatIE.SetFontSize(CEmsFormatIE::ELarge);
+		}
+	else if( aFontSize.Compare(KSmall)== 0 )
+		{
+		aEmsFormatIE.SetFontSize(CEmsFormatIE::ESmall);
+		}
+	else if( aFontSize.Compare(KReserved)== 0 )
+		{
+		aEmsFormatIE.SetFontSize(CEmsFormatIE::EReserved);
+		}
+	else
+		{
+		ERR_PRINTF1(_L("Illegal fonst size value"));
+		SetTestStepResult(EFail);
+		}
+	}
+
+CEmsPreDefAnimationIE* CTestMessBase::NewPreDefAnimationL(const TDesC& aPreDefType) 
+//
+// Attaches the required predef animation. 
+// Arguments - aString - holds the TAnim type to be attached 
+// Return Value - Returns a Pointer of CEmsPreDefAnimationIE 
+//
+	{
+	//Initialize emsPreDef to NULL
+	CEmsPreDefAnimationIE::TAnimType	animType=CEmsPreDefAnimationIE::EFlirty;
+	TBool								validType=ETrue;
+
+	//Set a value for emsPreDef 
+	if ( aPreDefType.Compare(KEmsAnimTypeFlirty) == 0 )
+		{
+		animType = CEmsPreDefAnimationIE::EFlirty;
+		}
+	else if ( aPreDefType.Compare(KEmsAnimTypeGlad) == 0 )
+		{
+		animType = CEmsPreDefAnimationIE::EGlad;
+		}
+	else if ( aPreDefType.Compare(KEmsAnimTypeSceptic) == 0 )
+		{
+		animType = CEmsPreDefAnimationIE::ESceptic;
+		}
+	else if ( aPreDefType.Compare(KEmsAnimTypeSad) == 0 )
+		{
+		animType = CEmsPreDefAnimationIE::ESad;
+		}
+	else if ( aPreDefType.Compare(KEmsAnimTypeWow) == 0 )
+		{
+		animType = CEmsPreDefAnimationIE::EWow;
+		}
+	else if ( aPreDefType.Compare(KEmsAnimTypeCrying) == 0 )
+		{
+		animType = CEmsPreDefAnimationIE::ECrying;
+		}
+	else if ( aPreDefType.Compare(KEmsAnimTypeWinking) == 0 )
+		{
+		animType = CEmsPreDefAnimationIE::EWinking;
+		}
+	else if ( aPreDefType.Compare(KEmsAnimTypeLaughing) == 0 )
+		{
+		animType = CEmsPreDefAnimationIE::ELaughing;
+		}
+	else if ( aPreDefType.Compare(KEmsAnimTypeIndifferent) == 0 )
+		{
+		animType = CEmsPreDefAnimationIE::EIndifferent;
+		}
+	else if ( aPreDefType.Compare(KEmsAnimTypeKissing) == 0 )
+		{
+		animType = CEmsPreDefAnimationIE::EKissing;
+		}
+	else if ( aPreDefType.Compare(KEmsAnimTypeConfused) == 0 )
+		{
+		animType = CEmsPreDefAnimationIE::EConfused;
+		}
+	else if ( aPreDefType.Compare(KEmsAnimTypeTongueOut) == 0 )
+		{
+		animType = CEmsPreDefAnimationIE::ETongueOut;
+		}
+	else if ( aPreDefType.Compare(KEmsAnimTypeAngry) == 0 )
+		{
+		animType = CEmsPreDefAnimationIE::EAngry;
+		}
+	else if ( aPreDefType.Compare(KEmsAnimTypeGlasses) == 0 )
+		{
+		animType = CEmsPreDefAnimationIE::EGlasses;
+		}
+	else if ( aPreDefType.Compare(KEmsAnimTypeDevil) == 0 )
+		{
+		animType = CEmsPreDefAnimationIE::EDevil;
+		}
+	else
+		{
+		validType=EFalse;
+		}
+
+	CEmsPreDefAnimationIE*	emsPreDef=NULL;
+	if ( validType )
+		{
+		emsPreDef=CEmsPreDefAnimationIE::NewL(animType);
+		}
+
+	return emsPreDef;
+	}
+
+CEmsPreDefSoundIE* CTestMessBase::NewPreDefSoundL(const TDesC& aPreDefType) 
+//
+// Attaches the required predef animation. 
+// Arguments - aString - holds the TAnim type to be attached 
+// Return Value - Returns a Pointer of CEmsPreDefAnimationIE 
+//
+	{
+	//Initialize emsPreDef to NULL
+	CEmsPreDefSoundIE::TPredefinedSound	soundType=CEmsPreDefSoundIE::EChimesHigh;
+	TBool								validType=ETrue;
+
+	//Set a value for emsPreDef 
+	if ( aPreDefType.Compare(KEmsSoundTypeChimesHigh) == 0 )
+		{
+		soundType = CEmsPreDefSoundIE::EChimesHigh;
+		}
+	else if ( aPreDefType.Compare(KEmsSoundTypeChimesLow) == 0 )
+		{
+		soundType = CEmsPreDefSoundIE::EChimesLow;
+		}
+	else if ( aPreDefType.Compare(KEmsSoundTypeDing) == 0 )
+		{
+		soundType = CEmsPreDefSoundIE::EDing;
+		}
+	else if ( aPreDefType.Compare(KEmsSoundTypeTaDa) == 0 )
+		{
+		soundType = CEmsPreDefSoundIE::ETaDa;
+		}
+	else if ( aPreDefType.Compare(KEmsSoundTypeNotify) == 0 )
+		{
+		soundType = CEmsPreDefSoundIE::ENotify;
+		}
+	else if ( aPreDefType.Compare(KEmsSoundTypeDrum) == 0 )
+		{
+		soundType = CEmsPreDefSoundIE::EDrum;
+		}
+	else if ( aPreDefType.Compare(KEmsSoundTypeClaps) == 0 )
+		{
+		soundType = CEmsPreDefSoundIE::EClaps;
+		}
+	else if ( aPreDefType.Compare(KEmsSoundTypeFanFar) == 0 )
+		{
+		soundType = CEmsPreDefSoundIE::EFanFar;
+		}
+	else if ( aPreDefType.Compare(KEmsSoundTypeChordHigh) == 0 )
+		{
+		soundType = CEmsPreDefSoundIE::EChordHigh;
+		}
+	else if ( aPreDefType.Compare(KEmsSoundTypeChordLow) == 0 )
+		{
+		soundType = CEmsPreDefSoundIE::EChordLow;
+		}
+	else
+		{
+		validType=EFalse;
+		}
+
+	CEmsPreDefSoundIE*	emsPreDef=NULL;
+	if ( validType )
+		{
+		emsPreDef=CEmsPreDefSoundIE::NewL(soundType);
+		}
+
+	return emsPreDef;
+	}
+
+CFbsBitmap* CTestMessBase::NewBitmapL(const TParse& aFileName, const TDesC& aObjectSize)
+	{
+	TInt	bitmapType=KSmallObject;
+	TBool	validType=ETrue;
+	if( aObjectSize.Compare(KSmall) == 0 )
+		{
+		bitmapType=KSmallObject;
+		}
+	else if ( aObjectSize.Compare(KLarge) == 0 )
+		{
+		bitmapType=KLargeObject;
+		}
+	else if ( aObjectSize.Compare(KVariable) == 0 )
+		{
+		bitmapType=KVariableObject;
+		}
+	else
+		{
+		ERR_PRINTF2(_L("Invalid bitmap type %S"), &aObjectSize);
+		validType=EFalse;
+		}
+
+	CFbsBitmap*	bmp = NULL;
+	if ( validType )
+		{
+		bmp = new (ELeave) CFbsBitmap();
+
+		TInt	error = bmp->Load(aFileName.FullName(), bitmapType, EFalse);
+		INFO_PRINTF2(_L("Bimap load %d"), error);
+		if ( error != KErrNone)
+			{
+			delete bmp;
+			bmp=NULL;
+			}
+		}
+
+	return bmp;
+	}
+