landmarks/locationlandmarks/tsrc/LandmarkTestModule/inc/FT_CPosTp122.h
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
*
*/


#ifndef CPOSTP122_H
#define CPOSTP122_H

//  INCLUDES
#include "FT_CLandmarkTestProcedureBase.h"
#include <EPos_CPosLmNearestCriteria.h>

// FORWARD DECLARATIONS
class CPosLmMultiDbSearch;
class CNearestSearchResult;
// CLASS DECLARATION

/**
*  Test procedure 122
*/
class CPosTp122 : public CLandmarkTestProcedureBase
    {
    public:  // Constructors and destructor
        
        /**
        * C++ default constructor.
        */
      
        CPosTp122(TInt tpno, CStifLogger* aLog) : CLandmarkTestProcedureBase(tpno, aLog) {iErrorsFound = KErrNone;};
        /**
        * Destructor.
        */
        ~CPosTp122() {};

    public: // Functions from base classes

        
        
        void CloseTest();

       
        void InitTestL();

        /**
        * From CLandmarkTestProcedureBase
        * Runs the test in the module
        */
        void StartL();

    private:
    
    	enum TTp122SortOrder
            {
            ESortNone,
            ESortAscending,
            ESortDescending
            };

        void AppendNearestSearchResultsL();
        
        void TestLeaveCodesL();
        
        void CancelTestL(const RPointerArray<CNearestSearchResult>& aSearchResults,
        					TBool aCancelInCallback);
        
        void StartSearchOperationL(
            const RPointerArray<CNearestSearchResult>& aSearchResults, 
            TExecutionMode aExecutionMode = ESynchronous,
            TTp122SortOrder aSortOrder = ESortNone,
            TInt aNrOfSearches = 0);
        
        void SearchL(
            CPosLmNearestCriteria* aNearestSearchCriteria,
            TExecutionMode aExecutionMode,
            TBool aRefinedSearch = EFalse,
            TTp122SortOrder aSortOrder = ESortNone);
        
        void TestMaximumNrOfMatchesL(
            const RPointerArray<CNearestSearchResult>& aSearchResults, 
            TExecutionMode aExecutionMode, TTp122SortOrder aSortOrder);
            
        void ValidateTotalNrOfMatchesL(
            TUint aRetrievedNrOfMatches,
            TUint aExpectedNrOfMatches);
            
        TInt NrOfSearchErrors(CPosLmMultiDbSearch* aMultiDbSearcher);
            
      	void TestOnTheFlySearchL(const RPointerArray<CNearestSearchResult>& aSearchResults);
            
        void ValidateIdL(TPosLmItemId aId, TInt aDbIndex);
        	    
        void PrepareDatabasesL();
            
        void CheckSearchResultL(CNearestSearchResult& aSearchResult, TTp122SortOrder aSortOrder);
        
        void PrintLm(CPosLandmarkDatabase* db);
        
        void DoLastTestPartL(const RPointerArray<CNearestSearchResult>& aSearchResults);
        
        void CheckDbL();
        
        void SetupLimits();
            
    private:

        CDesCArray*             iDatabases;
        CPosLmMultiDbSearch*    iMultiDbSearch;
        TInt                    iNrOfDatabases;
        
        RPointerArray<CNearestSearchResult>    iNearestSearchResults;
        TInt 					iErrorsFound;
        
        CPosLmDisplayData* iDisplayData;
        TBool iPartial;
        
        TUint iIdDb1Min;
        TUint iIdDb1Max;
        TUint iIdDb2Min;
        TUint iIdDb2Max;
        TUint iIdDb3Min;
        TUint iIdDb3Max;
        TUint iIdDb4Min;
        TUint iIdDb4Max;
        TUint iIdDb5Min;
        TUint iIdDb5Max;

    };

// Commented for testing -- Moved these class defines to FT_CPosTp35.h

class TSearchResult 
    {
    public:
        
        TSearchResult();

        TSearchResult(const TPosLmItemId& aId, const TReal32& aDistance);

        TReal64 Distance() const;

        TPosLmItemId Id() const;

    private:
        friend class CPosTp122;

        TReal32         iDistance;
        TPosLmItemId    iId;   

    };



class CNearestSearchResult : public CSearchResultBase
    {

    public:  // Constructors and destructor
        
        /**
        * Two-phased constructor.
        */
        static CNearestSearchResult* NewL(
            const TDesC& aDes, 
            const TInt& aIndex,
            RFs& aFileSession); 

        /**
        * Destructor.
        */
        ~CNearestSearchResult();
        
    public: 

        TReal64 Latitude() const;

        TReal64 Longitude() const;
        
        TBool UseCoverageRadius() const;
        
        TReal32 MaxDistance() const;

        TInt ErrorCode() const;

        void Print(TDes& aDes);

        void PrintDistances(TDes& aPrint);

    private: 
        
        /**
        * Constructor.
        */
        CNearestSearchResult(RFs& aFileSession);

        void ConstructL(const TDesC& aDes, const TInt& aIndex);
        
        void AppendDistancesL(const TInt& aIndex);

        void ParseDistanceL(const TDesC& aDes, const TInt& aIndex, const TPosLmItemId& aId);

        void SortDistances();

    private:

         // By default, prohibit copy constructor
        CNearestSearchResult(const CNearestSearchResult&);
        // Prohibit assigment operator
        CNearestSearchResult& operator=(const CNearestSearchResult&);

    private: // Data
      
        friend class CPosTp122;

        enum TValueIndex
			{
            ELatitude           =1,	
            ELongitude          =2,	
            EUseCoverageRadius  =3,
            EMaxDistance        =4,
            EErrorCode          =5,
            ERedefined          =6,
            EMaxSearchResult    =7,
            ESearchResult       =8
			};
        
        TInt        iErrorCode;
        TReal64     iLatitude;
        TReal64     iLongitude;
        TBool       iUseCoverageRadius;
        TReal32     iMaxDistance;
        TInt        iMaxSearchResult;

        RArray<TSearchResult>       iDistances;
        
        CPosLandmarkDatabase* iDatabase;
        RFs& iFileSession;
    }; 
   

#endif      // CPOSTP122_H
            
// End of File