diff -r 000000000000 -r 8e480a14352b messagingfw/msgtest/integration/sms/src/T_SmsEnum.cpp --- /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 +#include +#include +#include +#include +#include "T_SmsEnum.h" +#include + +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 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 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 + }