--- /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()
+ {
+ }
+
+