serviceproviders/sapi_landmarks/tsrc/testing/tlandmark_provider/src/tgetlist.cpp
changeset 5 989d2f495d90
child 23 50974a8b132e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/serviceproviders/sapi_landmarks/tsrc/testing/tlandmark_provider/src/tgetlist.cpp	Fri Jul 03 15:51:24 2009 +0100
@@ -0,0 +1,945 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:   ?Description
+*
+*/
+
+
+
+#include <e32std.h>
+#include <Stiftestinterface.h>
+#include <LiwServiceHandler.h>
+#include <StifLogger.h>
+#include "getlist.h"
+#include<LiwCommon.h>
+#include<LiwVariant.h>
+#include "landmarkliwparams.hrh"
+#include <epos_cposlandmarkdatabase.h>
+#include <epos_cposlandmark.h>
+#include <epos_cposlandmarkencoder.h>
+#include <epos_cposlmcategorymanager.h>
+#include "tlandmark_provider.h"
+#include <EPos_HPosLmDatabaseInfo.h>
+#include <EPos_CPosLmDatabaseManager.h>
+#include <lbsposition.h>
+#include "serviceerrno.h"
+#include "tlandmark_provider.h"
+
+using namespace LIW ;
+
+_LIT8(KTestInterface, 	"IDataSource");
+_LIT8(KTestContent,		"Service.Calendar");
+_LIT8(KCmd,				"RequestNotification");
+_LIT(KTestCalendar, 	"CalChangeNotify");
+_LIT8(KErrCode , "ErrorCode") ;
+_LIT(KLmName1, "lm1");
+_LIT(KLmName2, "lma2");
+_LIT(KLmName3, "lma3");
+_LIT(KLmName4, "landmark1");
+_LIT(KLmName5, "landmark2");
+_LIT(KLmName6, "landmark3");
+
+_LIT(KLmSearchString, "lm*");
+_LIT(KLmSearchString1, "lma*");
+
+#define PASS  TInt(0)
+#define FAIL  (!PASS)
+
+CCalCallback* CCalCallback::NewL(CActiveSchedulerWait* aWaitSchedular, TInt32& aResult)
+	{
+	return new (ELeave) CCalCallback(aWaitSchedular, aResult);
+	}
+		
+TInt CCalCallback::HandleNotifyL(TInt aCmdId,
+									        TInt aEventId,
+									        CLiwGenericParamList& aEventParamList,
+									        const CLiwGenericParamList& aInParamList)
+{
+	TInt pos = 0;
+	TInt32 result = KErrNone;
+	
+	const TLiwGenericParam* err = aEventParamList.FindFirst(pos,KErrCode);
+	if(err)
+		result = err->Value().AsTInt32();
+		
+	if(!result && aEventId != KLiwEventCanceled)
+	{
+	iResult = result;	
+	pos=0;	
+    const TLiwGenericParam* output = aEventParamList.FindFirst( pos,_L8("ReturnValue"));
+	
+	if(output)
+		{
+
+		}
+	}
+	
+	else if(!result && aEventId == KLiwEventCanceled)
+		iResult = KErrNone;
+	else
+		iResult = result;
+
+	if ( iWaitSchedular && iWaitSchedular->IsStarted())
+		{
+		iWaitSchedular->AsyncStop();
+		}
+}
+
+CTestAsync* CTestAsync::NewL(TInt type)
+	{
+	CTestAsync* self = new (ELeave) CTestAsync();
+	self->ConstructL(type);
+	return self;
+	}
+
+CTestAsync::~CTestAsync()
+	{
+	Cancel();
+	delete gLog;
+	inparam->Reset();
+	outparam->Reset();
+	
+	interface->Close();
+	
+	delete iServiceHandler;
+	
+	delete iCallback;
+
+	if(iWaitSchedular->IsStarted())
+		iWaitSchedular->AsyncStop();
+
+	delete iWaitSchedular;
+	}
+
+
+void CTestAsync::ConstructL(TInt case_type)
+	{
+	TFileName glogFileName;
+	gLog = CStifLogger::NewL( Ktlandmark_providerLogPath, 
+                          glogFileName,
+                          CStifLogger::ETxt,
+                          CStifLogger::EFile,
+                          EFalse );
+                          
+	iTestCaseType = case_type;
+	interface = CreateInterface();
+	CActiveScheduler::Add(this);
+	iWaitSchedular = new(ELeave) CActiveSchedulerWait();
+	}
+
+MLiwInterface* CTestAsync::CreateInterface()
+{
+	
+	iServiceHandler = CLiwServiceHandler::NewL();
+
+	inparam = &(iServiceHandler->InParamListL());
+	outparam = &(iServiceHandler->OutParamListL());
+	
+	CLiwCriteriaItem* crit = CLiwCriteriaItem::NewL(1, KIDataSource,KService);
+
+	crit->SetServiceClass(TUid::Uid(KLiwClassBase));
+
+	RCriteriaArray a;
+	a.AppendL(crit);    
+	
+	iServiceHandler->AttachL(a);
+	iServiceHandler->ExecuteServiceCmdL(*crit, *inparam, *outparam); 
+
+	a.Reset();
+	delete crit;
+	
+	TInt pos = 0;
+
+	outparam->FindFirst( pos, KIDataSource );
+	if(pos != KErrNotFound)
+		{
+		interface = (*outparam)[pos].Value().AsInterface();	
+		}
+
+	outparam->Reset();
+	inparam->Reset();
+	
+	return interface;
+}
+
+CTestAsync::CTestAsync() :
+CActive(EPriorityStandard)
+		{
+		interface = NULL ;
+		iResult = KErrGeneral;
+		}
+
+void CTestAsync::DoCancel()
+	{
+
+	}
+
+void CTestAsync::RunL()
+	{
+		switch(iTestCaseType)
+		{
+			case 1 : TestFunc();
+					  break;
+			case 2 : GetListInvalidCase();
+					  break;
+			case 3 : AddGetListCancel();
+					 break;
+			case 4 : CancelWithInvalidTid();
+					 break;
+			case 5 : CallGetListMultipleTimes();
+					 break;
+			case 6 : CancelKeyBasedTid();
+					 break;
+			case 7 : CancelPosBasedTid();
+					 break;
+			case 8 : CancelLargeTid();
+					 break;
+			case 9 : CancelInvalidTidType();
+					 break;
+			case 10 : CancelInvalidCmd();
+					  break;
+		}
+	}
+
+
+TInt32 CTestAsync::Result()
+	{
+	return iResult;
+	}
+
+void CTestAsync::Start()
+	{
+	SetActive();
+	TRequestStatus* temp = &iStatus;
+	User::RequestComplete(temp, KErrNone);
+	iWaitSchedular->Start();	
+	}
+
+void CTestAsync::CancelInvalidCmd()
+{
+       	TLiwGenericParam param;
+		iCallback = CCalCallback::NewL(iWaitSchedular, iResult);
+		CLiwMap* getlistlandmark_map = CLiwDefaultMap::NewL();
+   		param.SetNameAndValueL(KContentType,TLiwVariant(KLandmark));
+   		inparam->AppendL(param);
+   		param.Reset();
+    		
+    	TRAPD(err_getlist, interface->ExecuteCmdL(KGetList, *inparam, *outparam, KLiwOptASyncronous, iCallback));
+		getlistlandmark_map->DecRef();
+	
+		TInt pos=0;
+		const TLiwGenericParam* output = outparam->FindFirst( pos,_L8("TransactionID"));
+	
+		if(output)
+		{
+			iTransactionId = output->Value().AsTInt32();
+			CancelNotification_InvalidCmd(); //Call cancel 
+		}
+		else
+		{
+			if(iWaitSchedular->IsStarted())
+				iWaitSchedular->AsyncStop();
+			iResult = SErrBadArgumentType;
+		}   
+    		
+	inparam->Reset();
+	outparam->Reset();	
+    
+}
+
+void CTestAsync::CancelNotification_InvalidCmd()
+{
+    CLiwGenericParamList* inparam = &(iServiceHandler->InParamListL());
+	CLiwGenericParamList* outparam = &(iServiceHandler->OutParamListL());
+	
+    TLiwGenericParam param;
+    param.SetNameAndValueL(KNullDesC8,TLiwVariant((TReal32)44.55));
+    inparam->AppendL(param);
+   	param.Reset();
+    		
+    TRAPD(err_cancel,interface->ExecuteCmdL(KCancel, *inparam, *outparam,KLiwOptASyncronous,iCallback ));
+      
+    TInt pos=0;  
+    const TLiwGenericParam* err = outparam->FindFirst(pos,KErrCode);
+	if(err)
+	{
+			if(iWaitSchedular->IsStarted())
+				iWaitSchedular->AsyncStop();
+			if(iResult == KErrGeneral)
+				iResult = err->Value().AsTInt32();	
+	}		
+	
+	inparam->Reset();
+	outparam->Reset();  	
+    
+}
+
+void CTestAsync::CancelInvalidTidType()
+{
+       	TLiwGenericParam param;
+		iCallback = CCalCallback::NewL(iWaitSchedular, iResult);
+		CLiwMap* getlistlandmark_map = CLiwDefaultMap::NewL();
+   		param.SetNameAndValueL(KContentType,TLiwVariant(KLandmark));
+   		inparam->AppendL(param);
+   		param.Reset();
+    		
+    	TRAPD(err_getlist, interface->ExecuteCmdL(KGetList, *inparam, *outparam, KLiwOptASyncronous, iCallback));
+		getlistlandmark_map->DecRef();
+	
+		TInt pos=0;
+		const TLiwGenericParam* output = outparam->FindFirst( pos,_L8("TransactionID"));
+	
+		if(output)
+		{
+			iTransactionId = output->Value().AsTInt32();
+			CancelNotification_InvalidTidType(); //Call cancel 
+		}
+		else
+		{
+			if(iWaitSchedular->IsStarted())
+				iWaitSchedular->AsyncStop();
+			iResult = SErrBadArgumentType;
+		}   
+    		
+	inparam->Reset();
+	outparam->Reset();	
+    
+}
+
+void CTestAsync::CancelNotification_InvalidTidType()
+{
+    CLiwGenericParamList* inparam = &(iServiceHandler->InParamListL());
+	CLiwGenericParamList* outparam = &(iServiceHandler->OutParamListL());
+	
+    TLiwGenericParam param;
+    param.SetNameAndValueL(KNullDesC8,TLiwVariant((TReal32)44.55));
+    inparam->AppendL(param);
+   	param.Reset();
+    		
+    TRAPD(err_cancel,interface->ExecuteCmdL(KCancel, *inparam, *outparam,KLiwOptCancel,0 ));
+      
+    TInt pos=0;  
+    const TLiwGenericParam* err = outparam->FindFirst(pos,KErrCode);
+	if(err)
+	{
+			if(iWaitSchedular->IsStarted())
+				iWaitSchedular->AsyncStop();
+			if(iResult == KErrGeneral)
+				iResult = err->Value().AsTInt32();	
+	}		
+	
+	inparam->Reset();
+	outparam->Reset();  	
+    
+}
+
+void CTestAsync::CancelLargeTid()
+{
+       	TLiwGenericParam param;
+		iCallback = CCalCallback::NewL(iWaitSchedular, iResult);
+		CLiwMap* getlistlandmark_map = CLiwDefaultMap::NewL();
+   		param.SetNameAndValueL(KContentType,TLiwVariant(KLandmark));
+   		inparam->AppendL(param);
+   		param.Reset();
+    		
+    	TRAPD(err_getlist, interface->ExecuteCmdL(KGetList, *inparam, *outparam, KLiwOptASyncronous, iCallback));
+		getlistlandmark_map->DecRef();
+	
+		TInt pos=0;
+		const TLiwGenericParam* output = outparam->FindFirst( pos,_L8("TransactionID"));
+	
+		if(output)
+		{
+			iTransactionId = output->Value().AsTInt32();
+			CancelNotification(1,534); //Call cancel 
+		}
+		else
+		{
+			if(iWaitSchedular->IsStarted())
+				iWaitSchedular->AsyncStop();
+			iResult = SErrBadArgumentType;
+		}   
+    		
+	inparam->Reset();
+	outparam->Reset();	
+    
+}
+
+
+void CTestAsync::CancelPosBasedTid()
+{
+       	TLiwGenericParam param;
+		iCallback = CCalCallback::NewL(iWaitSchedular, iResult);
+		CLiwMap* getlistlandmark_map = CLiwDefaultMap::NewL();
+   		param.SetNameAndValueL(KContentType,TLiwVariant(KLandmark));
+   		inparam->AppendL(param);
+   		param.Reset();
+    		
+    	TRAPD(err_getlist, interface->ExecuteCmdL(KGetList, *inparam, *outparam, KLiwOptASyncronous, iCallback));
+		getlistlandmark_map->DecRef();
+	
+		TInt pos=0;
+		const TLiwGenericParam* output = outparam->FindFirst( pos,_L8("TransactionID"));
+	
+		if(output)
+		{
+			iTransactionId = output->Value().AsTInt32();
+			CancelNotification_PosBased(); //Call cancel 
+		}
+		else
+		{
+			if(iWaitSchedular->IsStarted())
+				iWaitSchedular->AsyncStop();
+			iResult = SErrBadArgumentType;
+		}   
+    		
+	inparam->Reset();
+	outparam->Reset();	
+    
+}
+
+void CTestAsync::CancelNotification_PosBased()
+{
+	CLiwGenericParamList* inparam = &(iServiceHandler->InParamListL());
+	CLiwGenericParamList* outparam = &(iServiceHandler->OutParamListL());
+	
+    TLiwGenericParam param;
+    param.SetNameAndValueL(KNullDesC8,TLiwVariant(iTransactionId));
+    inparam->AppendL(param);
+   	param.Reset();
+    		
+    TRAPD(err_cancel,interface->ExecuteCmdL(KCancel, *inparam, *outparam,KLiwOptCancel,0 ));
+      
+    TInt pos=0;  
+    const TLiwGenericParam* err = outparam->FindFirst(pos,KErrCode);
+	if(err)
+	{
+			if(iWaitSchedular->IsStarted())
+				iWaitSchedular->AsyncStop();
+			if(iResult == KErrGeneral)
+				iResult = err->Value().AsTInt32();	
+	}		
+	
+	inparam->Reset();
+	outparam->Reset();
+}
+
+
+void CTestAsync::CancelKeyBasedTid()
+{
+       	TLiwGenericParam param;
+		iCallback = CCalCallback::NewL(iWaitSchedular, iResult);
+		CLiwMap* getlistlandmark_map = CLiwDefaultMap::NewL();
+   		param.SetNameAndValueL(KContentType,TLiwVariant(KLandmark));
+   		inparam->AppendL(param);
+   		param.Reset();
+    		
+    	TRAPD(err_getlist, interface->ExecuteCmdL(KGetList, *inparam, *outparam, KLiwOptASyncronous, iCallback));
+		getlistlandmark_map->DecRef();
+	
+		TInt pos=0;
+		const TLiwGenericParam* output = outparam->FindFirst( pos,_L8("TransactionID"));
+	
+		if(output)
+		{
+			iTransactionId = output->Value().AsTInt32();
+			CancelNotification_KeyBased(); //Call cancel 
+		}
+		else
+		{
+			if(iWaitSchedular->IsStarted())
+				iWaitSchedular->AsyncStop();
+			iResult = SErrBadArgumentType;
+		}   
+    		
+	inparam->Reset();
+	outparam->Reset();	
+    
+}
+
+void CTestAsync::CancelNotification_KeyBased()
+{
+	CLiwGenericParamList* inparam = &(iServiceHandler->InParamListL());
+	CLiwGenericParamList* outparam = &(iServiceHandler->OutParamListL());
+	
+    TLiwGenericParam param;
+    param.SetNameAndValueL(KTransactionId,TLiwVariant(iTransactionId));
+    inparam->AppendL(param);
+   	param.Reset();
+    		
+    TRAPD(err_cancel,interface->ExecuteCmdL(KCancel, *inparam, *outparam,KLiwOptCancel,0 ));
+      
+    TInt pos=0;  
+    const TLiwGenericParam* err = outparam->FindFirst(pos,KErrCode);
+	if(err)
+	{
+			if(iWaitSchedular->IsStarted())
+				iWaitSchedular->AsyncStop();
+			if(iResult == KErrGeneral)
+				iResult = err->Value().AsTInt32();	
+	}		
+	
+	inparam->Reset();
+	outparam->Reset();
+}
+
+
+void CTestAsync::CallGetListMultipleTimes()
+{
+	// Add landmark
+	_LIT(KName,"GetListstress");
+    _LIT(KDescription,"stress on getlist Api");
+    
+    CLiwMap* landmarkMap = CLiwDefaultMap::NewL();
+    TLiwGenericParam param;
+    TInt32 res = KErrGeneral;
+         
+    //name
+    landmarkMap->InsertL(KLandmarkName,TLiwVariant(KName));
+      
+    //description
+    landmarkMap->InsertL(KLandmarkDesc,TLiwVariant(KDescription));
+    
+    param.SetNameAndValueL(KDataFields,TLiwVariant(landmarkMap));
+    inparam->AppendL(param);
+    param.Reset();       
+    
+    param.SetNameAndValueL(KContentType,TLiwVariant(KLandmark));
+    inparam->AppendL(param);
+    param.Reset();
+    
+    interface->ExecuteCmdL(KAdd,*inparam,*outparam,0,0);
+    landmarkMap->DecRef();
+    
+    TInt index = 0;
+    
+    const TLiwGenericParam* err = outparam->FindFirst(index,KErrorCode);
+    if(err)
+    	res = err->Value().AsTInt32();
+    
+    if(!res)
+    {
+    	inparam->Reset();
+		outparam->Reset();	
+    	iCallback = CCalCallback::NewL(iWaitSchedular, iResult);
+		TLiwGenericParam param;
+		
+		CLiwMap* getlistlandmark_map = CLiwDefaultMap::NewL();
+    	param.SetNameAndValueL(KContentType,TLiwVariant(KLandmark));
+   		inparam->AppendL(param);
+   		param.Reset();	
+   		
+    
+    	param.SetNameAndValueL(KFilter,TLiwVariant(getlistlandmark_map));
+    	inparam->AppendL(param);
+    	param.Reset();
+    	
+    		
+    	 interface->ExecuteCmdL(KGetList, *inparam, *outparam, KLiwOptASyncronous, iCallback);
+		 outparam->Reset();
+		 User::After(10);
+		 interface->ExecuteCmdL(KGetList, *inparam, *outparam, KLiwOptASyncronous, iCallback);
+	 	 getlistlandmark_map->DecRef();	
+	 			
+		index=0;
+		const TLiwGenericParam* getlist_err = outparam->FindFirst(index,KErrCode);
+		if(getlist_err)
+		{
+			 iResult = getlist_err->Value().AsTInt32();	
+			 if(iResult)
+			 {
+			 	if(iWaitSchedular->IsStarted())
+						iWaitSchedular->AsyncStop();
+			 }
+		}	
+	
+		inparam->Reset();
+			
+    }      
+    		
+	inparam->Reset();
+	outparam->Reset();	
+}
+
+void CTestAsync::CancelNotification(TBool include_tid, TInt32 tid)
+{
+	gLog->Log(_L("inside cancel notification function"));
+	CLiwGenericParamList* inparam = &(iServiceHandler->InParamListL());
+	CLiwGenericParamList* outparam = &(iServiceHandler->OutParamListL());
+	
+   	if(include_tid)
+   	{
+   		CLiwDefaultMap* map = CLiwDefaultMap::NewL();
+		CleanupStack::PushL(map);
+
+		TLiwGenericParam element;
+		if(tid > 0)		
+				tid = tid * 20000000000000;
+		element.SetNameAndValueL(_L8("TransactionID"), TLiwVariant(tid));
+		inparam->AppendL(element);
+		element.Reset();    
+	
+		map->DecRef();
+    	CleanupStack::Pop(map);
+   	}   
+   	
+    TRAPD(err_cancel,interface->ExecuteCmdL(KCancel, *inparam, *outparam,KLiwOptCancel,0 ));
+      
+    TInt pos=0;  
+    const TLiwGenericParam* err = outparam->FindFirst(pos,KErrCode);
+	if(err)
+	{
+			gLog->Log(_L("after call to cancel function"));
+			if(iWaitSchedular->IsStarted())
+				iWaitSchedular->AsyncStop();
+			if(iResult == KErrGeneral)
+				iResult = err->Value().AsTInt32();	
+	}		
+	
+	inparam->Reset();
+	outparam->Reset();
+}
+
+void CTestAsync::AddGetListCancel()
+{
+	// Add landmark
+	_LIT(KName,"ktaka");
+    _LIT(KDescription,"Indian state");
+    
+    CLiwMap* landmarkMap = CLiwDefaultMap::NewL();
+    TLiwGenericParam param;
+    TInt32 res = KErrGeneral;
+         
+    //name
+    landmarkMap->InsertL(KLandmarkName,TLiwVariant(KName));
+      
+    //description
+    landmarkMap->InsertL(KLandmarkDesc,TLiwVariant(KDescription));
+    
+    param.SetNameAndValueL(KDataFields,TLiwVariant(landmarkMap));
+    inparam->AppendL(param);
+    param.Reset();       
+    
+    param.SetNameAndValueL(KContentType,TLiwVariant(KLandmark));
+    inparam->AppendL(param);
+    param.Reset();
+    
+    interface->ExecuteCmdL(KAdd,*inparam,*outparam,0,0);
+    landmarkMap->DecRef();
+    
+    TInt index = 0;
+    
+    const TLiwGenericParam* err = outparam->FindFirst(index,KErrorCode);
+    if(err)
+    	res = err->Value().AsTInt32();
+    
+    if(!res)
+    {
+    	inparam->Reset();
+		outparam->Reset();	
+    	iCallback = CCalCallback::NewL(iWaitSchedular, iResult);
+		TLiwGenericParam param;
+	
+		CLiwMap* getlistlandmark_map = CLiwDefaultMap::NewL();
+   		param.SetNameAndValueL(KContentType,TLiwVariant(KLandmark));
+   		inparam->AppendL(param);
+   		param.Reset();
+    		
+    	TRAPD(err_getlist, interface->ExecuteCmdL(KGetList, *inparam, *outparam, KLiwOptASyncronous, iCallback));
+		getlistlandmark_map->DecRef();
+	
+		TInt pos=0;
+		const TLiwGenericParam* output = outparam->FindFirst( pos,_L8("TransactionID"));
+	
+		if(output)
+		{
+			iTransactionId = output->Value().AsTInt32();
+			CancelNotification(1,iTransactionId); //Call cancel 
+		}
+		else
+		{
+			if(iWaitSchedular->IsStarted())
+				iWaitSchedular->AsyncStop();
+			if(iResult == KErrGeneral)
+				iResult = SErrBadArgumentType;
+		}
+			
+    }      
+    		
+	inparam->Reset();
+	outparam->Reset();	
+    
+}
+
+
+void CTestAsync::CancelWithInvalidTid()
+{
+       	iCallback = CCalCallback::NewL(iWaitSchedular, iResult);
+		TLiwGenericParam param;
+	
+		CLiwMap* getlistlandmark_map = CLiwDefaultMap::NewL();
+   		param.SetNameAndValueL(KContentType,TLiwVariant(KLandmark));
+   		inparam->AppendL(param);
+   		param.Reset();
+    		
+    	TRAPD(err_getlist, interface->ExecuteCmdL(KGetList, *inparam, *outparam, KLiwOptASyncronous, iCallback));
+		getlistlandmark_map->DecRef();
+	
+		TInt pos=0;
+		const TLiwGenericParam* output = outparam->FindFirst( pos,_L8("TransactionID"));
+	
+		if(output)
+		{
+			iTransactionId = output->Value().AsTInt32();
+			CancelNotification(1,-25); //Call cancel 
+		}
+		else
+		{
+			if(iWaitSchedular->IsStarted())
+				iWaitSchedular->AsyncStop();
+			iResult = SErrBadArgumentType;
+		}   
+    		
+	inparam->Reset();
+	outparam->Reset();	
+    
+}
+
+
+void CTestAsync::GetListInvalidCase()
+{
+	
+	iCallback = CCalCallback::NewL(iWaitSchedular, iResult);
+	TLiwGenericParam param;
+	
+	CLiwMap* getlistlandmark_map = CLiwDefaultMap::NewL();
+   	param.SetNameAndValueL(KContentType,TLiwVariant(KLandmark));
+   	inparam->AppendL(param);
+   	param.Reset();
+    		
+    TRAPD(err_getlist, interface->ExecuteCmdL(KGetList, *inparam, *outparam, KLiwOptASyncronous, NULL));
+	getlistlandmark_map->DecRef();
+	
+	TInt pos=0;
+	const TLiwGenericParam* output = outparam->FindFirst( pos,_L8("TransactionID"));
+	
+	if(output)
+	{
+		iTransactionId = output->Value().AsTInt32();
+	}
+	else
+	{
+		if(iWaitSchedular->IsStarted())
+			iWaitSchedular->AsyncStop();
+		iResult = SErrBadArgumentType;
+	}	
+}
+
+void CTestAsync::TestFunc()
+	{
+/*	iServiceHandler = CLiwServiceHandler::NewL();
+
+	CLiwGenericParamList* inparam = &(iServiceHandler->InParamListL());
+	CLiwGenericParamList* outparam = &(iServiceHandler->OutParamListL());
+
+	TInt	err; 
+
+	CLiwCriteriaItem* crit = CLiwCriteriaItem::NewL(1, KIDataSource,KService);
+
+	crit->SetServiceClass(TUid::Uid(KLiwClassBase));
+
+	RCriteriaArray a;
+	a.AppendL(crit);    
+	
+	iServiceHandler->AttachL(a);
+	iServiceHandler->ExecuteServiceCmdL(*crit, *inparam, *outparam); 
+
+	a.Reset();
+	delete crit;
+	
+	TInt pos = 0;
+
+	outparam->FindFirst( pos, KIDataSource );
+	if(pos != KErrNotFound)
+		{
+		interface = (*outparam)[pos].Value().AsInterface();	
+		}
+
+	outparam->Reset();
+	inparam->Reset();*/
+	
+	iCallback = CCalCallback::NewL(iWaitSchedular, iResult);
+	
+/*	CPosLandmarkDatabase* db = CPosLandmarkDatabase::OpenL(KTestDbUri1);
+	CleanupStack::PushL(db);
+	ExecuteAndDeleteLD(db->InitializeL());
+	RemoveAllLandmarks(db);
+	CreateLandmarksL(db);
+	CleanupStack::PopAndDestroy(db);
+	
+	TLiwGenericParam param;
+	param.SetNameAndValueL(KContentType,TLiwVariant(KLandmark));
+	inparam->AppendL(param);
+	param.Reset();
+
+	TRAPD(err_getlist, interface->ExecuteCmdL(KGetList, *inparam, *outparam, KLiwOptASyncronous, iCallback));*/
+	
+	TLiwGenericParam param;
+	
+	CLiwMap* getlistlandmark_map = CLiwDefaultMap::NewL();
+	param.SetNameAndValueL(KContentType,TLiwVariant(KLandmark));
+	inparam->AppendL(param);
+	param.Reset();
+   		
+   	TRAPD(err_getlist, interface->ExecuteCmdL(KGetList, *inparam, *outparam, KLiwOptASyncronous, iCallback));
+	getlistlandmark_map->DecRef();	
+
+	TInt pos=0;
+	const TLiwGenericParam* output = outparam->FindFirst( pos,_L8("TransactionID"));
+	
+	if(output)
+		{
+		iTransactionId = output->Value().AsTInt32();
+		gLog->Log(_L("calling cancel function from testfunc"));
+		CancelNotification(0,iTransactionId); //Call cancel with no trans Id
+		}
+	else
+		{
+		if(iWaitSchedular->IsStarted())
+			iWaitSchedular->AsyncStop();
+		}	
+	
+	inparam->Reset();
+	outparam->Reset();
+	}
+
+
+//Helper functions
+
+// -----------------------------------------------------------------------------
+// CreateLandmarksL
+// Helper method to add landmarks to a default database.
+// -----------------------------------------------------------------------------
+//
+void CreateLandmarksL (CPosLandmarkDatabase* aLandmarkHandle)
+  {
+  CPosLandmark* lm = CPosLandmark::NewLC ();
+  _LIT(KStreet,"broadway");
+//  _LIT(KIconFile,"//s60//icons//qgn_graf_s60_logo.svg");
+  _LIT(KDesc,"welcome to galactica");
+  TPosition locale;
+  locale.SetCoordinate(12.345,67.89);
+  lm->SetLandmarkNameL(KLmName1);  
+  lm->SetPositionL(locale);
+  lm->SetCoverageRadius(12.345);
+  lm->SetPositionFieldL(EPositionFieldStreet,KStreet);
+  lm->SetLandmarkDescriptionL(KDesc); 
+  aLandmarkHandle->AddLandmarkL(*lm);
+  CleanupStack::PopAndDestroy(lm);
+  lm = CPosLandmark::NewLC ();	
+  lm->SetLandmarkNameL  (KLmName2);
+  aLandmarkHandle->AddLandmarkL  (*lm);
+
+  lm->SetLandmarkNameL  (KLmName3);
+  aLandmarkHandle->AddLandmarkL  (*lm);
+
+  lm->SetLandmarkNameL  (KLmName4);
+  aLandmarkHandle->AddLandmarkL  (*lm);
+
+  lm->SetLandmarkNameL  (KLmName5);
+  aLandmarkHandle->AddLandmarkL  (*lm);
+
+  lm->SetLandmarkNameL  (KLmName6);
+  aLandmarkHandle->AddLandmarkL  (*lm);
+
+  CleanupStack::PopAndDestroy(lm);
+  }
+
+// -----------------------------------------------------------------------------
+// CheckErrorCode
+// checks error code e
+// called by all testcases.
+// -----------------------------------------------------------------------------
+//
+TInt CheckErrorCode( const CLiwGenericParamList& aOutList, TInt32& aError ) 
+  {
+  TInt Index = 0;
+  const TLiwGenericParam* errcode = aOutList.FindFirst(Index,KErrorCode);
+  if ( KErrNotFound == Index )
+    {
+  //  iLog->Log( _L("ErrorCode not found in output ArgList") );
+    return FAIL;
+    }
+  else
+  	{
+  	aError = errcode->Value().AsTInt32();
+  	return PASS;	
+  	}
+  
+  }
+
+// -----------------------------------------------------------------------------
+// RemoveAllLandmarks
+// Helper method to remove all landmarks for preconditional tests.
+// -----------------------------------------------------------------------------
+//
+
+void RemoveAllLandmarks (CPosLandmarkDatabase* aLandmarkHandle)
+  {
+    ExecuteAndDeleteLD(aLandmarkHandle->RemoveAllLandmarksL());
+  }
+// -----------------------------------------------------------------------------
+// RemoveAllLandmarks
+// Helper method to remove all categories for preconditional tests.
+// -----------------------------------------------------------------------------
+//
+void RemoveAllCategories  (CPosLmCategoryManager* aHandle)
+  {
+  TPosLmItemId catID;
+  CPosLmItemIterator*iterator = aHandle->CategoryIteratorL();
+  CleanupStack::PushL(iterator);
+
+  while ((catID = iterator->NextL()) != KPosLmNullItemId)
+    {
+      TRAPD(err,ExecuteAndDeleteLD(aHandle->RemoveCategoryL( catID )));
+       TBuf8<50> error;
+      TRealFormat format;
+      error.Num(err,format) ;
+   //   iLog->Log( error );
+    }
+  CleanupStack::PopAndDestroy(iterator);
+}
+
+
+// -----------------------------------------------------------------------------
+// DeleteAllDatabases
+// removes all local databases from the terminal
+// called by all testcases.
+// -----------------------------------------------------------------------------
+//
+/*void DeleteAllLocalDatabasesL()
+    {
+  TInt count;
+
+  CDesCArray* dbList = iDatabaseManager->ListDatabasesLC(_L("file"));
+  count = dbList->Count();
+
+  for ( TInt i = 0; i < count; i++ )
+    {
+    TPtrC db = (*dbList)[i];
+    iDatabaseManager->DeleteDatabaseL ( db );
+    }
+  CleanupStack::PopAndDestroy (1);
+    }*/
+