--- /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;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+