--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/msgtest/integration/sms/src/T_SmsEnum.cpp Mon Jan 18 20:36:02 2010 +0200
@@ -0,0 +1,422 @@
+// 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 <e32test.h>
+#include <e32uid.h>
+#include <e32std.h>
+#include <smuthdr.h>
+#include <smscmds.h>
+#include "T_SmsEnum.h"
+#include <txtrich.h>
+
+void CSmsEnumTest::TestCopyFromSimL()
+ {
+ iSmsTest.Test().Next(_L("Copy From SIM"));
+ iState = EStateCopyFromSim;
+
+ MsvEntry().SetEntryL(iSmsTest.iProgress.iEnumerateFolder);
+
+ delete iSelection;
+ iSelection = MsvEntry().ChildrenL();
+ iSelection->InsertL(0,iSmsTest.iSmsServiceId);
+
+ TPckgBuf<TMsvId> pkg(KMsvGlobalInBoxIndexEntryId);
+
+ delete iOperation;
+ iOperation = Session().TransferCommandL(*iSelection, ESmsMtmCommandCopyFromPhoneStore, pkg, iStatus);
+ SetActive();
+ CActiveScheduler::Start();
+ }
+
+void CSmsEnumTest::TestMoveFromSimL()
+ {
+ iSmsTest.Test().Next(_L("Move From SIM"));
+ iState = EStateMoveFromSim;
+
+ MsvEntry().SetEntryL(iSmsTest.iProgress.iEnumerateFolder);
+
+ delete iSelection;
+ iSelection = MsvEntry().ChildrenL();
+ iSelection->InsertL(0,iSmsTest.iSmsServiceId);
+
+ TPckgBuf<TMsvId> pkg(KMsvGlobalInBoxIndexEntryId);
+
+ delete iOperation;
+ iOperation = Session().TransferCommandL(*iSelection, ESmsMtmCommandMoveFromPhoneStore, pkg, iStatus);
+ SetActive();
+ CActiveScheduler::Start();
+ }
+
+void CSmsEnumTest::TestDeleteFromSimL()
+ {
+ iSmsTest.Test().Next(_L("Delete From SIM"));
+ iState = EStateDeleteFromSim;
+
+ MsvEntry().SetEntryL(iSmsTest.iProgress.iEnumerateFolder);
+
+ delete iSelection;
+ iSelection = MsvEntry().ChildrenL();
+ iSelection->InsertL(0,iSmsTest.iSmsServiceId);
+
+ delete iOperation;
+ iOperation = Session().TransferCommandL(*iSelection, ESmsMtmCommandDeleteFromPhoneStore, TPtrC8(), iStatus);
+ SetActive();
+ CActiveScheduler::Start();
+ }
+
+void CSmsEnumTest::TestCopyToSimL()
+ {
+ iSmsTest.Test().Next(_L("Copy to SIM"));
+ iState = EStateCopyToSim;
+
+ iSelection->Reset();
+
+ TTime now;
+ now.HomeTime();
+ iSelection->Reset();
+ iSmsTest.ReadScriptL(iScriptFile, KMsvGlobalOutBoxIndexEntryId, *iSelection, now);
+ iSelection->InsertL(0,iSmsTest.iSmsServiceId);
+
+ iSmsTest(iSelection->Count());
+
+ delete iOperation;
+ iOperation = Session().TransferCommandL(*iSelection, ESmsMtmCommandCopyToPhoneStore, TPtrC8(), iStatus);
+ SetActive();
+ CActiveScheduler::Start();
+ }
+
+void CSmsEnumTest::TestEnumerateL()
+ {
+ iSmsTest.Test().Next(_L("Enumerate SIM"));
+ iState = EStateEnumerating;
+
+ iSelection->Reset();
+ iSelection->AppendL(iSmsTest.iSmsServiceId);
+
+ delete iOperation;
+ iOperation = Session().TransferCommandL(*iSelection, ESmsMtmCommandEnumeratePhoneStores, TPtrC8(), iStatus);
+ SetActive();
+ CActiveScheduler::Start();
+ }
+
+CSmsEnumTest::CSmsEnumTest(CSmsTestUtils& aSmsTest, const TDesC& aScriptFile, TInt& aNextTest)
+: CSmsTestBase(aSmsTest, aScriptFile, aNextTest), iState(EStateWaiting)
+ {
+ }
+
+void CSmsEnumTest::RunAutoL()
+ {
+ iSmsTest.TestStart(++iNextTest, _L("Copy to SIM"));
+ TestCopyToSimL();
+ User::LeaveIfError(iStatus.Int());
+ iSmsTest.TestFinish(iNextTest, KErrNone);
+
+ iSmsTest.TestStart(++iNextTest, _L("Enumerate"));
+ TestEnumerateL();
+ User::LeaveIfError(iStatus.Int());
+ iSmsTest.TestFinish(iNextTest, KErrNone);
+
+ if (iSelection->Count())
+ {
+ iSmsTest.TestStart(++iNextTest, _L("Delete Remote Entries"));
+ TestDeleteRemoteEntryL();
+ User::LeaveIfError(iStatus.Int());
+ iSmsTest.TestFinish(iNextTest, KErrNone);
+ }
+
+ iSmsTest.TestStart(++iNextTest, _L("Enumerate"));
+ TestEnumerateL();
+ User::LeaveIfError(iStatus.Int());
+ iSmsTest.TestFinish(iNextTest, KErrNone);
+
+ if (iSelection->Count())
+ {
+ iSmsTest.TestStart(++iNextTest, _L("Move from SIM"));
+ TestCopyFromSimL();
+ User::LeaveIfError(iStatus.Int());
+ iSmsTest.TestFinish(iNextTest, KErrNone);
+ }
+
+ iSmsTest.TestStart(++iNextTest, _L("Enumerate"));
+ TestEnumerateL();
+ User::LeaveIfError(iStatus.Int());
+ iSmsTest.TestFinish(iNextTest, KErrNone);
+
+ if (iSelection->Count())
+ {
+ iSmsTest.TestStart(++iNextTest, _L("Move from SIM"));
+ TestMoveFromSimL();
+ User::LeaveIfError(iStatus.Int());
+ iSmsTest.TestFinish(iNextTest, KErrNone);
+ }
+ }
+
+void CSmsEnumTest::ConstructL()
+ {
+ SetTestNameL(KSmsEnumTestName);
+ iSmsTest.SetLogToFile();
+
+ iSelection = new (ELeave) CMsvEntrySelection();
+ iTimer = CTestTimer::NewL();
+ CActiveScheduler::Add(this);
+ }
+
+void CSmsEnumTest::ShowMenuL()
+ {
+ iSmsTest.ResetMenu();
+
+ iSmsTest.AppendToMenuL(_L("Enumerate SIM"));
+ iSmsTest.AppendToMenuL(_L("Copy To SIM"));
+ iSmsTest.AppendToMenuL(_L("Display Log"));
+ iSmsTest.AppendToMenuL(_L("Clear Log"));
+
+ TInt result = iSmsTest.DisplayMenu(_L("SMS Enumerate Sim Test"));
+
+ if (result <= 0)
+ return;
+
+ switch (result)
+ {
+ case 1:
+ TestEnumerateL();
+ break;
+ case 2:
+ TestCopyToSimL();
+ break;
+ case 3:
+ DisplayLogL();
+ break;
+ case 4:
+ ClearLogL();
+ break;
+ default:
+ User::Leave(KErrArgument);
+ break;
+ }
+
+ ShowMenuL();
+ }
+
+CSmsEnumTest::~CSmsEnumTest()
+ {
+ }
+
+CSmsEnumTest* CSmsEnumTest::NewLC(CSmsTestUtils& aSmsTest, const TDesC& aScriptFile, TInt& aNextTest)
+ {
+ CSmsEnumTest* self = new (ELeave) CSmsEnumTest(aSmsTest, aScriptFile, aNextTest);
+ CleanupStack::PushL(self);
+
+ self->ConstructL();
+ return self;
+ }
+
+void CSmsEnumTest::RunL()
+ {
+ CActiveScheduler::Stop();
+
+ iSmsTest(iStatus.Int() == KErrNone);
+
+ iSmsTest.SetProgressL(*iOperation);
+
+ switch (iState)
+ {
+ case EStateEnumerating:
+ {
+ DoRunEnumerateL();
+ break;
+ }
+ case EStateCopyFromSim:
+ case EStateMoveFromSim:
+ case EStateDeleteFromSim:
+ {
+ DoRunCopyMoveDeleteFromSimL();
+ break;
+ }
+ case EStateCopyToSim:
+ {
+ DoRunCopyToSimL();
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+
+ delete iOperation;
+ iOperation = NULL;
+ }
+
+void CSmsEnumTest::DoRunCopyToSimL()
+ {
+ TInt err = iStatus.Int();
+
+ if (err == KErrNone)
+ {
+ err = iSmsTest.iProgress.iError;
+ }
+
+ iSmsTest.Printf(_L("Copy To SIM completed with error %d\n"), err);
+
+ iState = EStateWaiting;
+
+ if (!iSmsTest.RunAuto())
+ {
+ iSmsTest.Printf(_L("\nPress any key to continue...\n"));
+ iSmsTest.Test().Getch();
+ }
+ }
+
+void CSmsEnumTest::DoRunCopyMoveDeleteFromSimL()
+ {
+ TInt err = iStatus.Int();
+
+ if (err == KErrNone)
+ {
+ err = iSmsTest.iProgress.iError;
+ }
+
+ switch (iState)
+ {
+ case EStateCopyFromSim:
+ iSmsTest.Printf(_L("Copy From SIM completed with error %d\n"), err);
+ break;
+ case EStateMoveFromSim:
+ iSmsTest.Printf(_L("Move From SIM completed with error %d\n"), err);
+ break;
+ case EStateDeleteFromSim:
+ iSmsTest.Printf(_L("Delete From SIM completed with error %d\n"), err);
+ break;
+ default:
+ break;
+ }
+
+ iState = EStateWaiting;
+
+ if (!iSmsTest.RunAuto())
+ {
+ iSmsTest.Printf(_L("\nPress any key to continue...\n"));
+ iSmsTest.Test().Getch();
+ }
+ }
+
+void CSmsEnumTest::DoRunEnumerateL()
+ {
+ TInt err = iStatus.Int();
+
+ if (err == KErrNone)
+ {
+ err = iSmsTest.iProgress.iError;
+ iStatus = err;
+
+ if (err == KErrNone)
+ {
+ MsvEntry().SetEntryL(iSmsTest.iProgress.iEnumerateFolder);
+ delete iSelection;
+ iSelection = MsvEntry().ChildrenL();
+
+ iSmsTest.Printf(_L("%d message(s) on SIM. %d message(s) now contained in folder %d.\n"), iSmsTest.iProgress.iMsgCount, iSelection->Count(), iSmsTest.iProgress.iEnumerateFolder);
+ iSmsTest.DisplayMessagesL(*iSelection);
+ }
+ }
+
+ iSmsTest.Printf(_L("Enumerate SIM completed with %d\n"), err);
+ iState = EStateWaiting;
+
+ delete iOperation;
+ iOperation = NULL;
+
+ if (!iSmsTest.RunAuto())
+ {
+ iSmsTest.Printf(_L("\nPress any key to continue...\n"));
+ iSmsTest.Test().Getch();
+
+ if (iSmsTest.iProgress.iMsgCount)
+ ShowMenuAfterEnumerateL();
+ }
+ }
+
+void CSmsEnumTest::ShowMenuAfterEnumerateL()
+ {
+ iSmsTest.ResetMenu();
+
+ iSmsTest.AppendToMenuL(_L("Copy From Sim To Inbox"));
+ iSmsTest.AppendToMenuL(_L("Move From Sim To Inbox"));
+ iSmsTest.AppendToMenuL(_L("Delete From Sim"));
+
+ TInt result = iSmsTest.DisplayMenu(_L("What to do with enumerated messages?"));
+
+ if (result <= 0)
+ return;
+
+ switch (result)
+ {
+ case 1:
+ TestCopyFromSimL();
+ break;
+ case 2:
+ TestMoveFromSimL();
+ break;
+ case 3:
+ TestDeleteFromSimL();
+ break;
+ default:
+ User::Leave(KErrArgument);
+ break;
+ }
+ }
+
+void CSmsEnumTest::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 CSmsEnumTest::TestDeleteRemoteEntryL()
+ {
+ iSmsTest.Test().Next(_L("Test Delete Remote Entry\n"));
+
+ CMsvOperationWait* wait = CMsvOperationWait::NewLC();
+ wait->Start();
+
+ iSmsTest.SetEntryL(iSmsTest.iProgress.iEnumerateFolder);
+ iSmsTest.SetEntryL(iSmsTest.Entry().Parent());
+
+ CMsvOperation* op = iSmsTest.iMsvEntry->DeleteL(iSmsTest.iProgress.iEnumerateFolder, wait->iStatus);
+ CleanupStack::PushL(op);
+
+ CActiveScheduler::Start();
+
+ iSmsTest.Printf(_L("Remote DeleteL() completed with %d\n"), wait->iStatus.Int());
+
+ User::LeaveIfError(wait->iStatus.Int());
+
+ iSmsTest.SetProgressL(*op);
+
+ iSmsTest.Printf(_L("Operation completed with %d, msg count %d\n"), iSmsTest.iProgress.iError, iSmsTest.iProgress.iMsgCount);
+ User::LeaveIfError(iSmsTest.iProgress.iError);
+
+ CleanupStack::PopAndDestroy(2); //wait, op
+ }