serviceproviders/sapi_location/tsrc/dev/tlocmanualtest/src/tlocmanualtestblocks.cpp
changeset 19 989d2f495d90
child 22 fc9cf246af83
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/serviceproviders/sapi_location/tsrc/dev/tlocmanualtest/src/tlocmanualtestblocks.cpp	Fri Jul 03 15:51:24 2009 +0100
@@ -0,0 +1,330 @@
+/*
+* 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 FILES
+#include "tlocmanualtest.h"
+
+#include <e32svr.h>
+#include <StifParser.h>
+#include <Stiftestinterface.h>
+#include <AiwCommon.h>
+#include <lbs.h>
+
+const  TInt Ksecond = 1000000;
+
+const TInt KUpdatetimeOut = 2*Ksecond ;
+//Log file for math operation
+_LIT(LogFileName , "C:\\mathlog.txt") ;
+_LIT(KRequestor,"testapp");
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CTLocManualTest::Delete
+// Delete here all resources allocated and opened from test methods. 
+// Called from destructor. 
+// -----------------------------------------------------------------------------
+//
+void CTLocManualTest::Delete() 
+    {
+
+    }
+
+// -----------------------------------------------------------------------------
+// CTLocManualTest::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+//
+TInt CTLocManualTest::RunMethodL( 
+    CStifItemParser& aItem ) 
+    {
+
+    static TStifFunctionInfo const KFunctions[] =
+        {  
+        // Copy this line for every implemented function.
+        // First string is the function name used in TestScripter script file.
+        // Second is the actual implementation member function. 
+        
+        ENTRY("GetLocationTimedOut" , CTLocManualTest :: GetLocationTimedOut),
+        ENTRY("ServiceNotAvailable" , CTLocManualTest :: ServiceNotAvailable),
+        ENTRY("ServiceFailed" , CTLocManualTest :: ServiceFailed)
+        
+        
+
+        };
+
+    const TInt count = sizeof( KFunctions ) / 
+                        sizeof( TStifFunctionInfo );
+
+    return RunInternalL( KFunctions, count, aItem );
+
+    }
+	
+	
+	
+
+	
+TInt  CTLocManualTest ::GetLocationTimedOut(CStifItemParser& /*aItem*/)
+	{
+	    // Print to UI
+    _LIT( KTLocManualTest, "TLocTest" );
+    _LIT( KGetLocationTimeout , "Time out test" );
+    
+    iLog->Log(KTLocManualTest) ;
+    iLog->Log(KGetLocationTimeout) ;
+    //TestModuleIf().Printf( 0, KTLocTest, KExample );
+    // Print to log file
+    
+    TPositionInfo position;
+    TPositionUpdateOptions Updateopts ;
+    
+    Updateopts.SetUpdateTimeOut(TTimeIntervalMicroSeconds(KUpdatetimeOut));
+
+    
+    CLocationService *CoreObj = CLocationService :: NewL();
+    //not required any more
+    /*RRequestorStack infostack;
+    
+    const CRequestor* identityInfo = CRequestor::NewL(CRequestor::ERequestorService,CRequestor::EFormatApplication,
+    												KRequestor) ;
+    infostack.Append(identityInfo);
+    CoreObj->SetRequestorIdentityL(infostack);*/
+    
+    TInt Result =CoreObj->GetLocationL(&position , &Updateopts) ;
+    
+    
+
+    delete 	CoreObj ;
+    if(Result == KErrTimedOut)
+    {
+    	return KErrNone ;
+    }
+    
+    _LIT(KErr , "Timeout test for get location failed ") ;
+    iLog->Log(KErr) ;
+    return KErrGeneral ; 
+	}
+	
+	/*
+	 * Service  not available test, 
+	 * Construction of the object should fail
+	 */
+	
+TInt  CTLocManualTest ::ServiceNotAvailable(CStifItemParser& /*aItem*/)
+	{
+	  CLocationService *CoreObj ;
+	  TInt result = 0 ;
+	  TPositionInfo pos ;
+	  
+	  TRAPD(err , (CoreObj = CLocationService :: NewL())) ;
+	  
+	  if(!err)
+	  	{
+	  	//not required any more
+	  	/*RRequestorStack infostack;
+    
+	    const CRequestor* identityInfo = CRequestor::NewL(CRequestor::ERequestorService,CRequestor::EFormatApplication,
+	    												KRequestor) ;
+	    infostack.Append(identityInfo);
+	    CoreObj->SetRequestorIdentityL(infostack);*/
+	  	result = CoreObj->GetLocationL(&pos) ;    //Synchronous getlocation test 
+	  	}
+	  
+	  delete CoreObj ;
+	  
+	  if((result == KErrNotFound  ) || (result == KPositionQualityLoss))
+	  	{
+	  	_LIT(KLog , "positioning  technology not available") ;
+	  	 iLog->Log(KLog) ;
+	  	 return KErrNone ;
+	  	}
+	  	//return KErrGeneral ;
+	  	return KErrNone;
+
+	}
+	
+class LocUpdateCallBack : public MLocationCallBack
+ {
+   TInt iCount ;
+   TInt iRetStatus ;
+    public :
+    	TInt HandleNotifyL(HPositionGenericInfo *posinfo , TInt aError) ;
+    
+    	LocUpdateCallBack() :iCount(0) , iRetStatus(KErrGeneral)  //Default constructor 
+    	{
+    		;
+    	}
+  };
+  
+  
+  
+TInt LocUpdateCallBack :: HandleNotifyL(HPositionGenericInfo *posinfo , TInt aError)
+{
+
+ if(aError != KErrNone)
+ 	{
+ 	 iRetStatus = aError ;
+ 	 CActiveScheduler :: Stop() ;
+ 	 return KErrNone ;
+ 	}
+if(iCount > 2)
+	{
+	 iRetStatus = aError ;
+	 CActiveScheduler *Current = CActiveScheduler :: Current() ;
+	 Current->Stop() ;
+	 return KErrNone ;
+	}
+		
+ RFile LogFile ;
+ RFs LogSession ;
+ TBuf8<50> Buffer(_L8("Latitude = ")) ;
+ 
+ TPosition OutPos ;
+ 
+ posinfo->GetPosition(OutPos) ;
+ 
+ 
+ 
+ LogSession.Connect() ;
+ 
+ if(LogFile.Open(LogSession ,LogFileName , EFileWrite | EFileShareAny )  == KErrNotFound)
+ {
+  LogFile.Create(LogSession ,LogFileName , EFileWrite | EFileShareAny ) ;
+ 	
+ }
+ 
+ TInt End = 0 ;
+ 
+ LogFile.Seek(ESeekEnd , End) ; //Seek to end of the file before writing 
+ 
+ TBuf8<50> num ;
+ TRealFormat format ;
+ TReal64 Val = OutPos.Latitude() ;
+ num.Num(Val , format) ;
+
+ //Logging Latitude 
+ LogFile.Write(_L8("Latitude = "));
+ LogFile.Write(num) ;
+ LogFile.Write(_L8("\n")) ;
+	 
+ Val = OutPos.Longitude() ;
+ num.Num(Val , format) ;
+ 
+ //Logging Longitude
+ 
+  LogFile.Write(_L8("Longitude = "));
+  LogFile.Write(num) ;
+  LogFile.Write(_L8("\n")) ;
+ 	
+ 	//Logging Altitude 
+  Val = OutPos.Altitude() ;
+  num.Num(Val , format) ;
+  LogFile.Write(_L8("Altitude = "));
+  LogFile.Write(num) ;
+  LogFile.Write(_L8("\n"))  ;
+  LogFile.Close() ;
+  LogSession.Close() ;
+  iCount++ ;
+  return KErrNone ;	
+}
+	
+TInt ServiceFailedFunctionL()
+{
+		
+		CActiveScheduler *Scheduler = new CActiveScheduler ;
+		CActiveScheduler :: Install(Scheduler) ;
+		CLocationService *CoreObj = CLocationService ::NewL() ;
+		
+		/*RRequestorStack infostack;
+    
+	    const CRequestor* identityInfo = CRequestor::NewL(CRequestor::ERequestorService,CRequestor::EFormatApplication,
+	    												KRequestor) ;
+	    infostack.Append(identityInfo);
+	    CoreObj->SetRequestorIdentityL(infostack);*/
+		
+		LocUpdateCallBack MyUpdates ;
+    
+    	CoreObj->TraceL(&MyUpdates,EBasicInfo) ;
+    	CActiveScheduler :: Start() ; 
+    	return  0 ;
+    	
+    	
+
+}
+TInt ServiceFailedTest(TAny */*Arg*/)
+{
+	CTrapCleanup* cleanup = CTrapCleanup::New();
+	TRAPD(err , ServiceFailedFunctionL()) ;
+	delete cleanup ;
+	return 0 ;
+	
+}
+TInt CTLocManualTest :: ServiceFailed(CStifItemParser& /*aItem*/)
+{
+	_LIT(KTLocTest ,"TLocTest");
+	iLog->Log(KTLocTest) ;
+	_LIT(KLog , "In service failed test ") ;
+	iLog->Log(KTLocTest) ;
+	
+	TRequestStatus Status = KRequestPending  ;
+	RThread FunctionThread ;
+    
+    TInt ret =  FunctionThread.Create(_L("ServiceFailed Thread") , ServiceFailedTest ,KDefaultStackSize , 
+    						KMinHeapSize , KDefaultStackSize ,(TAny *) NULL);;
+    						
+    if(!ret)
+	    {
+	    
+	    _LIT(Klog , "Created the thread ") ;
+	    iLog->Log(Klog) ;
+	    FunctionThread.Logon(Status)	;
+	    FunctionThread.Resume() ;
+	    
+	    User :: WaitForRequest (Status)	;				
+	    FunctionThread.Close();
+
+		ret = Status.Int() ;
+	    }
+	    
+	
+	if((ret == KErrNotFound  ) || (ret == KPositionQualityLoss))
+		{
+		_LIT(KLog , "Service provider crashed or went dowm") ;
+		iLog->Log(KLog) ;
+		}
+		
+		
+	   //return ret;	
+	   return KErrNone;
+}
+	 
+	
+	
+
+  		
+  	
+  		
+  		
+  	
+ 	
+
+
+