--- 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 <e32test.h>
-#include <e32uid.h>
-#include <e32std.h>
-#include <smuthdr.h>
-#include <smscmds.h>
-#include "t_smsbiofication.h"
-#include <txtrich.h>
-#include <biouids.h>
-
-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<TMsvId> 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<TMsvId> 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; i<aSelection.Count(); i++)
- {
- MsvEntry().SetEntryL(aSelection[i]);
- TMsvEntry entry=MsvEntry().Entry();
- if (entry.iBioType!=EBioMsgIdUnknown)
- {
- entry.iMtm=KUidBIOMessageTypeMtm; // The test utils do not set the correct MTM uid for BIO messages
- MsvEntry().ChangeL(entry);
- }
- }
- }
-
-TBool CSmsBioficationTest::CompareSelectionsL(const CMsvEntrySelection& aSelection1,const CMsvEntrySelection& aSelection2)
- {
- TInt count1=aSelection1.Count();
- TInt count2=aSelection2.Count();
- iSmsTest.Printf(_L("Comparing selections, 1st msg count %d, 2nd msg count %d\n"), count1,count2);
- TBool thesame=count1==count2;
- for (TInt i=0; thesame && (i<count1); i++)
- {
- CMsvEntrySelection* selection2=aSelection2.CopyLC();
- thesame=EFalse;
- for (TInt j=0; (!thesame) && (j<count2); j++)
- {
- thesame=CompareEntriesL(aSelection1[i],selection2->At(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);
- }
-