messagingappbase/smsmtm/test/src/t_smcmrecvmanual.cpp
changeset 25 84d9eb65b26f
parent 23 238255e8b033
child 27 e4592d119491
child 37 518b245aa84c
child 79 2981cb3aa489
--- a/messagingappbase/smsmtm/test/src/t_smcmrecvmanual.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_smcmrecvmanual.h"
-#include <msvuids.h>
-#include <smuthdr.h>
-#include <smscmds.h>
-#include <msgtestscripts.h>
-#include <txtrich.h>
-
-_LIT(KSmcmRecvOnlyTestName, "Receive SMS Messages");
-_LIT(KHelpText, "\n[1] Start Watchers\n[2] Stop Watchers\n[3] Send myself message\n[D] Display Unmatched Messages\ne[X]it\n");
-_LIT(KMessageText, "\n[1] Short Message\n[2] Long Message\n[3] Message Indication\n[4] Replace Type\n[5] From sendrecv.script\n[D] Display Unmatched Messages\ne[X]it\n");
-_LIT(KSmsScript, "sendrecv.script");
-_LIT(KDefaultScript, "defaults.script");
-_LIT(KRecipients, "Recipients");
-_LIT(KServiceCenter, "SC");
-const TInt KWaitAfterRecv = 100000; //< 0.1 second
-
-RTest test(_L("T_SmcmRecvManual: Receive SMS Messages"));
-CTrapCleanup* theCleanup;
-
-LOCAL_C void doMainL()
-	{
-	CActiveScheduler* scheduler = new (ELeave) CActiveScheduler;
-	CleanupStack::PushL(scheduler);
-	CActiveScheduler::Install( scheduler );
-
-	CSmsTestUtils* smsTest = CSmsTestUtils::NewL(test);
-	CleanupStack::PushL(smsTest);
-	TInt nextTest = 0;
-	
-	smsTest->NotifySaPhoneOnL();
-
-	CSmcmRecvOnly* scTest = CSmcmRecvOnly::NewLC(*smsTest, KSmsScript, nextTest);
-
-	scTest->StartL();
-
-	CActiveScheduler::Start();
-
-	CleanupStack::PopAndDestroy(3); //SmsTest, scheduler
-	}
-
-GLDEF_C TInt E32Main()
-	{	
-	__UHEAP_MARK;
-	test.Start(_L("Setup"));
-	theCleanup = CTrapCleanup::New();
-	TRAPD(ret,doMainL());		
-	test(ret==KErrNone);
-	delete theCleanup;	
-	test.Console()->SetPos(0, 13);
-	test.End();
-	test.Close();
-	__UHEAP_MARKEND;
-	return(KErrNone);
-	}
-
-CSmcmRecvOnly::~CSmcmRecvOnly()
-/**
- * CSmcmRecvOnly destructor
- */
-	{
-	Cancel();
-	delete iRecvActive;
-	delete iWatchers;
-	delete iOperation;
-	iOperation = NULL;
-
-	delete iRecipient;
-	delete iServiceCenter;
-
-	delete iSelection;
-	iSelection = NULL;
-	}
-
-CSmcmRecvOnly* CSmcmRecvOnly::NewLC(CSmsTestUtils& aSmsTest, const TDesC& aScriptFile, TInt& aNextTest)
-/**
- * CSmcmRecvOnly factory function
- */
-	{
-	CSmcmRecvOnly* self = new (ELeave) CSmcmRecvOnly(aSmsTest, aScriptFile, aNextTest);
-	CleanupStack::PushL(self);
-
-	self->ConstructL();
-	return self;
-	}
-
-CSmcmRecvOnly::CSmcmRecvOnly(CSmsTestUtils& aSmsTest, const TDesC& aScriptFile, TInt& aNextTest)
-: CSmsTestBase(aSmsTest, aScriptFile, aNextTest)
-/**
- * CSmcmRecvOnly constructor
- */
-	{
-	CActiveScheduler::Add(this);
-	}
-
-void CSmcmRecvOnly::DisplayAndRead(const TDesC& aText)
-/**
- * Displays aText then issues a read on the console
- */
-	{
-	iSmsTest.Printf(aText);
-	Read();
-	}
-
-void CSmcmRecvOnly::RunAutoL()
-	{
-	DisplayAndRead(KHelpText);
-	}
-
-void CSmcmRecvOnly::ConstructL()
-	{
-	iSmsTest.NotifySaPhoneOnL();
-	SetTestNameL(KSmcmRecvOnlyTestName);
-	iSmsTest.InstantiateClientMtmsL();
-
-	iSmsTest.SetLogToFile();
-	iRecvActive = CSmcmRecvActive::NewL(iSmsTest, Priority()-1);
-	iSelection = new (ELeave) CMsvEntrySelection;
-
-	User::After(1000000);
-
-	CScriptFile* script = CScriptFile::NewLC(iSmsTest, KSmsComponent);
-	script->ReadScriptL(KDefaultScript);
-
-	iRecipient = script->ItemValue(KDefaults, KRecipients, KNullDesC).AllocL();
-	iServiceCenter = script->ItemValue(KDefaults, KServiceCenter, KNullDesC).AllocL();
-
-	CleanupStack::PopAndDestroy(script);
-
-	User::After(1000000);
-
-	iSmsTest.Printf(_L("Deleting SMS messages in outbox..."));
-	iSmsTest.DeleteSmsMessagesL(KMsvGlobalOutBoxIndexEntryId);
-
-	User::After(1000000);
-	
-	iSmsTest.Printf(_L("Done\nDeleting SMS messages in sent..."));
-	iSmsTest.DeleteSmsMessagesL(KMsvSentEntryId);
-
-	User::After(1000000);
-	
-	iSmsTest.Printf(_L("Done\nDeleting SMS messages in inbox..."));
-	iSmsTest.DeleteSmsMessagesL(KMsvGlobalInBoxIndexEntryId);
-
-	iSmsTest.Printf(_L("Done\n"));
-	}
-
-void CSmcmRecvOnly::ShowMenuL()
-	{
-	RunAutoL();
-	}
-
-void CSmcmRecvOnly::DoRunMainMenuL(TKeyCode aCode)
-/**
- * Called by RunL when iState == EMainMenu, when there is a key press event.
- * Acts on the user's request.
- */
-	{
-	const TChar ch = TChar(aCode);
-	const TDesC* text = &KHelpText();
-
-	switch (ch)
-		{
-		case '1':
-
-			iSmsTest.Printf(_L("\nStarting Watchers\n"));
-
-			if (iWatchers == NULL)
-				iWatchers = CTestUtilsWatcherStarter::NewL(Priority());
-			else
-				iSmsTest.Printf(_L("OOPS: Watchers already started!!\n"));
-
-			break;
-
-		case '2':
-
-			iSmsTest.Printf(_L("\nStopping Watchers\n"));
-
-			if (iWatchers == NULL)
-				iSmsTest.Printf(_L("OOPS: Watchers not started yet!!\n"));
-			else
-				{
-				delete iWatchers;
-				iWatchers = NULL;
-				}
-			break;
-
-		case '3':
-
-			text = &KMessageText();
-			iState = ESendingMenu;
-			break;
-
-		case 'D':
-		case 'd':
-
-			iRecvActive->DisplayUnmatched();
-			break;
-
-		case 'x':
-		case 'X':
-		case EKeyEscape:
-
-			text = NULL;
-			Complete(KErrNone);
-			break;
-
-		case EKeySpace:
-
-			ReshowMenu();
-			break;
-
-		default:
-
-			Read();
-			break;
-		}
-
-	if (!IsActive() && text != NULL)
-		DisplayAndRead(*text);
-	}
-
-void CSmcmRecvOnly::Read()
-/**
- * Issues an asynchronous read on the console
- */
-	{
-	Cancel();
-	iSmsTest.Test().Console()->Read(iStatus);
-	SetActive();
-	}
-
-void CSmcmRecvOnly::SendReplaceTypeL()
-	{
-	iSmsTest.Printf(_L("\nSendReplaceTypeL\n"));
-	_LIT(KShortMessage, "Replace Type %d");
-	TBuf<64> buf;
-	buf.AppendFormat(KShortMessage, iReplaceTypeCount++);
-
-	const TMsvId id = CreateMessageLC(buf);
-
-	CSmsHeader* header = iSmsTest.GetHeaderLC(id);
-
-	CSmsSubmit& submit = header->Submit();
-	submit.SetPIDType(TSmsProtocolIdentifier::ESmsPIDShortMessageType);
-	submit.SetShortMessageType(TSmsProtocolIdentifier::ESmsReplaceShortMessageType1);
-	StoreMessageL(id, *header);
-	CleanupStack::PopAndDestroy(header);
-
-	iSelection->Reset();
-	iSelection->AppendL(id);
-	ScheduleSendL();
-	iSmsTest.iMsvSession->CleanupEntryPop(); //id
-	}
-
-void CSmcmRecvOnly::DoRunSendingMenuL(TKeyCode aCode)
-/**
- * Called by RunL when iState == ESendingMenu, when there is a key press event.
- * Acts on the user's sending request.
- */
-	{
-	const TChar ch = TChar(aCode);
-
-	switch (ch)
-		{
-		case '1':
-			SendShortMessageL();
-			break;
-		case '2':
-			SendLongMessageL();
-			break;
-		case '3':
-			SendMessageIndicationL();
-			break;
-
-		case '4':
-			SendReplaceTypeL();
-			break;
-
-		case '5':
-			SendFromScriptL();
-			break;
-
-		case 'D':
-		case 'd':
-
-			iRecvActive->DisplayUnmatched();
-			ReshowMenu();
-			break;
-
-		case 'x':
-		case 'X':
-		case EKeyEscape:
-
-			DisplayAndRead(KHelpText);
-			iState = EMainMenu;
-			break;
-
-		case EKeySpace:
-			
-			ReshowMenu();
-			break;
-
-		default:
-
-			Read();
-			break;
-		}
-	}
-
-void CSmcmRecvOnly::ReshowMenu()
-/**
- * Redisplays the current menu
- */
-	{
-	const TDesC* menu = NULL;
-
-	switch (iState)
-		{
-		case EMainMenu:
-			menu = &KHelpText();
-			break;
-		case ESendingMenu:
-			menu = &KMessageText();
-			break;
-
-		default:
-			break;
-		}
-
-	if (menu != NULL)
-		{
-		DisplayAndRead(*menu);
-		}
-	}
-
-void CSmcmRecvOnly::SendFromScriptL()
-/**
- * Sends SMS messages from sendrecv.script
- */
-	{
-	iSmsTest.Printf(_L("\nSendFromScriptL\n"));
-	iSelection->Reset();
-	TTime now;
-	now.HomeTime();
-	iSmsTest.ReadScriptL(iScriptFile, KMsvGlobalOutBoxIndexEntryId, *iSelection, now);
-	ScheduleSendL();
-	}
-
-void CSmcmRecvOnly::SendLongMessageL()
-/**
- * Sends a 2-part concatenated SMS message
- */
-	{
-	iSmsTest.Printf(_L("\nSendLongMessageL\n"));
-
-	_LIT(KLongMessage, "LungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungoLungo");
-	const TMsvId id = CreateMessageLC(KLongMessage);
-	iSelection->Reset();
-	iSelection->AppendL(id);
-	ScheduleSendL();
-	iSmsTest.iMsvSession->CleanupEntryPop(); //id
-	}
-
-TMsvId CSmcmRecvOnly::CreateMessageLC(const TDesC& aBody)
-/**
- * Creates a message in the outbox with body text aBody
- *
- * @param aBody Body text of the new message
- * @return ID of the new message
- */
-	{
-	const TMsvId id = iSmsTest.CreateDummyMessageToSendL();
-	iSmsTest.iMsvSession->CleanupEntryPushL(id);
-
-	CSmsHeader* header = iSmsTest.GetHeaderLC(id);
-
-	header->Recipients().ResetAndDestroy();
-	CSmsNumber* number = CSmsNumber::NewL();
-	CleanupStack::PushL(number);
-	number->SetAddressL(*iRecipient);
-	number->SetNameL(*iRecipient);
-	header->Recipients().AppendL(number);
-	CleanupStack::Pop(number);
-
-	header->Submit().SetServiceCenterAddressL(*iServiceCenter);
-
-	TMsvEntry entry(iSmsTest.Entry());
-	entry.iDate.HomeTime();
-	iSmsTest.ChangeEntryL(entry);
-
-
-	_LIT(KDateFormat, " %-B%:0%J%:1%T%:2%S%.%*C4%:3%+B %D%M%Y%/0%1%/1%2%/2%3%/3");
-	TBuf<64> dateString;
-	entry.iDate.FormatL(dateString, KDateFormat);
-	iSmsTest.iRichText->Reset();
-	iSmsTest.iRichText->InsertL(0, dateString);
-	iSmsTest.iRichText->InsertL(0, aBody);
-
-	StoreMessageL(id, *header);
-
-	CleanupStack::PopAndDestroy(header);
-
-	return id;
-	}
-
-void CSmcmRecvOnly::SendShortMessageL()
-/**
- * Sends a single-part SMS message
- */
-	{
-	iSmsTest.Printf(_L("\nSendShortMessageL\n"));
-	_LIT(KShortMessage, "ridere");
-	const TMsvId id = CreateMessageLC(KShortMessage);
-	iSelection->Reset();
-	iSelection->AppendL(id);
-	ScheduleSendL();
-	iSmsTest.iMsvSession->CleanupEntryPop(); //id
-	}
-
-void CSmcmRecvOnly::StoreMessageL(TMsvId aId, const CSmsHeader& aHeader)
-/**
- * Stores the header against a message
- *
- * @param aId ID of the message
- * @param aHeader The CSmsHeader to store against the message
- */
-	{
-	iSmsTest.SetEntryL(aId);
-	CMsvStore* store = iSmsTest.EditStoreL();
-	CleanupStack::PushL(store);
-	aHeader.StoreL(*store);
-	store->StoreBodyTextL(*iSmsTest.iRichText);
-	store->CommitL();
-	CleanupStack::PopAndDestroy(store);
-	}
-
-void CSmcmRecvOnly::ScheduleSendL()
-/**
- * Sends all messages in iSelection
- * @note Messages are actually scheduled. Actual ending occurs a few seconds later.
- */
-	{
-	iState = ESending;
-	delete iOperation;
-	iOperation = NULL;
-	iOperation = iSmsTest.iMsvSession->TransferCommandL(*iSelection, ESmsMtmCommandScheduleCopy, KNullDesC8, iStatus);
-	SetActive();
-	}
-
-void CSmcmRecvOnly::SendMessageIndicationL(TUint8 aMessageType, TUint8 aMessageCount)
-/**
- * Sends an SMS message with Special SMS Message Indication set in the user data header.
- *
- * @param aMessageType The type of the Special SMS Message Indication
- * @param aMessageCount The number of "messages" waiting
- */
-	{
-	iSmsTest.Printf(_L("\nSendMessageIndicationL\n"));
-	_LIT(KShortMessage, "SMI");
-	const TMsvId id = CreateMessageLC(KShortMessage);
-
-	CSmsHeader* header = iSmsTest.GetHeaderLC(id);
-
-	TBuf8<2> data;
-	data.SetLength(2);
-	data[0] = aMessageType;
-	data[1] = aMessageCount;
-
-	header->Submit().UserData().AddInformationElementL(CSmsInformationElement::ESmsIEISpecialSMSMessageIndication, data);
-	StoreMessageL(id, *header);
-	CleanupStack::PopAndDestroy(header);
-
-	iSelection->Reset();
-	iSelection->AppendL(id);
-	ScheduleSendL();
-	iSmsTest.iMsvSession->CleanupEntryPop(); //id
-	}
-
-void CSmcmRecvOnly::DoRunSendingL()
-/**
- * Called by CSmcmRecvOnly::RunL() when sending has completed.
- * Displays the current state of all sent messages (in iSelection) and determines whether there was and error.
- */
-	{
-	iSmsTest.SetProgressL(*iOperation);
-	delete iOperation;
-	iOperation = NULL;
-
-	iSmsTest.Printf(_L("\nDoRunSendingL [iStatus=%d Progress.iError=%d]\n"), iStatus.Int(), iSmsTest.iProgress.iError);
-
-	iSmsTest.DisplaySendingStatesL(*iSelection);
-
-	TInt error = KErrNone;
-	const TBool sendingComplete = iSmsTest.SendingCompleteL(*iSelection, error);
-
-	iSmsTest.Printf(_L("[sendingCompete=%d error=%d]\n"), sendingComplete, error);
-
-	if (iStatus.Int() == KErrNone && iSmsTest.iProgress.iError == KErrNone && error == KErrNone)
-		iRecvActive->SentL(*iSelection);
-
-	iState = ESendingMenu;
-	DisplayAndRead(KMessageText);
-	}
-
-void CSmcmRecvOnly::RunL()
-	{
-	User::LeaveIfError(iStatus.Int());
-
-	const TKeyCode keyCode = iSmsTest.Test().Console()->KeyCode();
-
-	switch (iState)
-		{
-		case EMainMenu:
-			DoRunMainMenuL(keyCode);
-			break;
-		case ESendingMenu:
-			DoRunSendingMenuL(keyCode);
-			break;
-		case ESending:
-			DoRunSendingL();
-			break;
-		}
-	}
-
-TInt CSmcmRecvOnly::RunError(TInt aError)
-	{
-	Complete(aError);
-	return KErrNone;
-	}
-
-void CSmcmRecvOnly::Complete(TInt aStatus)
-	{
-	iSmsTest.Printf(_L("CSmcmRecvOnly Completed with %d\n"), aStatus);
-	CActiveScheduler::Stop();
-	}
-
-void CSmcmRecvOnly::DoCancel()
-	{
-	iSmsTest.Test().Console()->ReadCancel();
-	if (iOperation != NULL)
-		iOperation->Cancel();
-	}
-
-//
-
-CSmcmRecvActive* CSmcmRecvActive::NewL(CSmsTestUtils& aSmsTest, TInt aPriority)
-/**
- * CSmcmRecvActive factory function
- */
-	{
-	CSmcmRecvActive* self = new (ELeave) CSmcmRecvActive(aSmsTest, aPriority);
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	CleanupStack::Pop(self);
-	return self;
-	}
-
-CSmcmRecvActive::CSmcmRecvActive(CSmsTestUtils& aSmsTest, TInt aPriority)
-: CActive(aPriority), iSmsTest(aSmsTest)
-/**
- * CSmcmRecvActive constructor
- */
-	{
-	CActiveScheduler::Add(this);
-	}
-
-CSmcmRecvActive::~CSmcmRecvActive()
-/**
- * CSmcmRecvActive destructor
- */
-	{
-	Cancel();
-	iTimer.Close();
-	iSmsTest.iMsvSession->RemoveObserver(*this);
-	delete iSelection;
-	delete iReceived;
-	delete iSent;
-	delete iMatched;
-	}
-
-void CSmcmRecvActive::ConstructL()
-	{
-	User::LeaveIfError(iTimer.CreateLocal());
-	iSelection = new (ELeave) CMsvEntrySelection;
-	iSent = new (ELeave) CMsvEntrySelection;
-	iReceived = new (ELeave) CMsvEntrySelection;
-	iMatched = new (ELeave) CMsvEntrySelection;
-	iSmsTest.iMsvSession->AddObserverL(*this);
-	}
-
-void CSmcmRecvActive::HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* , TAny* )
-/**
- * Called by CMsvSession when a messaging event has occurred. It is used here to find out if any new messages have been created.
- */
-	{
-	CMsvEntrySelection* entries = NULL;
-
-	switch (aEvent)
-		{
-		case EMsvEntriesCreated:
-			entries = STATIC_CAST(CMsvEntrySelection*, aArg1);
-			break;
-		default:
-			break;
-		}
-
-	if (entries != NULL)
-		{
-		TInt count = entries->Count();
-
-		while (count--)
-			{
-			const TMsvId id = (*entries)[count];
-			iSmsTest.SetEntryL(id);
-
-			const TMsvEntry& entry = iSmsTest.Entry();
-
-			if ((entry.iMtm == KUidMsgTypeSMS || entry.iBioType != 0) && entry.iType == KUidMsvMessageEntry)
-				iSelection->AppendL(id);
-			}
-
-		if (iSelection->Count() != 0)
-			{
-			Cancel();
-			iTimer.After(iStatus, KWaitAfterRecv);
-			SetActive();
-			}
-		}
-	}
-
-void CSmcmRecvActive::RunL()
-/**
- * Called after the timer completes, which was started when a new message arrived (in CSmcmRecvActive::HandleSessionEventL()).
- * Displays all new messages then determines whether they match sent messages.
- */
-	{
-	const TInt recvCount = iReceived->Count();
-	TInt count = iSelection->Count();
-
-	while (count--)
-		{
-		const TMsvId id = (*iSelection)[0];
-		CSmsHeader* header = iSmsTest.GetHeaderLC(id);
-
-		if (header->Type() == CSmsPDU::ESmsDeliver)
-			{
-			if (Find(*iReceived, id) == KErrNotFound)
-				iReceived->AppendL(id);
-
-			PrintMessageL(id);
-			}
-
-		CleanupStack::PopAndDestroy(header);
-		iSelection->Delete(0,1);
-		}
-
-	if (recvCount != iReceived->Count())
-		ProcessReceivedL();
-	}
-
-void CSmcmRecvActive::ProcessReceivedL()
-/**
- * Determines whether received messages match the sent messages.
- * If two messages in iSent and iReceived match, then it is moved from iReceived to iMatched and deleted from iSent.
- */
-	{
-	TInt sentCount = iSent->Count();
-
-	while (sentCount--)
-		{
-		TInt recvCount = iReceived->Count();
-		
-		const TMsvId sentId = (*iSent)[sentCount];
-		CMsvEntry* sentEntry = iSmsTest.iMsvSession->GetEntryL(sentId);
-		CleanupStack::PushL(sentEntry);
-
-		while (recvCount--)
-			{
-			const TMsvId recvId = (*iReceived)[recvCount];
-			CMsvEntry* recvEntry = iSmsTest.iMsvSession->GetEntryL(recvId);
-			CleanupStack::PushL(recvEntry);
-			
-			if (IsMatchL(*sentEntry, *recvEntry))
-				{
-				iMatched->AppendL(recvId);
-				iSent->Delete(sentCount, 1);
-				iReceived->Delete(recvCount, 1);
-				}
-
-			CleanupStack::PopAndDestroy(recvEntry);
-			}
-
-		CleanupStack::PopAndDestroy(sentEntry);
-		}
-	}
-
-TBool CSmcmRecvActive::IsMatchL(CMsvEntry& aSent, CMsvEntry& aReceived)
-/**
- * Compares the body text of aSent and aReceived
- *
- * @return Returns ETrue if the body text matches
- */
-	{
-	HBufC* sentBody = GetBodyTextLC(aSent);
-	HBufC* recvBody = GetBodyTextLC(aReceived);
-	TBool retVal = (*sentBody == *recvBody);
-	CleanupStack::PopAndDestroy(recvBody);
-	CleanupStack::PopAndDestroy(sentBody);
-
-	// todo AA 28/2/2002 Is more checking required?
-
-	return retVal;
-	}
-
-CSmsHeader* CSmcmRecvActive::GetHeaderLC(CMsvEntry& aMessage) const
-/**
- * Returns the CSmsHeader restored from message aMessage.
- */
-	{
-	CSmsHeader* header = CSmsHeader::NewL(CSmsMessage::NewL(iSmsTest.FileSession(), CSmsPDU::ESmsDeliver, CSmsBuffer::NewL()));
-	CleanupStack::PushL(header);
-
-	CMsvStore* store = aMessage.ReadStoreL();
-	CleanupStack::PushL(store);
-	header->RestoreL(*store);
-	CleanupStack::PopAndDestroy(store);
-
-	return header;
-	}
-
-HBufC* CSmcmRecvActive::GetBodyTextLC(CMsvEntry& aMessage)
-/**
- * @return The body text of message aMessage
- */
-	{
-	iSmsTest.iRichText->Reset();
-	CMsvStore* store = aMessage.ReadStoreL();
-	CleanupStack::PushL(store);
-	store->RestoreBodyTextL(*iSmsTest.iRichText);
-	CleanupStack::PopAndDestroy(store);
-	
-	const TInt len = iSmsTest.iRichText->DocumentLength();
-	HBufC* buf = HBufC::NewLC(len);
-	TPtr ptr(buf->Des());
-	iSmsTest.iRichText->Extract(ptr);
-	return buf;
-	}
-
-TInt CSmcmRecvActive::Find(const CMsvEntrySelection& aSelection, TMsvId aId) const
-/**
- * Attempts to find a message in a selection (array).
- *
- * @param aSelection The selection of messages to search
- * @param aId The message to find in aSelection
- * @return The index of aId in aSelection or KErrNotFound if aId is not in aSelection
- */
-	{
-	TInt count = aSelection.Count();
-
-	while (count--)
-		{
-		const TMsvId id = aSelection[count];
-		if (id == aId)
-			return count;
-		}
-
-	return KErrNotFound;
-	}
-
-void CSmcmRecvActive::PrintMessageL(TMsvId aId)
-/**
- * Displays the received message aId
- */
-	{
-	iSmsTest.iMsvEntry->SetEntryL(KMsvGlobalInBoxIndexEntryId);
-	iSmsTest.Printf(_L("\nReceived Message #%d of %d!! Inbox Count=%d\n"), Received(), Sent(), iSmsTest.iMsvEntry->Count());
-	iSmsTest.DisplayMessageL(aId);
-	}
-
-void CSmcmRecvActive::SentL(const CMsvEntrySelection& aSelection)
-/**
- * Copies aSelection into iSent. One entry is added to iSent for every receipient of each message in aSelection.
- */
-	{
-	TInt count = aSelection.Count();
-	while (count--)
-		{
-		const TMsvId id = aSelection[count];
-		CSmsHeader* header = iSmsTest.GetHeaderLC(id);
-		TInt recptCount = header->Recipients().Count();
-
-		while (recptCount--)
-			iSent->AppendL(id);
-
-		CleanupStack::PopAndDestroy(header);
-		}
-	}
-
-TInt CSmcmRecvActive::RunError(TInt aError)
-	{
-	iSmsTest.Printf(_L("WARNING: CSmcmRecvActive::RunL() left with %d\n"), aError);
-	iTimer.After(iStatus, KWaitAfterRecv);
-	SetActive();
-	return KErrNone;
-	}
-
-void CSmcmRecvActive::DoCancel()
-	{
-	iTimer.Cancel();
-	}
-
-void CSmcmRecvActive::DisplayUnmatched() const
-/**
- * Displays all messages that are yet to be matched
- */
-	{
-	_LIT(KDisplayFormat, "\nSent %d Received %d Matched %d Unmatched %d\n");
-
-	if (iSent->Count() != 0)
-		{
-		iSmsTest.Printf(_L("\nUnmatched Messages:\n"));
-		TRAPD(err, iSmsTest.DisplaySendingStatesL(*iSent));
-		iSmsTest.Printf(_L("\n"));
-		if (err != KErrNone)
-			iSmsTest.Printf(_L("WARNING: DisplaySendingStatesL left with %d\n"), err);
-		}
-
-	iSmsTest.Printf(KDisplayFormat, Sent(), Received(), iMatched->Count(), iSent->Count());
-	}