diff -r 000000000000 -r b16258d2340f applayerprotocols/httptransportfw/Test/T_WspEventDriver/CDriverDataSupplier.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applayerprotocols/httptransportfw/Test/T_WspEventDriver/CDriverDataSupplier.cpp Tue Feb 02 01:09:52 2010 +0200 @@ -0,0 +1,229 @@ +// Copyright (c) 2001-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: +// System includes +// +// + +// Local includes +// +#include "cchatengine.h" +#include "cchatmethodinvocation.h" +#include "cchattdesc8validator.h" +#include "cchattboolvalidator.h" +#include "cchattintvalidator.h" +#include "t_wspeventdriver/tdriverpanic.h" + +// Class signatures +// +#include "cdriverdatasupplier.h" + + +// Constants used in this file +// + + +/** Implementation of class 'CDriverDataSupplier'. This class validates TWspReason parameter values, + in method invocations from the unit under test. +*/ + + +EXPORT_C +CDriverDataSupplier* CDriverDataSupplier::NewL(CChatEngine& aChatEngine) + { + CDriverDataSupplier* me = new(ELeave)CDriverDataSupplier(aChatEngine); + CleanupStack::PushL(me); + me->ConstructL(); + CleanupStack::Pop(me); + return me; + } + +CDriverDataSupplier::~CDriverDataSupplier() + { + delete iBuffer; + } + +EXPORT_C +void CDriverDataSupplier::CleanUp(TAny* aDataSupplierItem) + { + delete STATIC_CAST(CDriverDataSupplier*, aDataSupplierItem); + } + +TBool CDriverDataSupplier::GetNextDataPart(TPtrC8& aDataPart) + { + TBool retVal = EFalse; + TRAPD(err, retVal = GetNextDataPartL(aDataPart)) + if(err!=KErrNone) + TDriverPanic::Panic(TDriverPanic::EMemoryAllocError); + + return retVal; + } + +void CDriverDataSupplier::ReleaseData() + { + TRAPD(err, ReleaseDataL()) + if(err!=KErrNone) + TDriverPanic::Panic(TDriverPanic::EMemoryAllocError); + } + +TInt CDriverDataSupplier::OverallDataSize() + { + TInt retVal = KErrNone; + TRAPD(err, retVal = OverallDataSizeL()) + if(err!=KErrNone) + TDriverPanic::Panic(TDriverPanic::EMemoryAllocError); + + return retVal; + } + +TInt CDriverDataSupplier::Reset() + { + TInt retVal = KErrNone; + TRAPD(err, retVal = ResetL()) + if(err!=KErrNone) + TDriverPanic::Panic(TDriverPanic::EMemoryAllocError); + + return retVal; + } + +TBool CDriverDataSupplier::GetNextDataPartL(TPtrC8& aDataPart) + { + // represent this method invocation + _LIT(KThisMethod, "MHTTPDataSupplier::GetNextDataPart"); + CChatMethodInvocation* methodCalled = CChatMethodInvocation::NewL(iChatEngine, KThisMethod()); + CleanupStack::PushL(methodCalled); + + // test the invocation against what's expected by the chat script + iChatEngine.TestExpectation(*methodCalled); + + // get parameters for the 'out' parameter and the return code + _LIT(KParamADataPart, "aDataPart"); + const CChatParameter* param_aDataPart = methodCalled->GetParameter(KParamADataPart()); + if (!param_aDataPart) + { + iChatEngine.WriteComment(CChatEngine::ELogTerse, _L("PANIC: Invocation on MHTTPDataSupplier::GetNextDataPart() failed because required parameter 'aDataPart' was not provided in the script.")); + TDriverPanic::Panic(TDriverPanic::EParameterMissingInScript); + } + + _LIT(KReturnCode, ":RETURN:"); + const CChatParameter* param_retCode = methodCalled->GetParameter(KReturnCode()); + if (!param_retCode) + { + iChatEngine.WriteComment(CChatEngine::ELogTerse, _L("PANIC: Invocation on MHTTPDataSupplier::GetNextDataPart() failed because required parameter ':RETURN:' was not provided in the script.")); + TDriverPanic::Panic(TDriverPanic::EParameterMissingInScript); + } + + // create validators for these parameters in order to convert them + CChatTDesC8Validator* vtor_aDataPart = CChatTDesC8Validator::NewL(*param_aDataPart); + CleanupStack::PushL(vtor_aDataPart); + CChatTBoolValidator* vtor_retCode = CChatTBoolValidator::NewL(*param_retCode); + CleanupStack::PushL(vtor_retCode); + + // Keep a copy of the out parameter and keep the return code + iBuffer = vtor_aDataPart->DesC8Value().AllocL(); + aDataPart.Set(*iBuffer); + TBool retVal = vtor_retCode->BooleanValue(); + + // clean up unwanted validators + CleanupStack::PopAndDestroy(3, methodCalled); + + return retVal; + } + +void CDriverDataSupplier::ReleaseDataL() + { + // represent this method invocation + _LIT(KThisMethod, "MHTTPDataSupplier::ReleaseData"); + CChatMethodInvocation* methodCalled = CChatMethodInvocation::NewL(iChatEngine, KThisMethod()); + + // test the invocation against what's expected by the chat script + iChatEngine.TestExpectation(*methodCalled); + + // release the buffer we held in GetNextDataPart, and clean up + delete iBuffer; + iBuffer = NULL; + delete methodCalled; + } + +TInt CDriverDataSupplier::OverallDataSizeL() + { + // represent this method invocation + _LIT(KThisMethod, "MHTTPDataSupplier::OverallDataSize"); + CChatMethodInvocation* methodCalled = CChatMethodInvocation::NewL(iChatEngine, KThisMethod()); + CleanupStack::PushL(methodCalled); + // test the invocation against what's expected by the chat script + iChatEngine.TestExpectation(*methodCalled); + + // get parameters for the 'out' parameter and the return code + _LIT(KReturnCode, ":RETURN:"); + const CChatParameter* param_retCode = methodCalled->GetParameter(KReturnCode()); + if (!param_retCode) + { + iChatEngine.WriteComment(CChatEngine::ELogTerse, _L("PANIC: Invocation on MHTTPDataSupplier::OverallDataSize() failed because required parameter ':RETURN:' was not provided in the script.")); + TDriverPanic::Panic(TDriverPanic::EParameterMissingInScript); + } + + // create validators for these parameters in order to convert them + CChatTIntValidator* vtor_retCode = CChatTIntValidator::NewL(*param_retCode); + CleanupStack::PushL(vtor_retCode); + + // Keep the return code + TInt retVal = vtor_retCode->IntValue(); + + // clean up unwanted validators + CleanupStack::PopAndDestroy(vtor_retCode); + CleanupStack::PopAndDestroy(methodCalled); + return retVal; + } + +TInt CDriverDataSupplier::ResetL() + { + // represent this method invocation + _LIT(KThisMethod, "MHTTPDataSupplier::Reset"); + CChatMethodInvocation* methodCalled = CChatMethodInvocation::NewL(iChatEngine, KThisMethod()); + CleanupStack::PushL(methodCalled); + + // test the invocation against what's expected by the chat script + iChatEngine.TestExpectation(*methodCalled); + + // get parameters for the 'out' parameter and the return code + _LIT(KReturnCode, ":RETURN:"); + const CChatParameter* param_retCode = methodCalled->GetParameter(KReturnCode()); + if (!param_retCode) + { + iChatEngine.WriteComment(CChatEngine::ELogTerse, _L("PANIC: Invocation on MHTTPDataSupplier::Reset() failed because required parameter ':RETURN:' was not provided in the script.")); + TDriverPanic::Panic(TDriverPanic::EParameterMissingInScript); + } + + // create validators for these parameters in order to convert them + CChatTIntValidator* vtor_retCode = CChatTIntValidator::NewL(*param_retCode); + CleanupStack::PushL(vtor_retCode); + + // Keep the return code + TInt retVal = vtor_retCode->IntValue(); + + // clean up unwanted validators + CleanupStack::PopAndDestroy(2, methodCalled); + return retVal; + } + +CDriverDataSupplier::CDriverDataSupplier(CChatEngine& aChatEngine) + : iChatEngine(aChatEngine) + { + } + +void CDriverDataSupplier::ConstructL() + { + } + +