locsrv_pub/landmarks_api/tsrc/bc_landmarks_api/src/testcposlmitemiterator.cpp
changeset 0 667063e416a2
--- /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;	
+	}