landmarks/locationlandmarks/tsrc/LandmarkTestModule/src/FT_CPosTp143.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:37:04 +0300
branchRCL_3
changeset 44 2b4ea9893b66
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
* Copyright (c) 2005 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: 
*   ?description_line
*
*/


#include <EPos_CPosLandmarkDatabase.h> 
#include <EPos_CPosLandmarkDatabaseExtended.h> 
#include <EPos_CPosLMItemIterator.h> 
#include <e32svr.h> // RDebug
#include "FT_CPosTp143.h"

// ================= MEMBER FUNCTIONS =======================

// ---------------------------------------------------------
// ---------------------------------------------------------
//
void CPosTp143::StartL()
    {
    RemoveDefaultDbL();
    RemoveAllLmDatabasesL();
    
    iDatabase = CPosLandmarkDatabase::OpenL();
    if (iDatabase->IsInitializingNeeded())
       {
       ExecuteAndDeleteLD(iDatabase->InitializeL()); 
       }
    
    ExecuteAndDeleteLD(iDatabase->CompactL());
    AddLandmarksL();
    
    CheckCountersL();
    }

// ---------------------------------------------------------
// ---------------------------------------------------------
//
void CPosTp143::CloseTest()
    {
    iLandmarks.ResetAndDestroy();
    iLandmarks.Close();
    delete iDatabase;
    iDatabase = NULL;
    }

// ---------------------------------------------------------
// ---------------------------------------------------------
//
void CPosTp143::AddLandmarksL()
    {
    iLog->Log(_L("AddLandmarksL"));
    _LIT(KLmName, "LmTP143 - %d");
    _LIT(KLmDescription, "LmTP143Description - %d");
    
    const TInt KNoLandmarks = 1000;
    for (TInt i=0; i< KNoLandmarks ; i++)
        {
        TBuf<100> lmName;
        lmName.Format(KLmName,i);
        TBuf<100> lmDesc;
        lmDesc.Format(KLmDescription,i);
       
        CPosLandmark* landmark = CPosLandmark::NewLC();
        landmark->SetLandmarkNameL(lmName); 
        landmark->SetLandmarkDescriptionL(lmDesc);
        TInt err = KErrLocked;
        while (err == KErrLocked)
            {
            TRAP(err, iDatabase->AddLandmarkL(*landmark));
            }
        
        iLandmarks.Append(landmark);
       
        CleanupStack::Pop(landmark); 
        }
    }

// ---------------------------------------------------------
// ---------------------------------------------------------
//
void CPosTp143::CheckCountersL()
    {
    iLog->Log(_L("CheckCountersL"));

    TTime start, end;
    CPosLandmarkDatabaseExtended* dbExt = CPosLandmarkDatabaseExtended::OpenL();
    CleanupStack::PushL(dbExt);
    
    iLog->Log(_L("checking LandmarksCount"));
    start.UniversalTime();
    TInt lmCount = dbExt->LandmarksCount();
    end.UniversalTime();
    TTimeIntervalMicroSeconds interval = end.MicroSecondsFrom( start );
    iLog->Log(_L("LandmarksCount done in %ld us"), interval.Int64());
    
    if ( lmCount != iLandmarks.Count() )
        {
        iLog->Log( _L("LandmarksCount wrong result, expected %d, actual %d"),
            iLandmarks.Count(), lmCount );
        User::Leave( KErrGeneral );
        }

    CPosLmItemIterator* iter = iDatabase->LandmarkIteratorL();
    CleanupStack::PushL(iter);

    if ( lmCount != iter->NumOfItemsL() )
        {
        iLog->Log( _L("CategoriesCount wrong result, expected %d, actual %d"),
            iter->NumOfItemsL(), lmCount );
        User::Leave( KErrGeneral );
        }

    CleanupStack::PopAndDestroy( iter );

    iLog->Log(_L("checking CategoriesCount"));
    start.UniversalTime();
    TInt catCount = dbExt->CategoriesCount();
    end.UniversalTime();
    interval = end.MicroSecondsFrom( start );
    iLog->Log(_L("CategoriesCount done in %ld us"), interval.Int64());
    
    CPosLmCategoryManager& catman = dbExt->CategoryManager();
    
    CPosLmItemIterator* catIter = catman.CategoryIteratorL();
    CleanupStack::PushL(catIter);
    
    if ( catCount != catIter->NumOfItemsL() )
        {
        iLog->Log( _L("CategoriesCount wrong result, expected %d, actual %d"),
            catIter->NumOfItemsL(), catCount );
        User::Leave( KErrGeneral );
        }

    CleanupStack::PopAndDestroy( catIter );
    CleanupStack::PopAndDestroy( dbExt );
    }