applayerprotocols/httptransportfw/Test/T_WspDecoder/WspHeaderReaderUnitTestContext.inl
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerprotocols/httptransportfw/Test/T_WspDecoder/WspHeaderReaderUnitTestContext.inl Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,201 @@
+// 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:
+// The context for the unit tests upon the CWspHeaderReader class methods.
+//
+//
+
+/**
+ @file WspHeaderReaderUnitTestContext.inl
+*/
+
+// User includes
+#include "WspHeaderReaderTransitions.h"
+#include "cheaders.h"
+#include "cheaderfield.h"
+
+// System includes
+#include <wspstringconstants.h>
+
+_LIT8(KTxtTestHeader, "TestHeader");
+
+// ______________________________________________________________________________
+//
+inline CWspHeaderReader_UnitTestContext::CWspHeaderReader_UnitTestContext(CDataLogger& aDataLogger,
+ MStateAccessor& aStateAccessor,
+ MTransitionObserver& aObserver,
+ const TStringTable& aStrTable)
+: CUnitTestContext(aDataLogger, aStateAccessor, aObserver), iStrTable(aStrTable)
+ {
+ //Do nothing
+ }
+
+inline CWspHeaderReader_UnitTestContext::~CWspHeaderReader_UnitTestContext()
+ {
+ delete iExpectedData;
+ delete iOutputData;
+ delete iTestHeader;
+ delete iHeaderField;
+ delete iHeader;
+ delete iCodec;
+ iStrPool.Close();
+ }
+
+inline void CWspHeaderReader_UnitTestContext::ConstructL(TInt aHeaderName)
+ {
+ iHeaderToken = aHeaderName;
+ iStrPool.OpenL(iStrTable);
+ iCodec = CWspHeaderCodec::NewL(iStrPool, iStrTable);
+ REINTERPRET_CAST(CWspHeaderCodec*, iCodec)->SetWspVersion(CWspHeaderCodec::EVersion1_4);
+ iHeader = CHeaders::NewL(*iCodec);
+ if( iHeaderToken == KErrNotFound )
+ {
+ RStringF testHeader = iStrPool.OpenFStringL(KTxtTestHeader());
+ CleanupClosePushL(testHeader);
+ iHeaderField = CHeaderField::NewL(testHeader, *iHeader);
+ CleanupStack::PopAndDestroy(&testHeader);
+ }
+ else
+ {
+ iHeaderField = CHeaderField::NewL(iStrPool.StringF(aHeaderName, iStrTable), *iHeader);
+ }
+ iTestHeader = new(ELeave) RHeaderField(*iHeaderField);
+ }
+
+inline void CWspHeaderReader_UnitTestContext::SetOutputL()
+ {
+ _LIT8(KPartSeparator, ",");
+ _LIT8(KParamSeparator, ";");
+ _LIT8(KParamValueSeparator, "=");
+ // "Sun, 06 Nov 1994 08:49:37 GMT" ; RFC 822, updated by RFC 1123
+ _LIT(KDateFormatRfc1123,"%*E,%D%*N%Y %1 %2 %3 %H:%T:%S GMT");
+
+ TBuf8<512> data;
+ THeaderFieldPartIter iter = iTestHeader->PartsL();
+ iter.First();
+ TInt partCount = 0;
+ while( !(iter.AtEnd()) )
+ {
+ if( partCount > 0 )
+ data.Append(KPartSeparator);
+
+ const CHeaderFieldPart* fieldPart = iter();
+ THTTPHdrVal hdrVal = fieldPart->Value();
+ switch( hdrVal.Type() )
+ {
+ case THTTPHdrVal::KStrFVal:
+ {
+ data.Append(hdrVal.StrF().DesC());
+ } break;
+ case THTTPHdrVal::KStrVal:
+ {
+ data.Append(hdrVal.Str().DesC());
+ } break;
+ case THTTPHdrVal::KTIntVal:
+ {
+ TBuf8<25> convertNum;
+ convertNum.Num(hdrVal.Int());
+ data.Append(convertNum);
+ } break;
+ case THTTPHdrVal::KDateVal:
+ {
+ // Formate the date string in GMT
+ TBuf<40> dateTimeStringRfc1123;
+ TTime t(hdrVal.DateTime());
+ t.FormatL(dateTimeStringRfc1123,KDateFormatRfc1123);
+ // convert from unicode
+ TBuf8<40> dateTimeString8;
+ dateTimeString8.Copy(dateTimeStringRfc1123);
+ data.Append(dateTimeString8);
+ } break;
+ default:
+ break;
+ }
+ ++iter;
+ ++partCount;
+
+ // Check how many parameters there are on this part
+ TInt numParams = fieldPart->NumParameters();
+ // loop through all the paramters and them to the descriptor
+ for( TInt i=0; i<numParams; ++i )
+ {
+ data.Append(KParamSeparator);
+ CHeaderFieldParam* fieldParam = fieldPart->Parameter(i);
+ data.Append(fieldParam->Name().DesC());
+ if(fieldParam->Value().Type() == THTTPHdrVal::KStrFVal)
+ {
+ if(fieldParam->Value().StrF().DesC().Length()!=0)
+ data.Append(KParamValueSeparator);
+ }
+ else
+ data.Append(KParamValueSeparator);
+
+ THTTPHdrVal paramVal = fieldParam->Value();
+ switch( paramVal.Type() )
+ {
+ case THTTPHdrVal::KStrFVal:
+ {
+ data.Append(paramVal.StrF().DesC());
+ } break;
+ case THTTPHdrVal::KStrVal:
+ {
+ data.Append(paramVal.Str().DesC());
+ } break;
+ case THTTPHdrVal::KTIntVal:
+ {
+ TBuf8<25> convertNum;
+ convertNum.Num(paramVal.Int());
+ data.Append(convertNum);
+ } break;
+ case THTTPHdrVal::KDateVal:
+ {
+ // Formate the date string in GMT
+ TBuf<40> dateTimeStringRfc1123;
+ TTime t(paramVal.DateTime());
+ t.FormatL(dateTimeStringRfc1123,KDateFormatRfc1123);
+ // convert from unicode
+ TBuf8<40> dateTimeString8;
+ dateTimeString8.Copy(dateTimeStringRfc1123);
+ data.Append(dateTimeString8);
+ } break;
+ default:
+ break;
+ }
+ }
+ }
+
+ // We have the data converted to text form so now add to the context
+ iOutputData = data.AllocL();
+ }
+
+inline void CWspHeaderReader_UnitTestContext::SetExpectedL(const TDesC8& aExpectedData)
+ {
+ iExpectedData = aExpectedData.AllocL();
+ }
+
+inline void CWspHeaderReader_UnitTestContext::SetTrapOutputL()
+ {
+ CHeaderField* headerField = CHeaderField::NewL(iStrPool.StringF(iHeaderToken, iStrTable), *iHeader);
+ CleanupStack::PushL(headerField);
+ RHeaderField testHeader(*headerField);
+ testHeader.BeginRawDataL();
+ TPtrC8 rawData;
+ iTestHeader->RawDataL(rawData);
+ testHeader.WriteRawDataL(rawData);
+ testHeader.CommitRawData();
+ TRAPD(err, testHeader.PartsL());
+ CleanupStack::PopAndDestroy(headerField);
+ TBuf8<25> convertNum;
+ convertNum.Num(err);
+ iOutputData = convertNum.AllocL();
+ }