diff -r 238255e8b033 -r 84d9eb65b26f messagingappbase/smsmtm/test/src/t_smsbiofication.cpp --- a/messagingappbase/smsmtm/test/src/t_smsbiofication.cpp Fri Apr 16 14:56:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,638 +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 -#include -#include -#include -#include -#include "t_smsbiofication.h" -#include -#include - -RTest test(_L("T_SmsBiofication Testrig")); -CTrapCleanup* theCleanup; - -_LIT(KBioficationScript, "biofication.script"); -_LIT(KSmsTestFolderDetails, "Test folder"); -_LIT(KSmsTestFolderDescription, "Copied or moved message folder"); - - -CSmsBioficationTest* CSmsBioficationTest::NewLC(CSmsTestUtils& aSmsTest, const TDesC& aScriptFile, TInt& aNextTest) - { - CSmsBioficationTest* self = new (ELeave) CSmsBioficationTest(aSmsTest, aScriptFile, aNextTest); - CleanupStack::PushL(self); - - self->ConstructL(); - return self; - } - -CSmsBioficationTest::~CSmsBioficationTest() - { - delete iTestSelection; - - iSocket.Close(); - iSocketServ.Close(); - } - -CSmsBioficationTest::CSmsBioficationTest(CSmsTestUtils& aSmsTest, const TDesC& aScriptFile, TInt& aNextTest) -: CSmsTestBase(aSmsTest, aScriptFile, aNextTest), iState(EStateIdle) - { - } - -void CSmsBioficationTest::ConstructL() - { - SetTestNameL(KSmsBioficationTestName); - iSmsTest.SetLogToFile(); - - iSelection = new (ELeave) CMsvEntrySelection(); - iTestSelection = new (ELeave) CMsvEntrySelection(); - iTimer = CTestTimer::NewL(); - - User::LeaveIfError(iSocketServ.Connect()); - TProtocolDesc protoinfo; - TProtocolName protocolname(KSmsDatagram); - User::LeaveIfError(iSocketServ.FindProtocol(protocolname,protoinfo)); - - User::LeaveIfError(iSocket.Open(iSocketServ,protoinfo.iAddrFamily,protoinfo.iSockType,protoinfo.iProtocol)); - TSmsAddr smsaddr; - smsaddr.SetSmsAddrFamily(ESmsAddrSendOnly); - User::LeaveIfError(iSocket.Bind(smsaddr)); - - CActiveScheduler::Add(this); - } - -void CSmsBioficationTest::RunL() - { - CActiveScheduler::Stop(); - - iSmsTest(iStatus.Int() == KErrNone); - - iSmsTest.SetProgressL(*iOperation); - - switch (iState) - { - case EStateEnumerating: - { - RunEnumerateL(); - break; - } - case EStateCopyingToPhoneStore: - { - RunCopyToPhoneStoreL(); - break; - } - case EStateCopyingFromPhoneStore: - case EStateMovingFromPhoneStore: - case EStateDeletingFromPhoneStore: - { - RunCopyMoveDeleteFromPhoneStoreL(); - break; - } - case EStateSending: - { - ChangeMtmUidsL(*iSelection); - break; - } - default: - break; - } - iState=EStateIdle; - } - -void CSmsBioficationTest::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 CSmsBioficationTest::TestSetupL() - { - iSmsTest.Test().Next(_L("Test Setup")); - iState=EStateSettingUp; - TFullName name; - TFindProcess find(_L("watcher*")); - while (find.Next(name)==KErrNone) - { - RProcess process; - process.Open(find); - process.Terminate(KErrGeneral); - process.Close(); - } - // Create test folder - MsvEntry().SetEntryL(KMsvDraftEntryId); - TMsvEntry entry; - entry.iServiceId = iSmsTest.iSmsServiceId; - entry.SetVisible(ETrue); - entry.iMtm = KUidMsgTypeSMS; - entry.iDate.HomeTime(); - entry.iType = KUidMsvFolderEntry; - entry.iDetails.Set(KSmsTestFolderDetails); - entry.iDescription.Set(KSmsTestFolderDescription); - MsvEntry().CreateL(entry); - iTestFolderId=MsvEntry().EntryId(); - - TTime now; - now.HomeTime(); - iSmsTest.ReadScriptL(iScriptFile, KMsvNullIndexEntryId, *iSelection, now); - ChangeMtmUidsL(*iSelection); - - iState=EStateIdle; - - /* - User::LeaveIfError(iSocketServ.Connect()); - TProtocolDesc protoinfo; - TProtocolName protocolname(KSmsDatagram); - User::LeaveIfError(iSocketServ.FindProtocol(protocolname,protoinfo)); - - User::LeaveIfError(iSocket.Open(iSocketServ,protoinfo.iAddrFamily,protoinfo.iSockType,protoinfo.iProtocol)); - TSmsAddr smsaddr; - smsaddr.SetSmsAddrFamily(ESmsAddrSendOnly); - User::LeaveIfError(iSocket.Bind(smsaddr)); - */ - } - -void CSmsBioficationTest::TestEnumerateL() - { - iSmsTest.Test().Next(_L("Enumerate Phone Stores")); - iState = EStateEnumerating; - - iTestSelection->Reset(); - iTestSelection->AppendL(iSmsTest.iSmsServiceId); - - delete iOperation; - iOperation = NULL; - iOperation = Session().TransferCommandL(*iTestSelection, ESmsMtmCommandEnumeratePhoneStores, TPtrC8(), iStatus); - SetActive(); - CActiveScheduler::Start(); - } - -void CSmsBioficationTest::TestCopyToPhoneStoreL() - { - iSmsTest.Test().Next(_L("Copy To Phone Store")); - iState = EStateCopyingToPhoneStore; - - delete iTestSelection; - iTestSelection = NULL; - iTestSelection=iSelection->CopyL(); - iTestSelection->InsertL(0,iSmsTest.iSmsServiceId); - - delete iOperation; - iOperation = NULL; - iOperation = Session().TransferCommandL(*iTestSelection, ESmsMtmCommandCopyToPhoneStore, TPtrC8(), iStatus); - SetActive(); - CActiveScheduler::Start(); - } - -void CSmsBioficationTest::TestCopyFromPhoneStoreL() - { - iSmsTest.Test().Next(_L("Copy From Phone Store")); - iState = EStateCopyingFromPhoneStore; - - DeleteEntriesFromTestFolderL(); - - MsvEntry().SetEntryL(iEnumerationFolderId); - - delete iTestSelection; - iTestSelection = NULL; - iTestSelection = MsvEntry().ChildrenL(); - iTestSelection->InsertL(0,iSmsTest.iSmsServiceId); - - TPckgBuf pkg(iTestFolderId); - - delete iOperation; - iOperation = NULL; - iOperation = Session().TransferCommandL(*iTestSelection, ESmsMtmCommandCopyFromPhoneStore, pkg, iStatus); - SetActive(); - CActiveScheduler::Start(); - } - -void CSmsBioficationTest::TestMoveFromPhoneStoreL() - { - iSmsTest.Test().Next(_L("Move From Phone Store")); - iState = EStateMovingFromPhoneStore; - - DeleteEntriesFromTestFolderL(); - - MsvEntry().SetEntryL(iEnumerationFolderId); - delete iTestSelection; - iTestSelection = NULL; - iTestSelection = MsvEntry().ChildrenL(); - iTestSelection->InsertL(0,iSmsTest.iSmsServiceId); - - TPckgBuf pkg(iTestFolderId); - - delete iOperation; - iOperation = NULL; - iOperation = Session().TransferCommandL(*iTestSelection, ESmsMtmCommandMoveFromPhoneStore, pkg, iStatus); - SetActive(); - CActiveScheduler::Start(); - } - -void CSmsBioficationTest::TestDeleteFromPhoneStoreL() - { - iSmsTest.Test().Next(_L("Delete From SIM")); - iState = EStateDeletingFromPhoneStore; - - MsvEntry().SetEntryL(iEnumerationFolderId); - delete iTestSelection; - iTestSelection = NULL; - iTestSelection = MsvEntry().ChildrenL(); - iTestSelection->InsertL(0,iSmsTest.iSmsServiceId); - - delete iOperation; - iOperation = NULL; - iOperation = Session().TransferCommandL(*iTestSelection, ESmsMtmCommandDeleteFromPhoneStore, TPtrC8(), iStatus); - SetActive(); - CActiveScheduler::Start(); - } - -void CSmsBioficationTest::TestSendL() - { - iSmsTest.Test().Next(_L("Send")); - iState = EStateSending; - - iSmsTest.Test().Next(_L("Test Send Entry\n")); - - DeleteEntriesFromTestFolderL(); - - for (TInt i=iSelection->Count()-1; i>=0; i--) - { - MsvEntry().SetEntryL(iSelection->At(i)); - TMsvEntry entry=MsvEntry().Entry(); - if (entry.Parent()!=KMsvGlobalOutBoxIndexEntryId) - iSelection->Delete(i); - else - { - entry.iMtm=KUidMsgTypeSMS; - MsvEntry().ChangeL(entry); - MsvEntry().SetEntryL(KMsvGlobalOutBoxIndexEntryId); - MsvEntry().CopyL(iSelection->At(i),iTestFolderId); - } - } - - MsvEntry().SetEntryL(iTestFolderId); - delete iTestSelection; - iTestSelection = NULL; - iTestSelection = MsvEntry().ChildrenL(); - - delete iOperation; - iOperation = NULL; - iOperation = MsvEntry().CopyL(*iTestSelection, iSmsTest.iSmsServiceId, iStatus); - - SetActive(); - CActiveScheduler::Start(); - } - -void CSmsBioficationTest::TestDeleteEnumerationFolderL() - { - iSmsTest.Test().Next(_L("Test Delete Enumeration Folder\n")); - - iTestSelection->Reset(); - CMsvOperationWait* wait = CMsvOperationWait::NewLC(); - wait->Start(); - - iSmsTest.SetEntryL(iEnumerationFolderId); - iSmsTest.SetEntryL(iSmsTest.Entry().Parent()); - - CMsvOperation* op = iSmsTest.iMsvEntry->DeleteL(iEnumerationFolderId, 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 - iState = EStateIdle; - } - - -void CSmsBioficationTest::RunAutoL() - { - iSmsTest.SetLogToConsole(ETrue); - - iSmsTest.TestStart(++iNextTest, _L("Test 1 - Setup")); - TestSetupL(); - User::LeaveIfError(iStatus.Int()); - iSmsTest.TestFinish(iNextTest, KErrNone); - - - - iSmsTest.TestStart(++iNextTest, _L("Test 1 - Enumerate")); - TestEnumerateL(); - User::LeaveIfError(iStatus.Int()); - iSmsTest.TestFinish(iNextTest, KErrNone); - - - - if (iTestSelection->Count()) - { - iSmsTest.TestStart(++iNextTest, _L("Test 1 - Delete From Phone Store")); - TestDeleteFromPhoneStoreL(); - User::LeaveIfError(iStatus.Int()); - iSmsTest.TestFinish(iNextTest, KErrNone); - } - - - - iSmsTest.TestStart(++iNextTest, _L("Test 1 - Enumerate")); - TestEnumerateL(); - User::LeaveIfError(iStatus.Int()); - test(iTestSelection->Count()==0); - iSmsTest.TestFinish(iNextTest, KErrNone); - - const TInt KWaitAfterEnum = 10; - const TInt KWaitAfterSend = 10; - iSmsTest.Printf(_L("Waiting %d seconds after enum...\n"), KWaitAfterEnum); - User::After(KWaitAfterEnum * 1000000); - iSmsTest.Printf(_L("Finished waiting\n")); - - - - iSmsTest.TestStart(++iNextTest, _L("Test 2 - Copy to Phone Store")); - TestCopyToPhoneStoreL(); - User::LeaveIfError(iStatus.Int()); - iSmsTest.TestFinish(iNextTest, KErrNone); - - - - - iSmsTest.TestStart(++iNextTest, _L("Test 2 - Enumerate")); - TestEnumerateL(); - User::LeaveIfError(iStatus.Int()); - test(CompareSelectionsL(*iSelection,*iTestSelection)); - iSmsTest.TestFinish(iNextTest, KErrNone); - - - - iSmsTest.TestStart(++iNextTest, _L("Test 2 - Copy From Phone Store")); - TestCopyFromPhoneStoreL(); - User::LeaveIfError(iStatus.Int()); - test(CompareSelectionsL(*iSelection,*iTestSelection)); - iSmsTest.TestFinish(iNextTest, KErrNone); - - - - iSmsTest.TestStart(++iNextTest, _L("Test 2 - Delete From Phone Store")); - TestDeleteFromPhoneStoreL(); - User::LeaveIfError(iStatus.Int()); - iSmsTest.TestFinish(iNextTest, KErrNone); - - - - iSmsTest.TestStart(++iNextTest, _L("Test 2 - Enumerate")); - TestEnumerateL(); - User::LeaveIfError(iStatus.Int()); - test(iTestSelection->Count()==0); - iSmsTest.TestFinish(iNextTest, KErrNone); - - - - iSmsTest.TestStart(++iNextTest, _L("Test 3 - Send")); - TestSendL(); - User::LeaveIfError(iStatus.Int()); - iSmsTest.TestFinish(iNextTest, KErrNone); - - iSmsTest.Printf(_L("Waiting %d seconds after send...\n"), KWaitAfterSend); - User::After(KWaitAfterSend * 1000000); - iSmsTest.Printf(_L("Finished waiting\n")); - - iSmsTest.TestStart(++iNextTest, _L("Test 2 - Enumerate")); - TestEnumerateL(); - User::LeaveIfError(iStatus.Int()); - test(CompareSelectionsL(*iSelection,*iTestSelection)); - iSmsTest.TestFinish(iNextTest, KErrNone); - - iSmsTest.TestStart(++iNextTest, _L("Test 3 - Move from Phone Store")); - TestMoveFromPhoneStoreL(); - User::LeaveIfError(iStatus.Int()); - test(CompareSelectionsL(*iSelection,*iTestSelection)); - iSmsTest.TestFinish(iNextTest, KErrNone); - - iSmsTest.TestStart(++iNextTest, _L("Test 2 - Enumerate")); - TestEnumerateL(); - User::LeaveIfError(iStatus.Int()); - test(iTestSelection->Count()==0); - iSmsTest.TestFinish(iNextTest, KErrNone); - - iSmsTest.TestStart(++iNextTest, _L("Test 2 - Delete Enumeration Folder")); - TestDeleteEnumerationFolderL(); - User::LeaveIfError(iStatus.Int()); - iSmsTest.TestFinish(iNextTest, KErrNone); - } - -void CSmsBioficationTest::ShowMenuL() - { - } - -void CSmsBioficationTest::DeleteEntriesFromTestFolderL() - { - MsvEntry().SetEntryL(iTestFolderId); - delete iTestSelection; - iTestSelection = NULL; - iTestSelection = MsvEntry().ChildrenL(); - if (iTestSelection->Count()) - { - CMsvOperationWait* wait = CMsvOperationWait::NewLC(); - wait->Start(); - CMsvOperation* op=MsvEntry().DeleteL(*iTestSelection,wait->iStatus); - CleanupStack::PushL(op); - CActiveScheduler::Start(); - User::LeaveIfError(wait->iStatus.Int()); - iSmsTest.SetProgressL(*op); - User::LeaveIfError(iSmsTest.iProgress.iError); - CleanupStack::PopAndDestroy(2); //wait, op - iTestSelection->Reset(); - } - } - -void CSmsBioficationTest::ChangeMtmUidsL(CMsvEntrySelection& aSelection) - { - for (TInt i=0; iAt(j)); - if (thesame) - selection2->Delete(j); - } - CleanupStack::PopAndDestroy(); - } - return thesame; - } - -TBool CSmsBioficationTest::CompareEntriesL(TMsvId aId1, TMsvId aId2) - { - TBool thesame=iSmsTest.AreMessagesSameTextL(aId1,aId2); - if (thesame) - { - MsvEntry().SetEntryL(aId1); - TMsvEntry entry1=MsvEntry().Entry(); - MsvEntry().SetEntryL(aId2); - TMsvEntry entry2=MsvEntry().Entry(); - thesame=(entry1.iBioType==entry2.iBioType) && (entry1.iMtm==entry2.iMtm); - } - return thesame; - } - -void CSmsBioficationTest::RunEnumerateL() - { - TInt err = iStatus.Int(); - - if (err == KErrNone) - { - err = iSmsTest.iProgress.iError; - iStatus = err; - - if (err == KErrNone) - { - iEnumerationFolderId=iSmsTest.iProgress.iEnumerateFolder; - MsvEntry().SetEntryL(iEnumerationFolderId); - delete iTestSelection; - iTestSelection = NULL; - iTestSelection = MsvEntry().ChildrenL(); - - iSmsTest.Printf(_L("%d message(s) on SIM. %d message(s) now contained in folder %d.\n"), iSmsTest.iProgress.iMsgCount, iTestSelection->Count(), iEnumerationFolderId); - iSmsTest.DisplayMessagesL(*iTestSelection); - } - } - - iSmsTest.Printf(_L("Enumerate Phone Store completed with %d\n"), err); - iState = EStateIdle; - - delete iOperation; - iOperation = NULL; - } - -void CSmsBioficationTest::RunCopyToPhoneStoreL() - { - TInt err = iStatus.Int(); - - if (err == KErrNone) - { - err = iSmsTest.iProgress.iError; - } - - iSmsTest.Printf(_L("Copy To SIM completed with error %d\n"), err); - - iState = EStateIdle; - } - -void CSmsBioficationTest::RunCopyMoveDeleteFromPhoneStoreL() - { - TInt err = iStatus.Int(); - - if (err == KErrNone) - { - err = iSmsTest.iProgress.iError; - } - - MsvEntry().SetEntryL(iTestFolderId); - delete iTestSelection; - iTestSelection = NULL; - iTestSelection = MsvEntry().ChildrenL(); - - switch (iState) - { - case EStateCopyingFromPhoneStore: - iSmsTest.Printf(_L("Copy From Phone Store completed with error %d\n"), err); - break; - case EStateMovingFromPhoneStore: - iSmsTest.Printf(_L("Move From Phone Store completed with error %d\n"), err); - break; - case EStateDeletingFromPhoneStore: - iSmsTest.Printf(_L("Delete From Phone Store completed with error %d\n"), err); - break; - default: - break; - } - - iState = EStateIdle; - } - -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(); - - CSmsBioficationTest* bioficationTest = CSmsBioficationTest::NewLC(*smsTest, KBioficationScript, nextTest); - - smsTest->WaitForInitializeL(); - - bioficationTest->StartL(); - - CleanupStack::PopAndDestroy(3); //bioficationTest, 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); - } -