diff -r 9f5ae1728557 -r db3f5fa34ec7 messagingfw/msgtestfw/TestActions/Email/Imap4/src/CMtfTestActionCreateMailSelection.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/msgtestfw/TestActions/Email/Imap4/src/CMtfTestActionCreateMailSelection.cpp Wed Nov 03 22:41:46 2010 +0530
@@ -0,0 +1,184 @@
+// Copyright (c) 2004-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:
+// __ACTION_INFO_BEGIN__
+// [Action Name]
+// CreateMailSelection
+// [Action Parameters]
+// CMsvSession Session : Reference to the session.
+// TMsvId ParentId : Value of the parent folder ID
+// CMsvSelection EvenSelection : Reference to the created
+// even selection.
+// CMsvSelection OddSelection : Reference to the created
+// odd selection.
+// [Action Description]
+// Creates two selections of IMAP4 messages. The Test Action first creates a
+// selection of all IMAP4 messages under the parent folder, then copies the
+// Message Ids from the selection into 2 seperate message selections where one
+// selection has all the message IDs in the odd position in the main selection
+// and the other has the message Ids in the even position.
+// These two message selections can be used as inputs to Test Actions related
+// to IMAP4 commands which require a mail selection is requried as an input.
+// [APIs Used]
+// CMsvEntry::SetEntryL
+// CMsvEntry::SetSortTypeL
+// CMsvEntry::ChildrenWithMtmL
+// CMsvEntrySelection::AppendL
+// __ACTION_INFO_END__
+//
+//
+
+/**
+ @file
+ @internalTechnology
+*/
+
+// EPOC include
+#include
+#include
+
+
+// User include
+#include "CMtfTestActionCreateMailSelection.h"
+#include "CMtfTestCase.h"
+#include "CMtfTestActionParameters.h"
+
+
+
+/**
+ NewL()
+ Constructs a CMtfTestActionCreateMailSelection object. Uses two phase
+ construction and leaves nothing on the CleanupStack.
+ @internalTechnology
+ @param aTestCase Test Case to which this Test Action belongs
+ @param aActionParameters Action parameters, must not be NULL
+ @return Created object of type CMtfTestActionCreateMailSelection
+ @pre None
+ @post CMtfTestActionCreateMailSelection object is created
+*/
+CMtfTestAction* CMtfTestActionCreateMailSelection::
+ NewL(CMtfTestCase& aTestCase,CMtfTestActionParameters* aActionParameters)
+ {
+
+ CMtfTestActionCreateMailSelection* self =
+ new (ELeave) CMtfTestActionCreateMailSelection(aTestCase);
+
+ CleanupStack::PushL(self);
+ self->ConstructL(aActionParameters);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+
+/**
+ CMtfTestActionCreateMailSelection constructor
+ Calls the base class' constructor
+ @internalTechnology
+ @param aTestCase Test Case to which this Test Action belongs
+ @pre None
+ @post None
+*/
+CMtfTestActionCreateMailSelection::CMtfTestActionCreateMailSelection(CMtfTestCase& aTestCase)
+ : CMtfSynchronousTestAction(aTestCase)
+ {
+ }
+
+
+/**
+ Function : ExecuteActionL
+ Creates a selection of all IMAP4 mails present in the parent folder, then copies the
+ Message Ids from the selection into 2 seperate message selections where one
+ selection has all the message IDs in the odd position in the main selection
+ and the other has the message Ids in the even position. The two message selections
+ created are stored as output parameters of this Test Action.
+ @internalTechnology
+ @pre None
+ @post The third and the fourth parameters of the section in the .ini file corresponding
+ to the instance of this test action should get associated with the even and the
+ odd message selections objects respectively. These two message selections can be
+ used as inputs to Test Actions related to IMAP4 commands which require a
+ mail selection is requried as an input.
+*/
+void CMtfTestActionCreateMailSelection::ExecuteActionL()
+ {
+ TestCase().INFO_PRINTF2(_L("Test Action %S start..."), &KTestActionCreateMailSelection);
+ CMsvSession* paramSession = ObtainParameterReferenceL(TestCase(),
+ ActionParameters().Parameter(0));
+
+ TMsvId paramParentId = ObtainValueParameterL(TestCase(),
+ ActionParameters().Parameter(1));
+
+
+ /***********************************************************************************
+ Create a selection of all IMAP4 messages in the parent folder. Create two new message
+ selection objects. Loop thru all the messages in the IMAP4 message selection, append
+ the Ids of messages present at odd index into one selection and those present at even
+ index into another selection. The two message selections are stored as ouput paramters
+ of this test action.
+ ***********************************************************************************/
+
+
+ // Set the context to the parent folder
+ CMsvEntry* entry = CMsvEntry::NewL(*paramSession,paramParentId,
+ TMsvSelectionOrdering(KMsvNoGrouping,
+ EMsvSortByNone,ETrue
+ )
+ );
+
+ CleanupStack::PushL(entry);
+ entry->SetEntryL(paramParentId);
+
+ // Create a selection of all IMAP4 messages in the parent folder
+ TMsvSelectionOrdering order;
+ order.SetShowInvisibleEntries(ETrue);
+ entry->SetSortTypeL(order);
+ CMsvEntrySelection* selection = entry->ChildrenWithMtmL(KUidMsgTypeIMAP4);
+ CleanupStack::PushL(selection);
+
+ // Create a message selection to store message Ids at even index in the main selection
+ CMsvEntrySelection* evenSelection = new (ELeave) CMsvEntrySelection;
+ CleanupStack::PushL(evenSelection);
+
+ // Create a message selection to store message Ids at odd index in the main selection
+ CMsvEntrySelection* oddSelection = new (ELeave) CMsvEntrySelection;
+ CleanupStack::PushL(oddSelection);
+
+ // Copy Message Ids into seperate selections based on their position (even / odd)
+ for(TInt i=0 ; iCount(); i++)
+ {
+ if((i%2)== 0)
+ {
+ evenSelection->AppendL(selection->At(i));
+ }
+ else
+ {
+ oddSelection->AppendL(selection->At(i));
+ }
+ }
+
+ // Pop the mail selection objects before storing them as ouput parameters
+ CleanupStack::Pop(oddSelection);
+ CleanupStack::Pop(evenSelection);
+
+ // Store the two message selections as output parameters of the Test Action
+ StoreParameterL(TestCase(),*evenSelection,
+ ActionParameters().Parameter(2));
+
+ StoreParameterL(TestCase(),*oddSelection,
+ ActionParameters().Parameter(3));
+ CleanupStack::PopAndDestroy(selection);
+ CleanupStack::PopAndDestroy(entry);
+
+ TestCase().INFO_PRINTF2(_L("Test Action %S completed."), &KTestActionCreateMailSelection);
+ TestCase().ActionCompletedL(*this);
+ }