supl/locationomasuplpostester/epos_comasuplpostestermodulecfg/src/epos_comasuplgetsuplinfomanager.cpp
changeset 0 667063e416a2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/supl/locationomasuplpostester/epos_comasuplpostestermodulecfg/src/epos_comasuplgetsuplinfomanager.cpp	Tue Feb 02 01:06:48 2010 +0200
@@ -0,0 +1,263 @@
+/*
+* Copyright (c) 2005-2006 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:  Parent class of classes testing GetSuplInfoL
+*
+*/
+
+#include <epos_comasuplposhandlerbase.h>
+#include <epos_comasuplpossessionbase.h>
+#include <epos_comasuplinforequestlist.h>
+#include <epos_comasuplinforequestlist.h>
+#include <epos_comasuplreqasstdata.h>
+#include <epos_comasuplsetcapabilities.h>
+#include <epos_comasuplposition.h>
+#include <epos_comasuplpospayload.h>
+#include <epos_comasuplvelocity.h>
+#include <epos_eomasuplposerrors.h>
+
+#include "epos_comasuplgetsuplinfomanager.h"
+#include "epos_comasuplpostesterlogger.h"
+
+
+_LIT8(KValueofSetCapCount, "Info: Resetting number of SetCapability objects\
+ in request list to ");
+
+_LIT8(KValueOfReqAsstDataCount, "Info: Resetting number of Request \
+Assistance Data objects in request list to ");
+
+_LIT8(KValueOfPositionCount, "Info: Resetting number of Position objects \
+in request list to ");
+
+_LIT8(KValueOfVelocityCount, "Info: Resetting number of Velocity objects \
+in request list to ");
+
+_LIT8(KValueOfPayloadCount, "Info: Resetting number of Payload objects in \
+request list to ");
+
+
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+COMASuplGetSuplInfoManager::~COMASuplGetSuplInfoManager()
+	{
+	delete iSessionBase;
+	if(iCreatedTypeSeq)
+		{
+		for(TInt counter = 0; counter < iCreatedTypeSeq->Count(); counter++)
+			{
+			iCreatedTypeSeq->Delete(counter);
+			}
+		}
+	delete iCreatedTypeSeq;
+	delete iRequestList;
+	}
+// -----------------------------------------------------------------------------
+// Constructor
+// -----------------------------------------------------------------------------
+//
+COMASuplGetSuplInfoManager::COMASuplGetSuplInfoManager(
+									COMASuplPosHandlerBase& aPosHandler
+									, COMASuplPosTesterCategory* aCallBack )
+									:COMASuplPosTesterCategory( aCallBack )
+									, iPosHandler(aPosHandler)
+									, iRequestID(-1)
+									
+	{
+	}
+
+// -----------------------------------------------------------------------------
+// COMASuplGetSuplInfoManager::CreateRequestListL
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+COMASuplInfoRequestList& COMASuplGetSuplInfoManager::CreateRequestListL(
+										 TInt aSetCapReqCount 
+										, TInt aReqAsstDataCount
+										, TInt aPositionCount
+										, TInt aVelocityCount
+										, TInt aPayLoadCount)
+	{
+	TInt counter = 0;
+	ValidateAndSetArguments(aSetCapReqCount, aReqAsstDataCount
+						, aPositionCount, aVelocityCount, aPayLoadCount);
+
+	TInt arraySize = aSetCapReqCount + aReqAsstDataCount + aPositionCount
+					+ aVelocityCount + aPayLoadCount;
+	if(arraySize <= 0)
+		{
+		User::Leave(KErrUnderflow);
+		}
+	ResetLists();
+	
+	iCreatedTypeSeq = new(ELeave)CArrayFixFlat< TInt >(arraySize);
+	iRequestList = COMASuplInfoRequestList::NewL();
+	iCreatedTypeSeq->SetReserveL(arraySize);
+	for( ; counter < aSetCapReqCount; counter++ )
+		{
+		COMASuplInfoRequest* request = COMASuplSETCapabilities::NewL();
+		iCreatedTypeSeq->AppendL(COMASuplInfoRequest::EOMASuplSETCapabilities);
+		iRequestList->Append( request );
+		}
+
+	for( counter = 0; counter < aReqAsstDataCount; counter++ )
+		{
+		COMASuplInfoRequest* request = COMASuplReqAsstData::NewL();
+		iCreatedTypeSeq->AppendL(COMASuplInfoRequest::EOMASuplReqAsstData);
+		iRequestList->Append( request );
+		}
+
+	for( counter = 0; counter < aPositionCount; counter++ )
+		{
+		COMASuplInfoRequest* request = COMASuplPosition::NewL();
+		iCreatedTypeSeq->AppendL(COMASuplInfoRequest::EOMASuplPosition);
+		iRequestList->Append( request );
+		}
+
+	for( counter = 0; counter < aVelocityCount; counter++ )
+		{
+		COMASuplInfoRequest* request = COMASuplVelocity::NewL();
+		iCreatedTypeSeq->AppendL(COMASuplInfoRequest::EOMASuplVelocity);
+		iRequestList->Append( request );
+		}
+
+	for( counter = 0; counter < aPayLoadCount; counter++ )
+		{
+		COMASuplInfoRequest* request = COMASuplPosPayload::NewL();
+		iCreatedTypeSeq->AppendL(COMASuplInfoRequest::EOMASuplPosPayload);
+		iRequestList->Append( request );
+		}
+
+	return *iRequestList;
+	}
+
+// -----------------------------------------------------------------------------
+// COMASuplGetSuplInfoManager::CreateRequestListL
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+COMASuplInfoRequestList& COMASuplGetSuplInfoManager::CreateRequestListL()
+	{
+	return CreateRequestListL(iSetCapReqCount, iReqAsstDataCount
+						, iPositionCount, iVelocityCount, iPayLoadCount);
+	}
+
+// -----------------------------------------------------------------------------
+// COMASuplGetSuplInfoManager::ValidateAndSetArguments
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void COMASuplGetSuplInfoManager::ValidateAndSetArguments(
+											TInt& aSetCapReqCount 
+										, TInt& aReqAsstDataCount
+										, TInt& aPositionCount
+										, TInt& aVelocityCount
+										, TInt& aPayLoadCount )
+	{
+	//validate aSetCapReqCount
+	ValidateAndSetArguments(aSetCapReqCount, KValueofSetCapCount
+							, iSetCapReqCount);
+	
+	//validate aReqAsstDataCount
+	ValidateAndSetArguments(aReqAsstDataCount, KValueOfReqAsstDataCount
+							, iReqAsstDataCount);
+	
+	//validate aPositionCount
+	ValidateAndSetArguments(aPositionCount,KValueOfPositionCount
+							, iPositionCount);
+	
+	//validate aVelocityCount
+	ValidateAndSetArguments(aVelocityCount, KValueOfVelocityCount
+							, iVelocityCount);
+
+	//validate aPayLoadCount
+	ValidateAndSetArguments(aPayLoadCount, KValueOfPayloadCount
+							, iPayLoadCount);
+	}
+
+// -----------------------------------------------------------------------------
+// COMASuplGetSuplInfoManager::ValidateAndSetArguments
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void COMASuplGetSuplInfoManager::ValidateAndSetArguments(
+											TInt& aObjCount
+											, const TDesC8& aMsg
+											, TInt& aForNextReq)
+	{
+	if(aObjCount > 1)
+		{
+		iInfo++;
+		aObjCount = 1;
+		iLogger->WriteStatus(aMsg, aObjCount, iTestNo, &KNULL());
+		}
+	else if(aObjCount < 0)
+		{
+		aObjCount = 0;
+		iInfo++;
+		iLogger->WriteStatus(aMsg, aObjCount, iTestNo, &KNULL());
+		}
+		else
+			{
+			//Do nothing
+			}
+	aForNextReq = aObjCount;
+	}
+
+// -----------------------------------------------------------------------------
+// COMASuplGetSuplInfoManager::ResetLists
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void COMASuplGetSuplInfoManager::ResetLists()
+	{
+	if(iRequestList)
+		{
+		delete iRequestList;
+		}
+	iRequestList = NULL;
+	if(iCreatedTypeSeq)
+		{
+		delete iCreatedTypeSeq;
+		}
+	iCreatedTypeSeq = NULL;
+	}
+
+// -----------------------------------------------------------------------------
+// COMASuplGetSuplInfoManager::MatchLists
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TBool COMASuplGetSuplInfoManager::MatchLists(TInt& aDiffIndex)
+	{
+	if(iCreatedTypeSeq->Count() != iRequestList->GetCount())
+		{
+		aDiffIndex = 0;
+		return EFalse;
+		}
+
+	for(TInt count = 0; count < iCreatedTypeSeq->Count(); count++)
+		{
+		TInt typeSeq = iCreatedTypeSeq->At(count);
+		TInt reqEltType = iRequestList->GetElement(count)->Type();
+		if(typeSeq != reqEltType)
+			{
+			aDiffIndex = count;
+			return EFalse;
+			}
+		}
+
+	return ETrue;
+	}