--- /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;
+ }
+ }