--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locsrv_pub/landmarks_api/tsrc/bc_landmarks_api/src/testcposlmitemiterator.cpp Tue Feb 02 01:06:48 2010 +0200
@@ -0,0 +1,206 @@
+/*
+* Copyright (c) 2007 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: Provides testing of CPosLmItemIterator class methods
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <EPos_CPosLandmark.h>
+#include <EPos_CPosLandmarkDatabase.h>
+#include <EPos_CPosLmCategoryManager.h>
+#include <EPos_CPosLandmarkCategory.h>
+#include <LbsPosition.h>
+#include "testcposlmitemiterator.h"
+
+// Literals
+// Test Database URI
+_LIT( KDBUri, "file://c:eposlmtest.ldb" );
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CTestPosLmItemIterator::CTestPosLmItemIterator
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CTestPosLmItemIterator::CTestPosLmItemIterator( CStifLogger* aLog )
+ {
+ iLog = aLog;
+ }
+
+// -----------------------------------------------------------------------------
+// CTestPosLmItemIterator::NewL
+//
+//
+// -----------------------------------------------------------------------------
+//
+CTestPosLmItemIterator* CTestPosLmItemIterator::NewL(CStifLogger* aLog)
+ {
+ CTestPosLmItemIterator* self = new (ELeave) CTestPosLmItemIterator( aLog );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CTestPosLmItemIterator::ConstructL
+//
+//
+// -----------------------------------------------------------------------------
+//
+void CTestPosLmItemIterator::ConstructL()
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// CTestPosLmItemIterator::~CTestPosLmItemIterator
+//
+//
+// -----------------------------------------------------------------------------
+//
+CTestPosLmItemIterator::~CTestPosLmItemIterator()
+ {
+
+ }
+
+// -----------------------------------------------------------------------------
+// CTestPosLmItemIterator::NumOfItems
+//
+//
+// -----------------------------------------------------------------------------
+//
+TInt CTestPosLmItemIterator::NumOfItemsL( CStifItemParser& /*aItem*/ )
+ {
+ // Open and init default database
+ CPosLandmarkDatabase* lmkDatabase = CPosLandmarkDatabase::OpenL( KDBUri );
+ CleanupStack::PushL( lmkDatabase );
+ ExecuteAndDeleteLD( lmkDatabase->InitializeL() );
+ // Get Landmark Iterator
+ CPosLmItemIterator* iterator = lmkDatabase->LandmarkIteratorL();
+ CleanupStack::PushL( iterator );
+ // Get number of landmarks in database, which are iterated through iterator
+ TUint number = iterator->NumOfItemsL();
+ // Print number
+ TBuf<10> buf;
+ buf.AppendNum( number );
+ iLog->Log( buf );
+ iLog->Log(_L("NumOfItemsL Success"));
+ CleanupStack::PopAndDestroy( 2, lmkDatabase );
+ ReleaseLandmarkResources();
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CTestPosLmItemIterator::NextItem
+//
+//
+// -----------------------------------------------------------------------------
+//
+TInt CTestPosLmItemIterator::NextItemL( CStifItemParser& /*aItem*/ )
+ {
+ // Open and init default database
+ CPosLandmarkDatabase* lmkDatabase = CPosLandmarkDatabase::OpenL( KDBUri );
+ CleanupStack::PushL( lmkDatabase );
+ ExecuteAndDeleteLD(lmkDatabase->InitializeL());
+ iLog->Log(_L("Database done"));
+ // Get Landmark Iterator
+ CPosLmItemIterator* iterator = lmkDatabase->LandmarkIteratorL();
+ CleanupStack::PushL( iterator );
+ // Call NextL to get id of next landmark in database
+ TPosLmItemId id;
+ id = iterator->NextL();
+ // Print name of landmark
+ CPosLandmark* landmark = lmkDatabase->ReadLandmarkLC(id);
+ TPtrC name;
+ landmark->GetLandmarkName( name );
+ iLog->Log( name );
+ // NextL successful
+ iLog->Log(_L("NextItem successful"));
+ CleanupStack::PopAndDestroy( 3, lmkDatabase );
+ ReleaseLandmarkResources();
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CTestPosLmItemIterator::GetItemIdsL
+//
+//
+// -----------------------------------------------------------------------------
+//
+TInt CTestPosLmItemIterator::GetItemIdsL( CStifItemParser& /*aItem*/ )
+ {
+ // Open and init default database
+ CPosLandmarkDatabase* lmkDatabase = CPosLandmarkDatabase::OpenL( KDBUri );
+ CleanupStack::PushL( lmkDatabase );
+ ExecuteAndDeleteLD( lmkDatabase->InitializeL() );
+ // Get Landmark Iterator
+ CPosLmItemIterator* iterator = lmkDatabase->LandmarkIteratorL();
+ CleanupStack::PushL( iterator );
+ // Get number of landmarks in database, which are iterated through iterator
+ TUint number = iterator->NumOfItemsL();
+ // Get ids of all the items in array
+ RArray<TPosLmItemId> idArray;
+ iterator->GetItemIdsL( idArray, 0, number );
+ //
+ if ( idArray.Count() != number )
+ {
+ iLog->Log(_L("GetItemIdsL fails"));
+ User::Leave( KErrGeneral );
+ }
+ iLog->Log(_L("GetItemIdsL successful"));
+ CleanupStack::PopAndDestroy( 2, lmkDatabase );
+ ReleaseLandmarkResources();
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CTestPosLmItemIterator::ResetIteratorL
+//
+//
+// -----------------------------------------------------------------------------
+//
+TInt CTestPosLmItemIterator::ResetIteratorL( CStifItemParser& /*aItem*/ )
+ {
+ // Open and init default database
+ CPosLandmarkDatabase* lmkDatabase = CPosLandmarkDatabase::OpenL( KDBUri );
+ CleanupStack::PushL( lmkDatabase );
+ ExecuteAndDeleteLD( lmkDatabase->InitializeL() );
+ // Get Landmark Iterator
+ CPosLmItemIterator* iterator = lmkDatabase->LandmarkIteratorL();
+ CleanupStack::PushL( iterator );
+ // Get id of first item befor reset
+ TPosLmItemId idBeforeReset = iterator->NextL();
+ // Reset iterator
+ iterator->Reset();
+ // Get id after reset, should return id of first item
+ TPosLmItemId idAfterReset = iterator->NextL();
+ // Compare both the ids
+ if ( idBeforeReset != idAfterReset )
+ {
+ iLog->Log(_L("ResetIteratorL fails"));
+ User::Leave( KErrGeneral );
+ }
+ TBuf<5> buf;
+ buf.Append(idAfterReset);
+ iLog->Log(buf);
+ iLog->Log(_L("ResetIteratorL successful"));
+ CleanupStack::PopAndDestroy( 2, lmkDatabase );
+ ReleaseLandmarkResources();
+ return KErrNone;
+ }