messagingfw/msgtestfw/TestActions/Pigeon/src/CMtfTestActionCreatePigeonMessage.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/msgtestfw/TestActions/Pigeon/src/CMtfTestActionCreatePigeonMessage.cpp Mon Jan 18 20:36:02 2010 +0200
@@ -0,0 +1,165 @@
+// 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]
+// CreatePigeonMessage
+// [Action Parameters]
+// CMsvSession Session <input>: Reference to the session.
+// TMsvId ParentId <input>: Value of the parent id.
+// TMsvId ServiceId <input>: Value of the the service id.
+// TInt Time <input>: Time interval in minutes
+// for scheduling the message
+// TMsvId MessageId <output>: Value of the created message id.
+// [Action Description]
+// Creates a Pigeon message on the specified parent folder.
+// [APIs Used]
+// TMsvEntry::iMtm
+// TMsvEntry::iServiceId
+// TMsvEntry::iDate
+// TMsvEntry::Id
+// CMsvEntry::SetEntryL
+// CMsvEntry::CreateL
+// __ACTION_INFO_END__
+//
+//
+
+// System Includes
+#include <msvapi.h>
+#include <msvuids.h>
+#include <txtrich.h>
+#include <smuthdr.h>
+#include "pigeonservermtm.h"
+
+// User Includes
+#include "CMtfTestActionCreatePigeonMessage.h"
+#include "CMtfTestCase.h"
+#include "CMtfTestActionParameters.h"
+
+
+/**
+ Function : NewL
+ Description : Constructs a new CMtfTestActionCreatePigeonMessage object
+ @internalTechnology
+ @param : aTestCase :Reference to the Test case
+ @param : aActionParams :Test Action parameters
+ @return : CMtfTestAction* :a base class pointer to the newly created object
+ @pre none
+ @post: none
+*/
+CMtfTestAction* CMtfTestActionCreatePigeonMessage::NewL(CMtfTestCase& aTestCase,CMtfTestActionParameters* aActionParameters)
+ {
+ CMtfTestActionCreatePigeonMessage* self = new (ELeave) CMtfTestActionCreatePigeonMessage(aTestCase);
+ CleanupStack::PushL(self);
+ self->ConstructL(aActionParameters);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+
+/**
+ Function : CMtfTestActionCreatePigeonMessage
+ Description : Constructor
+ @internalTechnology
+ @param : aTestCase - CMtfTestCase for the CMtfTestAction base class
+ @pre none
+ @post: none
+*/
+CMtfTestActionCreatePigeonMessage::CMtfTestActionCreatePigeonMessage(CMtfTestCase& aTestCase)
+ : CMtfSynchronousTestAction(aTestCase)
+ {
+ }
+
+
+/**
+ Function : ExecuteActionL
+ Description :Creates a Pigeon Message in the specified folder.
+ @internalTechnology
+ @param : none
+ @return : void
+ @pre : none
+ @post none
+*/
+void CMtfTestActionCreatePigeonMessage::ExecuteActionL()
+ {
+ TestCase().Logger().Write(_L("CMtfTestActionCreatePigeonMessage::ExecuteActionL IN"));
+
+ // Obtain Input parameters
+ CMsvSession* paramSession = ObtainParameterReferenceL<CMsvSession>(TestCase(),ActionParameters().Parameter(0));
+ TMsvId paramParentId = ObtainValueParameterL<TMsvId>(TestCase(),ActionParameters().Parameter(1));
+ TMsvId paramServiceId = ObtainValueParameterL<TMsvId>(TestCase(),ActionParameters().Parameter(2));
+ TInt paramTime = ObtainValueParameterL<TInt>(TestCase(),ActionParameters().Parameter(3));
+
+ if(TestCase().TestStepResult() == EPass)
+ {
+ // Create a message entry
+ TMsvEntry indexEntry;
+ indexEntry.iType = KUidMsvMessageEntry;
+ indexEntry.iMtm = KUidMsgTypePigeon;
+ indexEntry.iServiceId = paramServiceId;
+ indexEntry.SetVisible(ETrue);
+ indexEntry.SetInPreparation(EFalse);
+ indexEntry.iDescription.Set(KNullDesC);
+ indexEntry.iDetails.Set(KNullDesC);
+
+ // Set schedule time
+ TTime date ;
+ date.HomeTime();
+ // If creating two or more messages for the same time (ie MSG_SCH_SEND_0009.script), they have
+ // to have exactly the same time, otherwise they will cause an assert further on. Fractions of
+ // a second are not acceptable.
+ RoundUpToSecond(date);
+ date += TTimeIntervalMinutes(paramTime);
+ indexEntry.iDate = date;
+
+ // Set message scheduling info
+ indexEntry.SetOffPeak(EFalse);
+ indexEntry.SetScheduled(EFalse);
+ indexEntry.SetSendingState(KMsvSendStateWaiting);
+
+ // Create Entry
+ CMsvEntry* entry = paramSession->GetEntryL(paramParentId);
+ CleanupStack::PushL(entry);
+
+ //Creates a new child entry owned by the context synchronously
+ entry->CreateL(indexEntry);
+ TMsvId paramMessageId = indexEntry.Id();
+
+ paramSession->CleanupEntryPushL(paramMessageId);
+ entry->SetEntryL(paramMessageId);
+
+ paramSession->CleanupEntryPop();
+ CleanupStack::PopAndDestroy(entry);
+
+ // Provide the Message Id as output of the Test Action
+ StoreParameterL<TMsvId>(TestCase(),paramMessageId,ActionParameters().Parameter(4));
+
+ TestCase().Logger().Write(_L("CMtfTestActionCreatePigeonMessage::ExecuteActionL OUT"));
+ TestCase().ActionCompletedL(*this);
+ }
+ }
+
+
+/**
+ Function : RoundUpToSecond
+ Description : On return, the passed value rounded up to the nearest second.
+ @param aTime
+ @return : void
+*/
+void CMtfTestActionCreatePigeonMessage::RoundUpToSecond(TTime& aTime)
+ {
+ TDateTime dt(aTime.DateTime());
+ dt.SetMicroSecond(0);
+ aTime = dt;
+ aTime += (TTimeIntervalSeconds) 1;
+ }