messagingappbase/smsmtm/test/src/T_smcmsimtsytest.cpp
changeset 25 84d9eb65b26f
parent 23 238255e8b033
child 27 e4592d119491
child 37 518b245aa84c
child 79 2981cb3aa489
--- a/messagingappbase/smsmtm/test/src/T_smcmsimtsytest.cpp	Fri Apr 16 14:56:15 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,844 +0,0 @@
-// Copyright (c) 1999-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:
-//
-
-#include "T_smcmsimtsytest.h"
-#include <e32test.h>
-#include <e32uid.h>
-#include <e32std.h>
-#include <smuthdr.h>
-#include <txtrich.h> 
-#include <smscmds.h>
-#include <smsclnt.h>
-#include <smsuaddr.h>
-
-// Autotest library header file
-#include <autotest.h>
-
-#include <testconfigfileparser.h>
-#include <simtsy.h>
-#include <csmsaccount.h>
-
-#include <e32property.h>
-
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS  
-#include <tmsvsmsentry.h>
-#endif
-
-// Global pointer for use by the autogTest.h macro's
-CAutoTest* gAutoTest;
-
-
-RTest gTest(_L("T_SmcmSimTsyTest Testrig"));
-TBool HasCreatedSmsService = EFalse;
-CTrapCleanup* theCleanup;
-
-#define LOCAL_CHECKPOINT_CODE(a,b) a.TestCheckPointCodeL((b), (__FILE__), (__LINE__))
-#define LOCAL_CHECKPOINT(a,b) a.TestCheckPointL((b), (__FILE__), (__LINE__))
-#define LOCAL_CHECKPOINT_COMPARE(a,b,c,d) a.TestCheckPointCompareL((b),(c),(d),(__FILE__),(__LINE__))
-
-//SMS Scripting
-_LIT(KSmsScript,"smcmsimtsytest_config.txt");
-_LIT(KSmsScriptFull,"\\msgtest\\sms\\smcmsimtsytest_config.txt");
-
-void DeleteSmsStores(RFs& aFs)
-	{
-	_LIT(KReassemblyStoreName,"C:\\System\\Data\\smsreast.dat");
-	_LIT(KSegmentationStoreName,"C:\\System\\Data\\smssegst.dat");
-	aFs.Delete(KReassemblyStoreName);
-	aFs.Delete(KSegmentationStoreName);
-	}
-
-
-CMessageSendStates::CMessageSendStates(TMsvId aId)
-	{
-	iId = aId;
-	}
-
-CMessageSendStates* CMessageSendStates::NewLC(TMsvId aId)
-	{
-	CMessageSendStates* self=new (ELeave) CMessageSendStates(aId);
-	CleanupStack::PushL(self);
-	//self->ConstructL();
-	return self;
-	}
-
-CMessageSendStates* CMessageSendStates::NewL(TMsvId aId)
-	{
-	CMessageSendStates* self = NewLC(aId);
-	CleanupStack::Pop(self);
-	return self;
-	}
-
-void CMessageSendStates::ConstructL()
-	{
-	}
-
-CMessageSendStates::~CMessageSendStates()
-	{
-	iStates.Close();
-	}
-
-RMessageSendStatesArray::RMessageSendStatesArray()
-	{
-	}
-		
-TInt RMessageSendStatesArray::Find(TMsvId aId) const
-	{
-	const RMessageSendStatesArray& sendArray = *this;
-	TInt count = sendArray.Count();
-
-	for (TInt i=0; i<count; ++i)
-		{
-		if (sendArray[i]->iId == aId)
-			return i;
-		}
-
-	return -1;
-	}
-
-void RMessageSendStatesArray::CopyInSelectionL(const CMsvEntrySelection& aSelection)
-	{
-	ResetAndDestroy();
-	TInt count = aSelection.Count();
-
-	while (count--)
-		{
-		const TMsvId id = aSelection[count];
-		CMessageSendStates* msg = CMessageSendStates::NewLC(id);
-		User::LeaveIfError(Append(msg));
-		CleanupStack::Pop(msg);
-		}
-	}
-
-CSmcmSendTest* NewSmcmTestLCC(TInt aTestNumber, TInt aExpectedError=KErrNone)
-/**
-	Constructs and returns CSmsScTest object. 
-	Notifies the system agent that the phone is on.
-
-	@return		CSmsScTest*		A pointer to SmsSc test.  
- */
-	{
-	CSmsTestUtils* testUtils = CSmsTestUtils::NewL(gTest, HasCreatedSmsService?ETuCreateTestDirectories|ETuGoClientSide:ETuMinimalClientSide);
-	if (HasCreatedSmsService)
-		testUtils->iServiceSettings = CSmsSettings::NewL();
-	HasCreatedSmsService = ETrue;
-	CleanupStack::PushL(testUtils);
-
-	// System agent fix... this ensures that the correct test script is used by SIM.TSY
-	User::LeaveIfError(RProperty::Set(KUidSystemCategory, KUidSASimTsyTestNumberValue, aTestNumber));
-//	testUtils->SetSimTsyTestNumberL(aTestNumber);
-	testUtils->NotifySaPhoneOffL();
-	User::After(5000000); //wait for SmsProt to go to sleep
-	DeleteSmsStores(testUtils->FileSession());
-
-	TInt nextTest = 0;
-
-	testUtils->NotifySaPhoneOnL();
-	testUtils->WaitForInitializeL();
-
-	return CSmcmSendTest::NewLC(*gAutoTest, *testUtils, KSmsScript, aExpectedError, nextTest);
-	}
-
-TBool CSmcmSendTest::CheckWatchersStartedL()
-	{
-	TBool found = EFalse;
-	TFullName fullName;
-	TFindThread finder(_L("*"));
-	//
-	while(finder.Next(fullName) == KErrNone && !found)
-		{
-		// Open the thread
-		RThread thread;
-		User::LeaveIfError(thread.Open(fullName));
-
-		// Open the process which owns this thread
-		RProcess process;
-		const TInt error = thread.Process(process);
-		if (error == KErrNone)
-			{
-			const TFileName fileName(process.FileName());
-			if (fileName.Compare(_L("Z:\\System\\Libs\\watcher.exe")) == 0)
-				found = ETrue;
-			process.Close();
-			}
-		thread.Close();
-		}
-
-	return found;
-	}
-
-void CSmcmSendTest::TestReceiveClass2L(TInt aTestNumber, TRequestStatus& aStatus)
-	{
-	iState = EStateTestReceiveClass2;
-	iMessagesReceived = 0;
-	SetMessagesToReceiveL(aTestNumber);
-
-	//Set the class 2 folder
-	iSmsSettings->SetClass2Folder(KMsvGlobalOutBoxIndexEntryId);
-	iSmsTest.SetEntryL(iSmsTest.iSmsServiceId);
-	CSmsAccount* account = CSmsAccount::NewLC();
-	account->SaveSettingsL(*iSmsSettings);
-	CleanupStack::PopAndDestroy(account);
-
-	iSmsTest.Printf(_L("Waiting to recv %d msgs [test=%d inbox=%d class2=%d]\n"),
-		iMessagesToReceive, aTestNumber, KMsvGlobalInBoxIndexEntryId, iSmsSettings->Class2Folder()),
-
-	delete iWatcherStarter;
-	iWatcherStarter = NULL;
-
-	TBool watcherRunning = EFalse;
-	TRAPD(ignor, watcherRunning = CheckWatchersStartedL());
-	if (watcherRunning)
-		{
-		iSmsTest.Printf(_L("Watchers running.\n"));
-		}
-	else
-		{
-		iSmsTest.Printf(_L("Watchers not running. Starting watchers....\n"));
-		iWatcherStarter = CTestUtilsWatcherStarter::NewL(CActive::EPriorityHigh);
-		}
-
-	iStatus = KRequestPending;
-	Queue(aStatus);
-	SetActive();
-	}
-
-void CSmcmSendTest::TestSendingL(TRequestStatus& aStatus)
-	{
-	iState = EStateSending;
-
-	TTime now;
-	now.HomeTime();
-	now += (TTimeIntervalSeconds) 5;
-
-	iSmsTest.DeleteSmsMessagesL(KMsvGlobalOutBoxIndexEntryId);
-	iSelection->Reset();
-
-	// Create the test messages specified in the script file and place in the Outbox.
-	iSmsTest.Printf(_L("Creating msgs in outbox from script %S\n"), &iScriptFile);
-	TBool read = EFalse;
-	TRAPD(err, read = iSmsTest.ReadScriptL(iScriptFile, KMsvGlobalOutBoxIndexEntryId, *iSelection, now));
-
-	//iSmsTest.Test()(!err && read);
-	LOCAL_CHECKPOINT(iAutoTest, !err && read);
-
-	iSmsTest.Printf(_L("Sending %d messages...\n"), iSelection->Count());
-	iSmsTest.DisplayMessagesL(*iSelection);
-	iSmsTest.SetEntryL(KMsvGlobalOutBoxIndexEntryId);
-
-	delete iOperation;
-	iOperation = NULL;
-
-	// Send the message, by copying it to the SMS Service.
-	iCurrentMessages.ResetAndDestroy();
-	iCurrentMessages.CopyInSelectionL(*iSelection);
-
-	iOperation = MsvEntry().CopyL(*iSelection, iSmsTest.iSmsServiceId, iStatus);
-	
-	SetActive();
-	Queue(aStatus);
-	}
-
-void CSmcmSendTest::TestSchedulingL(TRequestStatus& aStatus)
-	{
-	iState = EStateScheduling;
-
-	iSmsTest.DeleteSmsMessagesL(KMsvGlobalOutBoxIndexEntryId);
-	iSelection->Reset();
-
-	TTimeIntervalSeconds fromNow = 5;
-	TTime now;
-	now.HomeTime();
-	now += fromNow;
-
-	iSmsTest.Printf(_L("Creating msgs in outbox from script %S\n"), &iScriptFile);
-	TBool read = EFalse;
-	TRAPD(err, read = iSmsTest.ReadScriptL(iScriptFile, KMsvGlobalOutBoxIndexEntryId, *iSelection, now));
-
-	//iSmsTest.Test()(!err && read);
-	LOCAL_CHECKPOINT(iAutoTest, !err && read);
-
-	iSmsTest.Printf(_L("Scheduled %d messages...\n"), iSelection->Count());
-	iSmsTest.DisplayMessagesL(*iSelection);
-	MsvEntry().SetEntryL(KMsvGlobalOutBoxIndexEntryId);
-
-	delete iOperation;
-	iOperation = NULL;
-
-	iCurrentMessages.ResetAndDestroy();
-	iCurrentMessages.CopyInSelectionL(*iSelection);
-	
-	iOperation = Session().TransferCommandL(*iSelection, ESmsMtmCommandScheduleCopy, TPtrC8(), iStatus);
-
-	SetActive();
-	Queue(aStatus);
-	}
-
-void Test1L()
-	{
-	CSmcmSendTest* smcmTest = NewSmcmTestLCC(0, KErrServerTerminated);
-
-	CMsvOperationWait* waiter = CMsvOperationWait::NewLC();
-	smcmTest->TestSendingL(waiter->iStatus);
-	waiter->Start();
-	CActiveScheduler::Start();
-	GLOBAL_CHECKPOINT_COMPARE(waiter->iStatus.Int(), KErrNone, _L("TestSendingL completed with error"));
-
-	//CleanupStack::PopAndDestroy(waiter);
-	//CleanupStack::PopAndDestroy(smcmTest);
-	//CleanupStack::PopAndDestroy();
-	CleanupStack::PopAndDestroy(3);
-	}
-
-void Test2L()
-	{
-	CSmcmSendTest* smcmTest = NewSmcmTestLCC(0, KErrServerTerminated);
-
-	CMsvOperationWait* waiter = CMsvOperationWait::NewLC();
-	smcmTest->TestSchedulingL(waiter->iStatus);
-	waiter->Start();
-	CActiveScheduler::Start();
-	GLOBAL_CHECKPOINT_COMPARE(waiter->iStatus.Int(), KErrNone, _L("TestSchedulingL completed with error"));
-
-	CleanupStack::PopAndDestroy(waiter);
-	CleanupStack::PopAndDestroy(smcmTest);
-	CleanupStack::PopAndDestroy();
-	}
-
-void Test3L()
-	{
-	CSmcmSendTest* smcmTest = NewSmcmTestLCC(2);
-
-	CMsvOperationWait* waiter = CMsvOperationWait::NewLC();
-	smcmTest->TestReceiveClass2L(2, waiter->iStatus);
-	waiter->Start();
-	CActiveScheduler::Start();
-	GLOBAL_CHECKPOINT_COMPARE(waiter->iStatus.Int(), KErrNone, _L("TestReceiveClass2L completed with error"));
-
-	CleanupStack::PopAndDestroy(waiter);
-	CleanupStack::PopAndDestroy(smcmTest);
-	CleanupStack::PopAndDestroy();
-	}
-
-
-void Test4L()
-	{
-	CMsvOperationWait* waiter = CMsvOperationWait::NewLC();
-	waiter->Start();
-
-	CTestUtilsWatcherStarter* watcherStarter = CTestUtilsWatcherStarter::NewL(waiter->iStatus, 20000000);
-	CleanupStack::PushL(watcherStarter);
-
-	CActiveScheduler::Start();
-	GLOBAL_CHECKPOINT_COMPARE(waiter->iStatus.Int(), KErrNone, _L("TestReceiveClass2L completed with error"));
-
-	CleanupStack::PopAndDestroy(watcherStarter);
-	CleanupStack::PopAndDestroy(waiter);
-	}
-
-
-CSmcmSendTest::~CSmcmSendTest()
-	{
-	Cancel();
-
-	if (iSmsTest.iMsvSession)
-		{
-		iSmsTest.iMsvSession->RemoveObserver(*this);
-		}
-
-	if (iOperation)
-		{
-		iOperation->Cancel();
-		delete iOperation;
-		iOperation = NULL;
-		}
-
-	delete iSelection;
-	iSelection = NULL;
-
-	if (iTimer)
-		{
-		iTimer->Cancel();
-		delete iTimer;
-		iTimer = NULL;
-		}
-
-	iCurrentMessages.ResetAndDestroy();
-	delete iSmsSettings;
-	delete iWatcherStarter;
-	}
-
-CSmcmSendTest::CSmcmSendTest(CAutoTest& aAutoTest, CSmsTestUtils& aSmsTest, const TDesC& aScriptFile, TInt aExpectedError, TInt aPriority)
-: CActive(aPriority), iState(EStateWaiting), iAutoTest(aAutoTest), iScriptFile(aScriptFile), iSmsTest(aSmsTest), iExpectedError(aExpectedError)
-	{
-	CActiveScheduler::Add(this);
-	}
-
-CSmcmSendTest* CSmcmSendTest::NewLC(CAutoTest& aAutoTest, CSmsTestUtils& aSmsTest, const TDesC& aScriptFile, TInt aExpectedError, TInt aPriority)
-	{
-	CSmcmSendTest* self = new (ELeave) CSmcmSendTest(aAutoTest, aSmsTest, aScriptFile, aExpectedError, aPriority);
-	CleanupStack::PushL(self);
-
-	self->ConstructL();
-
-	return self;
-	}
-
-void CSmcmSendTest::ConstructL()
-	{
-	iSmsTest.SetLogToFile();
-
-	iSelection = new (ELeave) CMsvEntrySelection();
-
-	iSmsTest.iMsvSession->AddObserverL(*this);
-	iSmsTest.InstantiateClientMtmsL();
-
-	iSmsTest.SetEntryL(iSmsTest.iSmsServiceId);
-	iSmsSettings = CSmsSettings::NewL();
-
-	CSmsAccount* account = CSmsAccount::NewLC();
-	account->LoadSettingsL(*iSmsSettings);
-	CleanupStack::PopAndDestroy(account);
-	}
-
-void CSmcmSendTest::HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* /*aArg2*/, TAny* /*aArg3*/)
-	{
-	CMsvEntrySelection* entries = NULL;
-
-	switch (aEvent)
-		{
-//		case EMsvEntriesCreated:
-		case EMsvEntriesChanged:
-		case EMsvEntriesMoved:
-			entries = STATIC_CAST(CMsvEntrySelection*, aArg1);
-			break;
-		default:
-			return;
-		}
-
-	if (!IsActive())
-		return;
-
-	TRequestStatus* status = &iStatus;
-
-	switch (iState)
-		{
-		case EStateSchedulingThenSend:
-		case EStateSending:
-			{
-			if (aEvent == EMsvEntriesCreated)
-				return;
-
-			TInt error = KErrNone;
-
-			iSmsTest.DisplaySendingStatesL(*entries);
-
-			TInt count = entries->Count();
-			
-			while (count--)
-				{
-				const TMsvId id = (*entries)[count];
-				const TInt find = iCurrentMessages.Find(id);
-				
-				if (find != KErrNotFound)
-					{
-					CMessageSendStates& messageSendStates = *iCurrentMessages[find];
-					CMsvEntry* cEntry = Session().GetEntryL(id);
-					CleanupStack::PushL(cEntry);
-					const TMsvEntry& entry = cEntry->Entry();
-					User::LeaveIfError(messageSendStates.iStates.Append(entry.SendingState()));					
-					CleanupStack::PopAndDestroy(cEntry);
-					}
-				}
-
-			if (iSmsTest.SendingCompleteL(*iSelection, error) && iState == EStateSchedulingThenSend && iStatus == KRequestPending)
-				{
-				User::RequestComplete(status, error);
-				}
-			break;
-			}
-		case EStateTestReceiveClass2:
-
-			if (aEvent != EMsvEntriesChanged)
-				return;
-
-			if (!CheckParentOfReceivedMessageL(*entries))
-				{
-				iSmsTest.Printf(_L("Parent of messages don't match\n"));
-				User::RequestComplete(status, KErrGeneral);
-				}
-			else if (iMessagesReceived >= iMessagesToReceive)
-				{
-				iSmsTest.Printf(_L("All messages received\n"));
-				User::RequestComplete(status, KErrNone);
-				}
-
-		default:
-			break;
-		}
-	}
-
-LOCAL_C const TAutoTestCase SmsScTestCases[] =
-/**
-	Sets up an array of test functions
- */
-	{
-	{Test1L,_S("Test Sending")},
-	{Test2L,_S("Test Schedule Sending")},
-	{Test3L,_S("Test Receiving Class2 Messages")},
-	{Test4L,_S("Test Start Stop Watchers")}
-	};
-
-LOCAL_C void doMainL()
-/**
-	Constructs sctive scheduler and starts off the tests
- */
-	{
-	CActiveScheduler* scheduler = new (ELeave) CActiveScheduler;
-	CleanupStack::PushL(scheduler);
-	CActiveScheduler::Install( scheduler );
-	
-	// Copying the config file to the root directory
-	RFs fs;
-	User::LeaveIfError(fs.Connect());
-	CleanupClosePushL(fs);
-
-	CSmsTestUtils::CopyToSimTsyConfigFileL(fs, KSmsScriptFull);
-	DeleteSmsStores(fs);
-
-	CleanupStack::PopAndDestroy(&fs);
-
-	// Open the socket server
-
-	RSocketServ serv;
-	RSocket socket;
-
-	User::LeaveIfError(serv.Connect());
-	CleanupClosePushL(serv);
-	
-	TProtocolDesc protoinfo;
-	TProtocolName protocolname(KSmsDatagram);
-	User::LeaveIfError(serv.FindProtocol(protocolname,protoinfo));
-	User::LeaveIfError(socket.Open(serv,protoinfo.iAddrFamily,protoinfo.iSockType,protoinfo.iProtocol));
-
-	TSmsAddr smsaddr;
-	smsaddr.SetSmsAddrFamily(ESmsAddrSendOnly);
-	User::LeaveIfError(socket.Bind(smsaddr));
-
-	CleanupClosePushL(socket);
-
-	_LIT(KTestOutput,"smcmsimtsy_testreport.txt");
-	_LIT8(KComponentInfo,"smcm and smss");
-	// Library defined macro
-	// Uses a global pointer instance of CAutoTest
-	GLOBAL_AUTOTEST_EXECUTE(SmsScTestCases, KTestOutput, KComponentInfo, gTest);
-
-	CleanupStack::PopAndDestroy(&socket);
-	CleanupStack::PopAndDestroy(&serv);
-	CleanupStack::PopAndDestroy(scheduler);
-	}
-
-GLDEF_C TInt E32Main()
-/**
-	Calls doMainL and checks for error
- */
-	{
-	__UHEAP_MARK;
-
-	gTest.Start(_L("Setup"));
-	theCleanup = CTrapCleanup::New();
-
-
-	TRAPD(ret,doMainL());
-
-	if (ret != KErrNone)
-		gTest.Printf(_L("Test completed with %d"), ret);
-
-	delete theCleanup;	
-	gTest.Console()->SetPos(0, 13);
-	gTest.End();
-	gTest.Close();
-	__UHEAP_MARKEND;
-	return(KErrNone);
-	}
-
-void CSmcmSendTest::RunL()
-	{
-	if (iOperation)
-		iSmsTest.SetProgressL(*iOperation);
-
-	switch (iState)
-		{
-		case EStateScheduling:
-			DoRunSchedulingL();
-			break;
-		case EStateSending:
-		case EStateSchedulingThenSend:
-			DoRunSendingL();
-			break;
-		case EStateTestReceiveClass2:
-			break;
-		default:
-			break;
-		}
-
-	delete iOperation;
-	iOperation = NULL;
-
-	if (!IsActive())
-		Complete(iStatus.Int());
-	}
-
-void CSmcmSendTest::Complete(TInt aError)
-/**
-	Indicates that the operation is complete with aError.
-
-	@param		aError		error returned by the operation
- */
-	{
-	iSmsTest.Printf(_L("CSmsScTest::Complete [aError=%d]\n"), aError);
-	if (iExpectedError == aError && aError)
-		{
-		iSmsTest.Printf(_L("CSmsScTest::Complete [%d Expected - PASSED]\n"), aError);
-		aError = KErrNone;
-		}
-
-	if (iReport != NULL)
-		User::RequestComplete(iReport, aError);
-	}
-
-TInt CSmcmSendTest::RunError(TInt aError)
-/**
-
-	@param		aError		error returned by the operation
-	@return		TInt		Returns the KErrNone. 
- */
-	{
-	Complete(aError);
-	return KErrNone;
-	}
-
-void CSmcmSendTest::Queue(TRequestStatus& aStatus)
-/**
-
-	@param		aStatus		Indicates the status of the operation.
- */
-	{
-	__ASSERT_DEBUG(iReport==NULL, User::Invariant());
-
-	aStatus=KRequestPending;
-	iReport=&aStatus;
-	}
-
-void CSmcmSendTest::DoCancel()
-	{
-	if (iOperation)
-		{
-		iOperation->Cancel();
-		iSmsTest.Printf(_L("Operation Cancelled!\n"));
-		}
-	else	
-		{
-		iSmsTest.Printf(_L("No operation to cancel!\n"));
-		}
-
-	delete iOperation;
-	iOperation = NULL;
-	}
-
-void CSmcmSendTest::DoRunSchedulingL()
-	{
-	if (iStatus == KErrNone && iOperation != NULL)
-		iStatus = iSmsTest.iProgress.iError;
-
-	iSmsTest.Printf(_L("Scheduling completed with error %d\n"), iStatus);
-
-	TBool sent = EFalse;
-
-	if (iStatus == KErrNone)
-		{
-		iSmsTest.DisplaySendingStatesL(*iSelection);
-		TInt error = KErrNone;
-		sent = iSmsTest.SendingCompleteL(*iSelection, error);
-		iStatus = error;
-		}
-	
-	if (!sent)
-		{
-		iStatus = KRequestPending;
-		SetActive();
-		iState = EStateSchedulingThenSend;
-		}
-	else
-		{
-		iState = EStateWaiting;
-		iSmsTest.Printf(_L("Scheduling completed with error %d\n"), iStatus);
-		}
-	}
-
-void CSmcmSendTest::DoRunSendingL()
-	{
-	if (iStatus == KErrNone && iOperation != NULL)
-		iStatus = iSmsTest.iProgress.iError;
-
-	iState = EStateWaiting;
-	iSmsTest.Printf(_L("Sending completed with error %d\n"), iStatus);
-
-	TInt err = KErrNone;
-
-	if (!iSmsTest.SendingCompleteL(*iSelection, err))
-		{
-		iSmsTest.Printf(_L("Waiting for all messages to send or fail\n"), iStatus);
-		iStatus = KRequestPending;
-		SetActive();
-		iState = EStateSchedulingThenSend;
-		}
-	else
-		{
-		PrintSendingStates(iCurrentMessages);
-		LOCAL_CHECKPOINT(iAutoTest, CheckSendingStates(iCurrentMessages));
-		}
-	}
-
-TBool CSmcmSendTest::CheckSendingStates(const RMessageSendStatesArray& sendStateArray)
-	{
-	const TInt count = sendStateArray.Count();
-
-	for (TInt i=0; i < count; ++i)
-		{
-		const CMessageSendStates& sendState = *sendStateArray[i];
-		const TInt stateCount = sendState.iStates.Count();
-
-		for (TInt j=0; j < stateCount-1; ++j)
-			{
-			if (sendState.iStates[j] == KMsvSendStateFailed && (sendState.iStates[j+1] == KMsvSendStateResend || sendState.iStates[j+1] == KMsvSendStateScheduled))
-				return EFalse;
-			}
-		}
-
-	return ETrue;
-	}
-
-void CSmcmSendTest::PrintSendingStates(const RMessageSendStatesArray& sendStateArray)
-	{
-	iSmsTest.Printf(_L("=============== Sending States =============== \n\n"));
-
-	TInt count = sendStateArray.Count();
-	iSmsTest.Printf(_L("Number of messages= %d\n\n"), count);
-
-	for (TInt i=0; i < count; ++i)
-		{
-		iSmsTest.Printf(_L("================= Message %d ================\n\n"), i);
-
-		const CMessageSendStates& sendState = *sendStateArray[i];
-		TInt stateCount = sendState.iStates.Count();
-
-		for (TInt j=0; j < stateCount; ++j)
-			{
-			//iSmsTest.Printf(_L("%d\n"), sendState.iStates[j]);
-
-			switch (sendState.iStates[j])
-				{
-				case KMsvSendStateSending:
-					iSmsTest.Printf(_L("Sending %d\n"), sendState.iStates[j]);
-					break;
-				case KMsvSendStateResend:
-					iSmsTest.Printf(_L("Resend %d\n"), sendState.iStates[j]);
-					break;
-				case KMsvSendStateScheduled:
-					iSmsTest.Printf(_L("Scheduled %d\n"), sendState.iStates[j]);
-					break;
-				case KMsvSendStateFailed:
-					iSmsTest.Printf(_L("Failed %d\n"), sendState.iStates[j]);
-					break;
-				case KMsvSendStateWaiting:
-					iSmsTest.Printf(_L("Waiting %d\n"), sendState.iStates[j]);
-					break;
-				case KMsvSendStateSent:
-					iSmsTest.Printf(_L("Sent %d\n"), sendState.iStates[j]);
-					break;
-				case KMsvSendStateSuspended:
-					iSmsTest.Printf(_L("Suspended %d\n"), sendState.iStates[j]);
-					break;
-				default:
-					break;
-					}
-			}
-
-		iSmsTest.Printf(_L("============== End of Message %d =============\n\n"), i);
-		}
-
-	iSmsTest.Printf(_L("=============== End Sending States ============= \n"));
-	}
-
-
-TBool CSmcmSendTest::CheckParentOfReceivedMessageL(const CMsvEntrySelection& aSelection)
-	{
-	TInt count = aSelection.Count();
-	TBool retVal = ETrue;
-
-	while (count-- && retVal)
-		{
-		const TMsvId id = aSelection[count];
-		iSmsTest.SetEntryL(id);
-		const TMsvSmsEntry entry(iSmsTest.Entry());
-
-		if (entry.iType == KUidMsvMessageEntry && entry.iMtm == KUidMsgTypeSMS)
-			{
-			iMessagesReceived++;
-			iSmsTest.Printf(_L("%d: %d/%d received\n"),
-				id, iMessagesReceived, iMessagesToReceive);
-
-			TSmsDataCodingScheme::TSmsClass smsClass;
-			TMsvId expectedFolder = KMsvGlobalInBoxIndexEntryId;
-
-			const TBool hasClass = entry.Class(smsClass);
-
-			if (hasClass && smsClass == TSmsDataCodingScheme::ESmsClass2)
-				expectedFolder = iSmsSettings->Class2Folder();
-
-			retVal = (expectedFolder == entry.Parent());
-
-			if (!retVal)
-				{
-				iSmsTest.Printf(_L("Parent of message %d invalid [parent=%d expected=%d hasClass=%d class=%d smsSettings=%d\n"),
-					id, entry.Parent(), expectedFolder, hasClass, smsClass, iSmsSettings->Class2Folder());
-				}
-			}
-		}
-
-	return retVal;
-	}
-
-void CSmcmSendTest::SetMessagesToReceiveL(TInt aTestNumber)
-	{
-	TParse parse;
-	User::LeaveIfError(iSmsTest.ResolveFile(_L("SMS"), KSmsScript, parse));
-
-	CTestConfig* configFile = CTestConfig::NewLC(iSmsTest.FileSession(), KNullDesC, parse.FullName());
-
-	TBuf8<16> name;
-	name.AppendFormat(_L8("test%d"), aTestNumber);
-
-	const CTestConfigSection* section = configFile->Section(name);
-
-	if (configFile == NULL)
-		User::Leave(KErrNotFound);
-
-	iMessagesToReceive = section->ItemCount(_L8("SmsRx"));
-	CleanupStack::PopAndDestroy(configFile);
-	}
-
-