messagingfw/msgtest/testutils/sms/src/SmsTestBase.cpp
changeset 0 8e480a14352b
child 58 6c34d0baa0b1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/msgtest/testutils/sms/src/SmsTestBase.cpp	Mon Jan 18 20:36:02 2010 +0200
@@ -0,0 +1,250 @@
+// 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 "smstestbase.h"
+#include <logcli.h>
+#include <smscmds.h>
+#include <txtrich.h> 
+#include <smsclnt.h>
+
+EXPORT_C CSmsTestBase::~CSmsTestBase()
+	{
+	if (iOperation)
+		{
+		iOperation->Cancel();
+		delete iOperation;
+		iOperation = NULL;
+		}
+
+	delete iSelection;
+	iSelection = NULL;
+
+	if (iTimer)
+		{
+		iTimer->Cancel();
+		delete iTimer;
+		iTimer = NULL;
+		}
+
+	delete iTestName;
+	iTestName = NULL;
+	}
+
+EXPORT_C CSmsTestBase::CSmsTestBase(CSmsTestUtils& aSmsTest, const TDesC& aScriptFile, TInt& aNextTest, TInt aPriority)
+: CActive(aPriority), iComplete(EFalse), iError(KErrNone), iScriptFile(aScriptFile), iSmsTest(aSmsTest), iNextTest(aNextTest)
+	{
+	}
+
+EXPORT_C void CSmsTestBase::DisplayLogL()
+	{
+	CLogFilter* filter = CLogFilter::NewL();
+	CleanupStack::PushL(filter);
+
+	iSmsTest.DisplayLogL(*filter, ETrue);
+
+	CleanupStack::PopAndDestroy(); //filter
+
+	if (!iSmsTest.RunAuto())
+		{
+		iSmsTest.Test().Printf(_L("\nPress any key to continue...\n"));
+		iSmsTest.Test().Getch();
+		}
+	}
+
+EXPORT_C void CSmsTestBase::ClearLogL()
+	{
+	CLogFilter* filter = CLogFilter::NewL();
+	CleanupStack::PushL(filter);
+
+	iSmsTest.ClearLogL(*filter);
+
+	CleanupStack::PopAndDestroy(); //filter
+
+	if (!iSmsTest.RunAuto())
+		{
+		iSmsTest.Test().Printf(_L("\nPress any key to continue...\n"));
+		iSmsTest.Test().Getch();
+		}
+	}
+
+EXPORT_C TInt CSmsTestBase::RunError(TInt aError)
+	{
+	if (iStatus == KErrNone)
+		iStatus = aError;
+
+	return KErrNone;
+	}
+
+EXPORT_C void CSmsTestBase::DoTestForwardMsgL(TMsvId aId)
+// Test forwarding this message (ie Create a forwarded SMS, 
+// place it in the drafts folder & then send it).
+	{
+	// Load the SMS Client MTM if not already done so
+	if (! iSmsTest.iSmsClientMtm)
+		iSmsTest.InstantiateClientMtmsL();
+
+	// Get the SMS Client MTM to use & load this message
+	Client().SwitchCurrentEntryL(aId);
+	Client().LoadMessageL();
+
+	// Forward the message & store it in the Drafts folder
+	TMsvPartList part=0;
+	TRequestStatus status(0);
+	CMsvOperation* op = Client().ForwardL(KMsvDraftEntryId, part, status);
+	CleanupStack::PushL(op);
+
+	TMsvId temp;	
+	TPckgC<TMsvId> paramPack(temp);
+	const TDesC8& progBuf2 = op->ProgressL();	
+	paramPack.Set(progBuf2);
+	TMsvId progress=paramPack();
+	
+	CleanupStack::PopAndDestroy(); //op
+	op = NULL;
+
+	Client().SwitchCurrentEntryL(progress);
+	Client().LoadMessageL();
+
+	// Add additional text & an Addressee to the Forwarded Message
+	Client().Body().InsertL(0,_L("This is a forwarded Msg. "));
+	Client().AddAddresseeL(KScriptItemRecipientsDef);
+
+	// Change the description of the new message
+	CMsvEntry& cEntry = Client().Entry();
+	TMsvEntry tEntry = cEntry.Entry();
+	tEntry.iDescription.Set(_L("Forwarded Msg"));
+	cEntry.ChangeL(tEntry);
+
+	// Get the ID of the new Forwarded Message
+	TMsvId newEntryId = cEntry.EntryId();
+
+	// Save the new message
+	Client().SaveMessageL();
+
+	// Now send the Forwarded Message that we have just created
+	DoTestSendMesssageL(newEntryId);
+	}
+
+
+EXPORT_C void CSmsTestBase::DoTestSendMesssageL(TMsvId aMsgId)
+// Test Sending this message  
+	{
+	iSmsTest.Test().Next(_L("Sending"));
+	iSmsTest.Printf(_L("Sending %d messages...\n"), 1);
+	iSmsTest.DisplayMessageL(aMsgId);
+
+	// Get the Parent Id of the message we want to send & 
+	// then set the entry to this parent
+	iSmsTest.SetEntryL(aMsgId);
+	TMsvEntry entryToSend = iSmsTest.Entry();
+	TMsvId parentId = entryToSend.Parent();
+	iSmsTest.SetEntryL(parentId);
+
+	delete iOperation;
+	iOperation = NULL;
+
+	// Send the message, by copying it to the SMS Service.
+	iOperation = MsvEntry().CopyL(aMsgId, iSmsTest.iSmsServiceId, iStatus);
+
+	SetActive();
+	}
+
+EXPORT_C void CSmsTestBase::DoTestSendingL(const TDesC& aScript, TBool aMove)
+//
+//
+//
+	{
+	iSmsTest.Test().Next(_L("Sending"));
+
+	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"), &aScript);
+	TBool read = EFalse;
+	TRAPD(err, read = iSmsTest.ReadScriptL(aScript, KMsvGlobalOutBoxIndexEntryId, *iSelection, now));
+
+	iSmsTest.Test()(!err && read);
+
+	iSmsTest.Printf(_L("Sending %d messages...\n"), iSelection->Count());
+	iSmsTest.DisplayMessagesL(*iSelection);
+	iSmsTest.SetEntryL(KMsvGlobalOutBoxIndexEntryId);
+
+	delete iOperation;
+
+	// Send the message, by copying it to the SMS Service.
+	if (aMove)
+		{
+		iOperation = MsvEntry().MoveL(*iSelection, iSmsTest.iSmsServiceId, iStatus);
+		}
+	else
+		{
+		iOperation = MsvEntry().CopyL(*iSelection, iSmsTest.iSmsServiceId, iStatus);
+		}
+
+	SetActive();
+	}
+
+EXPORT_C void CSmsTestBase::DoTestSchedulingL(const TDesC& aScript, TBool aMove, TTimeIntervalSeconds aFromNow)
+	{
+	iSmsTest.Test().Next(_L("Scheduling"));
+	iSmsTest.DeleteSmsMessagesL(KMsvGlobalOutBoxIndexEntryId);
+	iSelection->Reset();
+
+	TTime now;
+	now.HomeTime();
+	now += aFromNow;
+
+	iSmsTest.Printf(_L("Creating msgs in outbox from script %S\n"), &aScript);
+	TBool read = EFalse;
+	TRAPD(err, read = iSmsTest.ReadScriptL(aScript, KMsvGlobalOutBoxIndexEntryId, *iSelection, now));
+
+	iSmsTest.Test()(!err && read);
+
+	iSmsTest.Printf(_L("Scheduled %d messages...\n"), iSelection->Count());
+	iSmsTest.DisplayMessagesL(*iSelection);
+	MsvEntry().SetEntryL(KMsvGlobalOutBoxIndexEntryId);
+
+	delete iOperation;
+
+	TInt cmd = aMove ? ESmsMtmCommandScheduleMove : ESmsMtmCommandScheduleCopy;
+
+	iOperation = Session().TransferCommandL(*iSelection, cmd, TPtrC8(), iStatus);
+	SetActive();
+	}
+
+EXPORT_C void CSmsTestBase::StartL()
+	{
+	TRAP(iError, iSmsTest.RunAuto() ? RunAutoL() : ShowMenuL());
+
+	if (iError)
+		{
+		if (iNextTest)
+			{
+			iSmsTest.TestFinish(iNextTest, iError);
+			}
+
+		iSmsTest.TestHarnessFailed(iError);
+		}
+	else
+		{
+		iSmsTest.TestHarnessCompleted();
+		iComplete = ETrue;
+		}
+	}