diff -r 000000000000 -r 8e480a14352b messagingfw/msgtestfw/TestActions/Base/src/CMtfTestActionCompareEntryWithFile.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/msgtestfw/TestActions/Base/src/CMtfTestActionCompareEntryWithFile.cpp Mon Jan 18 20:36:02 2010 +0200 @@ -0,0 +1,170 @@ +// 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] +// CreateEmailOverSmsMessage ????? +// [Action Parameters] +// Session : Reference to the session. ???? +// ParentId : Value of the parent id. +// ServiceId : Value of the the service id. +// (ConfigIndexHeader) : Value of config index for SMS header settings. Default is 0. +// MessageId : Value of the created message id. +// [Action Description] +// Creates a message on the specified parent. +// [APIs Used] +// __ACTION_INFO_END__ +// +// + +// +#include "CMtfTestActionCompareEntryWithFile.h" +#include "CMtfTestCase.h" +#include "CMtfTestActionParameters.h" +#include "CMtfTestActionUtilsConfigFileParser.h" +#include +#include +#include +#include +#include + + +_LIT(KBodyText, "BodyText"); + +CMtfTestAction* CMtfTestActionCompareEntryWithFile::NewL(CMtfTestCase& aTestCase,CMtfTestActionParameters* aActionParameters) + { + CMtfTestActionCompareEntryWithFile* self = new (ELeave) CMtfTestActionCompareEntryWithFile(aTestCase); + CleanupStack::PushL(self); + self->ConstructL(aActionParameters); + CleanupStack::Pop(self); + return self; + } + + +CMtfTestActionCompareEntryWithFile::CMtfTestActionCompareEntryWithFile(CMtfTestCase& aTestCase) + : CMtfSynchronousTestAction(aTestCase) + { + } + +void CMtfTestActionCompareEntryWithFile::ExecuteActionL() + { + TestCase().Logger().Write(_L("CMtfTestActionCompareEntryWithFile::ExecuteActionL IN")); + TInt paramCount = ActionParameters().Count(); + if( paramCount != 3) + { + User::Leave(KErrArgument); + } + + CMsvSession* paramSession = ObtainParameterReferenceL(TestCase(),ActionParameters().Parameter(0)); + TMsvId paramEntryId = ObtainValueParameterL(TestCase(),ActionParameters().Parameter(1)); + HBufC* paramFilePath = ObtainParameterReferenceL(TestCase(),ActionParameters().Parameter(2));; + + CMsvEntry* entry = CMsvEntry::NewL(*paramSession, paramEntryId,TMsvSelectionOrdering()); + CleanupStack::PushL(entry); + + if ( EqualL( (*entry) , (*paramFilePath)) ) + { // Test passed + TestCase().Logger().Write(_L("CMtfTestActionCompareEntryWithFile::Comparison passes")); + TestCase().SetTestStepResult(EPass); + } + else + { // Test failed not the same data. + TestCase().Logger().Write(_L("CMtfTestActionCompareEntryWithFile::Comparison fails")); + TestCase().SetTestStepResult(EFail); + } + + CleanupStack::PopAndDestroy(entry); + + TestCase().Logger().Write(_L("CMtfTestActionCompareEntryWithFile::ExecuteActionL OUT")); + TestCase().ActionCompletedL(*this); + } + + +// Compares only those fields that you request to be compared. + +TBool CMtfTestActionCompareEntryWithFile::EqualL(CMsvEntry& aEntry, const TPtrC& smsMessageFileName) + { + TBool ret=ETrue; + + CMtfTestActionUtilsConfigFileParser* configParser = CMtfTestActionUtilsConfigFileParser::NewL(smsMessageFileName); + CleanupStack::PushL(configParser); + + CParaFormatLayer* paraFormatLayer = CParaFormatLayer::NewL(); + CleanupStack::PushL(paraFormatLayer); + + CCharFormatLayer* charFormatLayer = CCharFormatLayer::NewL(); + CleanupStack::PushL(charFormatLayer); + + _LIT( KEmailToAddress, "EmailToAddress" ); + TPtrC emailToAddressText; + if(configParser->GetFieldAsString(KEmailToAddress, emailToAddressText) != KErrNotFound) + { // Then do the compare. + const TPtrC& tmp = aEntry.Entry().iDetails; + if ( tmp.Compare(emailToAddressText)!=0 ) + { // Not equal fail. + TestCase().Logger().WriteFormat(_L("CMtfTestActionCompareEntryWithFile:: EmailToAddress: (%S) (%S)"), &tmp, &emailToAddressText); + ret = EFalse; + } + } + + _LIT( KSubject, "Subject" ); + TPtrC subjectText; + if(configParser->GetFieldAsString(KSubject, subjectText) != KErrNotFound) + { + const TPtrC& tmp = aEntry.Entry().iDescription; + if ( tmp.Compare(subjectText)!=0 ) + { // Not equal fail. + TestCase().Logger().WriteFormat(_L("CMtfTestActionCompareEntryWithFile:: Subject: (%S) (%S)"), &tmp, &subjectText); + ret = EFalse; + } + } + + TPtrC bodyText; + if(configParser->GetFieldAsString(KBodyText, bodyText) != KErrNotFound) + { + CMsvStore* store = aEntry.ReadStoreL(); + CleanupStack::PushL(store); + + if ( !(store->HasBodyTextL()) ) + { // We have been asked to compare something which does not exist. + TestCase().Logger().WriteFormat(_L("CMtfTestActionCompareEntryWithFile:: No Message exists at all")); + ret = EFalse; + } + else + { + CRichText* richText = CRichText::NewL(paraFormatLayer,charFormatLayer); + CleanupStack::PushL(richText); + store->RestoreBodyTextL(*richText); + + const TInt length = richText->DocumentLength(); + TPtrC textMessage = richText->Read(0, length); + + if ( textMessage.Compare(bodyText)!=0 ) + { // Not equal fail. + TestCase().Logger().WriteFormat(_L("CMtfTestActionCompareEntryWithFile:: BodyText: (%S) (%S)"), &bodyText, &textMessage); + ret = EFalse; + } + + CleanupStack::PopAndDestroy(richText); + + } + CleanupStack::PopAndDestroy(store); + } + + //??? SC etc + + CleanupStack::PopAndDestroy(3, configParser); + + return ret; + } +