--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mds_plat/location_manager_api/tsrc/src/RLocationObjectManipulatorTest.cpp Wed Oct 06 15:08:08 2010 +0300
@@ -0,0 +1,545 @@
+/*
+* Copyright (c) 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:
+*
+*/
+#include "LocationManagerTestScripter.h"
+#include "mdeobject.h"
+#include "mdenamespacedef.h"
+#include "mdeobjectdef.h"
+#include "mdepropertydef.h"
+#include "mdeconstants.h"
+#include "locationdatatype.h"
+#include "mdsutils.h"
+#include <etel3rdparty.h>
+#include <StifTestEventInterface.h>
+#include <StifParser.h>
+#include <StifTestEventInterface.h>
+#include <StifTestInterface.h>
+
+using namespace MdeConstants;
+
+TInt CLocationManagerTestScripter::PrepareSessionL( CStifItemParser& /*aItem*/ )
+ {
+ _LIT( KMsg1, "PrepareSessionL" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ User::LeaveIfError( iOM.Connect() );
+ iMdeSession = CMdESession::NewL( *this );
+
+ return KErrNone;
+ }
+
+TInt CLocationManagerTestScripter::SetupOML( CStifItemParser& /*aItem*/ )
+ {
+ _LIT( KMsg1, "Enter SetupOM" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ iSourceObject = CreateMetadataObjectL();
+ TLocationData locationData;
+ TestLocationData( locationData );
+ TInt error( KErrNone );
+ error = iOM.CreateLocationObject( locationData, iSourceObject->Id() );
+ if( error != KErrNone )
+ {
+ return error;
+ }
+ iTargetObject = CreateMetadataObjectL();
+
+ _LIT( KMsg2, "Exit SetupOM" );
+ iLog->Log( KMsg2 );
+ RDebug::Print( KMsg2 );
+
+ return KErrNone;
+ }
+
+TInt CLocationManagerTestScripter::LocationSnapshotL( CStifItemParser& /*aItem*/ )
+ {
+ _LIT( KMsg1, "Enter LocationSnapshotL" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ iSourceObject = CreateMetadataObjectL();
+ TInt error( KErrNone );
+ error = iOM.LocationSnapshot( iSourceObject->Id() );
+
+ _LIT( KMsg2, "Exit LocationSnapshotL" );
+ iLog->Log( KMsg2 );
+ RDebug::Print( KMsg2 );
+
+ return error;
+ }
+
+TInt CLocationManagerTestScripter::RemoveLocationObjectL( CStifItemParser& /*aItem*/ )
+ {
+ _LIT( KMsg1, "Enter RemoveLocationObjectL" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ TInt error( KErrNone );
+ error = iOM.RemoveLocationObject( iSourceObject->Id() );
+
+ _LIT( KMsg2, "Exit RemoveLocationObjectL" );
+ iLog->Log( KMsg2 );
+ RDebug::Print( KMsg2 );
+
+ return error;
+ }
+
+TInt CLocationManagerTestScripter::TearDownOML( CStifItemParser& /*aItem*/ )
+ {
+ _LIT( KMsg1, "Enter TearDownOM" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ iOM.Close();
+
+ if( iSourceObject && iMdeSession )
+ {
+ TRAP_IGNORE( iMdeSession->RemoveObjectL( iSourceObject->Id() ) );
+ }
+ delete iSourceObject;
+ iSourceObject = NULL;
+ if( iTargetObject && iMdeSession )
+ {
+ TRAP_IGNORE( iMdeSession->RemoveObjectL( iTargetObject->Id() ) );
+ }
+ delete iTargetObject;
+ iTargetObject = NULL;
+ delete iMdeSession;
+ iMdeSession = NULL;
+
+ _LIT( KMsg2, "Exit TearDownOM" );
+ iLog->Log( KMsg2 );
+ RDebug::Print( KMsg2 );
+
+ return KErrNone;
+ }
+
+TInt CLocationManagerTestScripter::CloseOML( CStifItemParser& /*aItem*/ )
+ {
+ _LIT( KMsg1, "CloseOML" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ iOM.Close();
+
+ return KErrNone;
+ }
+
+TInt CLocationManagerTestScripter::RLocationObjectManipulatorTest_CopyByIDL( CStifItemParser& /*aItem*/ )
+ {
+ _LIT( KMsg1, "Enter RLocationObjectManipulatorTest_CopyByIDL" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ TRequestStatus status = KRequestPending;
+ RArray<TItemId> items;
+ items.Append( iTargetObject->Id() );
+ iOM.CopyLocationData( iSourceObject->Id(), items, status );
+ User::WaitForRequest( status );
+ TL( status.Int() == KErrNone );
+
+ status = KRequestPending;
+ iOM.CopyLocationData( TItemId(12345678), items, status );
+ User::WaitForRequest( status );
+ TL( status.Int() == KErrNotFound );
+
+ items.Reset();
+ items.Append(TItemId(12345678));
+ status = KRequestPending;
+ iOM.CopyLocationData( iSourceObject->Id(), items, status );
+ User::WaitForRequest( status );
+ TL( status.Int() == KErrNotFound );
+
+ status = KRequestPending;
+ iOM.CopyLocationData( TItemId(12345678), items, status );
+ User::WaitForRequest( status );
+ TL( status.Int() == KErrNotFound );
+
+ items.Close();
+
+ _LIT( KMsg2, "Exit RLocationObjectManipulatorTest_CopyByIDL" );
+ iLog->Log( KMsg2 );
+ RDebug::Print( KMsg2 );
+
+ return KErrNone;
+ }
+
+TInt CLocationManagerTestScripter::RLocationObjectManipulatorTest_CopyByURIL( CStifItemParser& /*aItem*/ )
+ {
+ _LIT(KURIThatDoesNotExist, "qwerty");
+
+ TRequestStatus status = KRequestPending;
+ RPointerArray<TDesC> items;
+ items.AppendL( &iTargetObject->Uri() );
+ TBuf<256> source( iSourceObject->Uri() );
+ iOM.CopyLocationData( source, items, status );
+ User::WaitForRequest( status );
+ TL( status.Int() == KErrNone );
+
+ source.Copy( KURIThatDoesNotExist );
+ status = KRequestPending;
+ iOM.CopyLocationData( source, items, status );
+ User::WaitForRequest( status );
+ TL( status.Int() == KErrNotFound );
+
+ items.Reset();
+ HBufC* nouri = source.AllocL();
+ items.Append( nouri );
+ source.Copy( iSourceObject->Uri() );
+ status = KRequestPending;
+ iOM.CopyLocationData( source, items, status );
+ User::WaitForRequest( status );
+ TL( status.Int() == KErrNotFound );
+
+ status = KRequestPending;
+ source.Copy( KURIThatDoesNotExist );
+ iOM.CopyLocationData( source, items, status );
+ User::WaitForRequest( status );
+ TL( status.Int() == KErrNotFound );
+
+ items.ResetAndDestroy();
+
+ return KErrNone;
+ }
+
+TInt CLocationManagerTestScripter::RLocationObjectManipulatorTest_CopyByID_DisconnectedL(
+ CStifItemParser& /*aItem*/ )
+ {
+ TRequestStatus status = KRequestPending;
+ RArray<TItemId> items;
+ items.Append( 97976479 );
+ iOM.CopyLocationData( iSourceObject->Id(), items, status );
+ User::WaitForRequest( status );
+ TL( status.Int() == KErrDisconnected );
+
+ return KErrNone;
+ }
+
+TInt CLocationManagerTestScripter::RLocationObjectManipulatorTest_CopyByURI_DisconnectedL(
+ CStifItemParser& /*aItem*/ )
+ {
+ _LIT(KURIThatDoesNotExist, "notexistinganywhere");
+
+ TRequestStatus status = KRequestPending;
+ RPointerArray<TDesC> items;
+ items.AppendL( &KURIThatDoesNotExist );
+ TBuf<256> source( iSourceObject->Uri() );
+ iOM.CopyLocationData( source, items, status );
+ User::WaitForRequest( status );
+ TL( status.Int() == KErrDisconnected );
+
+ return KErrNone;
+ }
+
+CMdEObject* CLocationManagerTestScripter::CreateMetadataObjectL( )
+ {
+ CMdENamespaceDef& namespaceDef = iMdeSession->GetDefaultNamespaceDefL();
+ CMdEObjectDef& objectDef = namespaceDef.GetObjectDefL( Image::KImageObject );
+ CMdEObject *obj = iMdeSession->NewObjectLC( objectDef, Object::KAutomaticUri );
+
+ // required object properties
+ CMdEPropertyDef& creationDef = objectDef.GetPropertyDefL( Object::KCreationDateProperty );
+ CMdEPropertyDef& modifiedDef = objectDef.GetPropertyDefL( Object::KLastModifiedDateProperty );
+ CMdEPropertyDef& sizeDef = objectDef.GetPropertyDefL( Object::KSizeProperty );
+ CMdEPropertyDef& itemTypeDef = objectDef.GetPropertyDefL( Object::KItemTypeProperty );
+
+ TTime timestamp( 0 );
+ timestamp.UniversalTime();
+
+ // required object properties
+ obj->AddTimePropertyL( creationDef, timestamp );
+ obj->AddTimePropertyL( modifiedDef, timestamp );
+ obj->AddUint32PropertyL( sizeDef, 0 ); // always zero size for location objects
+ obj->AddTextPropertyL( itemTypeDef, Location::KLocationItemType );
+
+ iMdeSession->AddObjectL( *obj );
+ CMdEObject* obj2 = iMdeSession->GetObjectL( obj->Id() );
+ CleanupStack::Pop( obj );
+
+ return obj2;
+ }
+
+void CLocationManagerTestScripter::HandleSessionOpened(CMdESession& /*aSession*/, TInt aError)
+ {
+ _LIT( KMsg, "CallBck HandleSessionOpened - Error code : %d" );
+ TBuf <100> msg;
+ msg.Format(KMsg, aError);
+ iLog->Log( msg );
+ RDebug::Print(msg);
+
+ // session event
+ TEventIf event( TEventIf::ESetEvent, _L("Session") );
+ TestModuleIf().Event( event );
+ }
+
+void CLocationManagerTestScripter::HandleSessionError(CMdESession& /*aSession*/, TInt aError)
+ {
+ _LIT( KMsg, "CallBck HandleSessionError - Error code : %d" );
+ TBuf <100> msg;
+ msg.Format(KMsg, aError);
+ iLog->Log( msg );
+ RDebug::Print(msg);
+
+ // session event
+ TEventIf event( TEventIf::ESetEvent, _L("Session") );
+ TestModuleIf().Event( event );
+ }
+
+void CLocationManagerTestScripter::TestLocationData( TLocationData& aLocationData )
+ {
+ _LIT( temp, "XXX" );
+ TBuf<3> countryTxt( temp );
+
+ TPosition testLocality;
+ testLocality.SetCoordinate( (TReal64)Math::Random()/KMaxTUint*180.0, (TReal64)Math::Random()/KMaxTUint*90.0, 10.0 );
+ testLocality.SetAccuracy( 2.0, 2.0 );
+
+ CTelephony::TNetworkInfoV1 networkInfo;
+ networkInfo.iAccess = CTelephony::ENetworkAccessGsm;
+ networkInfo.iAreaKnown = ETrue;
+ networkInfo.iBandInfo = CTelephony::E800BandA;
+ networkInfo.iCellId = 1;
+ networkInfo.iLocationAreaCode = 1;
+ networkInfo.iMode = CTelephony::ENetworkModeGsm;
+ networkInfo.iStatus = CTelephony::ENetworkStatusCurrent;
+ networkInfo.iCountryCode = countryTxt;
+ networkInfo.iNetworkId = countryTxt;
+
+ TCourse kurssi;
+ kurssi.SetCourse( 1.0 );
+ kurssi.SetCourseAccuracy( 1.0 );
+ kurssi.SetHeading( 10.0 );
+ kurssi.SetSpeed( 10.0 );
+
+ aLocationData.iPosition = testLocality;
+ aLocationData.iCountry = countryTxt;
+ aLocationData.iNetworkInfo = networkInfo;
+ aLocationData.iSatellites = 4;
+ aLocationData.iCourse = kurssi;
+ aLocationData.iQuality = 1;
+ }
+
+
+#ifdef LOC_REVERSEGEOCODE
+TInt CLocationManagerTestScripter::ConnectGeoTaggerL( CStifItemParser& /*aItem*/ )
+ {
+ _LIT( KMsg1, "ConnectGeoTaggerL" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ if(!iLocGeoTaggerConnected)
+ {
+ User::LeaveIfError( iLocationGeoTagger.Connect() );
+ }
+
+ iLocGeoTaggerConnected = ETrue;
+ return KErrNone;
+ }
+
+TInt CLocationManagerTestScripter::CloseGeoTaggerL( CStifItemParser& /*aItem*/ )
+ {
+ _LIT( KMsg1, "CloseGeoTaggerL" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ iLocationGeoTagger.Close() ;
+ iLocGeoTaggerConnected = EFalse;
+
+ return KErrNone;
+ }
+
+
+TInt CLocationManagerTestScripter::StartGeoTaggingL( CStifItemParser& /*aItem*/ )
+ {
+ _LIT( KMsg1, "Enter StartGeoTagging" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ //rav
+
+ if(!iLocGeoTaggerConnected)
+ {
+ User::LeaveIfError( iLocationGeoTagger.Connect() );
+ }
+
+ iLocGeoTaggerConnected = ETrue;
+
+
+
+ TRequestStatus status(KRequestPending);
+ TConnectionOption conOption(ESilent);
+ iLocationGeoTagger.StartGeoTagging(status,conOption);
+ User::WaitForRequest( status );
+
+ _LIT( KMsg3, " status.Int() =%d" );
+ iLog->Log( KMsg3,status.Int() );
+
+ TL( status.Int() == KErrNone );
+
+
+ _LIT( KMsg2, "Exit StartGeoTagging" );
+ iLog->Log( KMsg2 );
+ RDebug::Print( KMsg2 );
+
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CLocationManagerTestScripter::TestGeoTagCompleteStatusL
+// -----------------------------------------------------------------------------
+//
+TInt CLocationManagerTestScripter::TestGeoTagCompleteStatusL( CStifItemParser& /*aItem*/)
+ {
+ _LIT( KMsg1, "TestGeoTagCompleteStatusL enter" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ TRequestStatus status = KRequestPending;
+ TGeoTaggingSatus tagPendingFlag = EGeoTaggingPending;
+ iLocationGeoTagger.GeoTagStaus( status, tagPendingFlag );
+
+ User::WaitForRequest( status );
+
+ TL(status.Int() == KErrNone);
+
+ TL(tagPendingFlag == EGeoTagCmpt);
+
+ _LIT( KMsg2, "TestGeoTagCompleteStatusL exit" );
+ iLog->Log( KMsg2 );
+ RDebug::Print( KMsg2 );
+
+ return KErrNone;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CLocationManagerTestScripter::TestGeoTagPendingStatusL
+// -----------------------------------------------------------------------------
+//
+TInt CLocationManagerTestScripter::TestGeoTagPendingStatusL( CStifItemParser& aItem )
+ {
+ _LIT( KMsg1, "TestGeoTagPendingStatusL enter" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ TInt fntype;
+ aItem.GetNextInt(fntype);
+
+ TRequestStatus status = KRequestPending;
+ TGeoTaggingSatus tagPendingFlag = EGeoTagCmpt;
+ iLocationGeoTagger.GeoTagStaus( status, tagPendingFlag );
+
+ User::WaitForRequest( status );
+
+ TL(status.Int() == KErrNone);
+
+ if(fntype == 0 )
+ {
+ //for geotagged photos the tag status will be pending
+ TL(tagPendingFlag == EGeoTaggingPending);
+ }
+ else
+ {
+ //for geotagged photos the tag status will be pending
+ TL(tagPendingFlag == EGeoTagCmpt);
+ }
+
+ _LIT( KMsg2, "TestGeoTagPendingStatusL exit" );
+ iLog->Log( KMsg2 );
+ RDebug::Print( KMsg2 );
+
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CLocationManagerTestScripter::TestGeoTagGoingOnStatusL
+// -----------------------------------------------------------------------------
+//
+TInt CLocationManagerTestScripter::TestGeoTagGoingOnStatusL( CStifItemParser& aItem )
+ {
+ _LIT( KMsg1, "TestGeoTagGoingOnStatusL enter" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ TInt fntype;
+ aItem.GetNextInt(fntype);
+
+
+ TRequestStatus status = KRequestPending;
+ TGeoTaggingSatus tagPendingFlag = EGeoTagCmpt;
+ iLocationGeoTagger.GeoTagStaus( status, tagPendingFlag );
+
+ User::WaitForRequest( status );
+
+ TL(status.Int() == KErrNone);
+
+ if(fntype == 0 )
+ {
+ if(tagPendingFlag == EGeoTaggingPending)
+ {
+ TConnectionOption conOption(ESilent);
+ status = KRequestPending;
+ iLocationGeoTagger.StartGeoTagging(status,conOption);
+ iLocationGeoTagger.GeoTagStaus( status, tagPendingFlag );
+
+ TL(tagPendingFlag == EGeoTaggingGoingOn);
+
+ User::WaitForRequest( status );
+
+ TL(status.Int() == KErrNone);
+ }
+ }
+ else
+ {
+ TL(tagPendingFlag == EGeoTagCmpt);
+ }
+
+ _LIT( KMsg2, "TestGeoTagGoingOnStatusL exit" );
+ iLog->Log( KMsg2 );
+ RDebug::Print( KMsg2 );
+
+ return KErrNone;
+ }
+
+
+TInt CLocationManagerTestScripter::CancelGeoTaggingL( CStifItemParser& /*aItem*/ )
+ {
+ _LIT( KMsg1, "Enter CancelGeoTaggingL" );
+ iLog->Log( KMsg1 );
+ RDebug::Print( KMsg1 );
+
+ TRequestStatus status(KRequestPending);
+ TConnectionOption conOption(ESilent);
+ iLocationGeoTagger.StartGeoTagging(status,conOption);
+ iLocationGeoTagger.CancelGeoTaggingRequest();
+
+ User::WaitForRequest( status );
+
+ TL(status.Int() == KErrNone);
+
+
+ _LIT( KMsg2, "CancelGeoTaggingL exit" );
+ iLog->Log( KMsg2 );
+ RDebug::Print( KMsg2 );
+
+ return KErrNone;
+
+ }
+#endif //LOC_REVERSEGEOCODE
+
+ // End of file