contacts_plat/predictivesearch_client_api/tsrc/PsClientTestSuite/inc/TestSuiteInputData.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 13 Oct 2010 14:15:33 +0300
branchRCL_3
changeset 85 38bb213f60ba
parent 74 6b5524b4f673
permissions -rw-r--r--
Revision: 201039 Kit: 201041

/*
* Copyright (c) 2006-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:  Parser of the data received from configuration file
*
*/


#ifndef TEST_SUITE_INPUT_DATA_H
#define TEST_SUITE_INPUT_DATA_H

// SYSTEM INCLUDES
#include <e32base.h>
#include <CPsQuery.h>
#include <CPsSettings.h>
#include <StifParser.h>
#include <CPsClientData.h>
#include <CPsRequestHandler.h>

//User Include
#include "psclienttestsuitedefs.h"

//Forward Declaration
class CPcsTestContactsHandler;

/**
 *  This class performs parsing of the data input from the configuration file
 *
 *  @since S60 v3.2
 */
class CTestSuiteInputData :public CBase
{
	public:  // Constructors and destructor

        /**
        * Two-phased constructor.
        */
        static CTestSuiteInputData* NewL(CStifItemParser& aItem,CPSRequestHandler& aPsClientHandler);

        /**
        * Destructor.
        */
        virtual ~CTestSuiteInputData();

	public: // Functions

		/**
		* Provides the Keyboard mode of this object
		*
		* @return Keyboard mode of this object
		*/
		TDesC& KeyboardMode() const;

		/**
		* Sets the Keyboard mode of this object
		*
		* @param aKeyboardMode The Keyboard mode
		*/
		void SetKeyboardModeL(const TDesC& aKeyboardMode);

		/**
		* Returns the search query, as specified in the configuration parameter
		*
		* @return Query
		*/
		TDesC& Query() const;

		/**
		* Sets the search query
		*
		* @param aQuery	The Query
		*/
		void SetQueryL(const TDesC& aQuery);

		/**
		* Pointer to the data element at the specified location
		*
		* @param aIndex Index of data element
		* @param aInputCacheData Pointer to data element
		*/
		void InputCacheData(TInt aIndex, cacheData& aInputCacheData) const;

		/**
		* Adds the cachedata to the array of input cache data
		*
		* @param aInputCacheData
		*/
		void AppendInputCacheDataL(const cacheData& aInputCacheData);

		/**
		* Returns the number of Input Cache Data elements
		*
		* @return Number of Input Cache Data elements
		*/
		TInt InputCacheDataCount() const;

		/**
		* Returns the array of cachedata of the result data
		*
		* @param aResultData Pointer to data element
		*/
		void ResultData(RPointerArray<cacheData>& aResultData) const;

		/**
		* Appends cachedata to the the aResultData
		*
		* @param aResultData
		*/
		void AppendResultDataL(const cacheData& aResultData);

		/**
		* Returns the number of ResultData elements
		*
		* @return Number of ResultData elements
		*/
		TInt ResultDataCount() const;

		/**
		* Returns the sort type
		*
		* @return sort Type
		*/
		TSortType GetSortType();

		/**
		* Returns the pointer to the uri at the specified location
		*
		* @param aIndex Index of data element
		* @return Pointer to Cache Uri
		*/
		TDesC& CacheUris(TInt aIndex) const;

		/**
		* Sets the cache uris
		*
		* @param aCacheUri Cache Uri descriptor to be searched
		*/
		void ApendCacheUrisL(RPointerArray<TDesC>& aCacheUriArray);

		/**
		* Returns the number of Cache Uris (data stores)
		*
		* @return Number of Cache Uris (data stores)
		*/
		TInt CacheUrisCount() const;

		/*
		* Returns the Input language (as specified in the configuration file)
		*/
		TLanguage LanguageInput();

		/*
		* Returns the expected result for the  Input language
		* (as specified in the configuration file)
		*/
		TBool LanguageInputExpectedResult();
		/*
		* Parses the input data
		*
		* @param aItem - The input test case name and parmeters
		*/
		void ParseInputL(CStifItemParser& aItem);

		/*
		* Creates contacts in the phonebook. The contact data is taken from iInputCacheData
		*/
		void CreateContactsL();

		/*
		* Creates the search query
		*
		* @param aPsQuery - The search query as needed by the ps engine
		* @param aQueryBuf - The input search query
		*/
		void CreateSearchQueryL(CPsQuery& aPsQuery,TDesC& aQueryBuf);

		/*
		* Performs the search settings
		*
		* @param aSettings - The search settings
		*/
		void PerformSearchSettingsL(CPsSettings& aSettings);

		/*
		* compares the search results with expected results
		*
		* @param aSettings - The search results
		*/
		TInt CompareResWithExpResL(RPointerArray<CPsClientData>& searchResults);
		TInt ExactMatchCompareInputDataWithResultDataL(RPointerArray<CPsClientData>& searchResults);

		/*
		* Deletes all the created contacts
		*/
		void DeleteAllCreatedContactsL();

		/*
		* Deletes contacts with specific ids
		*/
		void DeleteContactsWithIdsL(RArray<TInt>& aContactIdArray);

		/*
		* Returns the input search string
		*/
		TDesC& InputSearchString() const;

		/*
        * Returns the input search string
        */
        const TDesC& ExpectedResultString() const;

        /*
        * Returns the input boolean
        */
        TBool InputBoolean() const;

		/*
		* Return the group name to be searched (as specified in configuration file)
		*/
		TDesC& GroupToBeSearched() const;

	    /*
        * Tests if Id returns correct vpbklink
        *
        * @param aPsClientHandler -  PsClientHandler instance
        * @param srchId -  Id to be tested\
        * @return - ETrue if Id returns correct link, else EFalse
        */
        TBool TestVpbkLinkForIdL(CPSRequestHandler& aPsClientHandler,const CPsClientData& aSearchResult);

		/**
        * Returns ths sort order
        *
        * @param aSortOrder - The sort order
        */
	    void SortOrder(RArray<TInt>& aSortOrder);

	    /*
	    * Return array of expected result locations data
	    */
	    const RArray<TPsMatchLocation>& ExpectedLocations();

private: // functions

		/**
		* Default Constructor
		*/
		CTestSuiteInputData();

		/**
		* Second phase constructor
		*/
		void ConstructL(CStifItemParser& aItem,CPSRequestHandler& aPsClientHandler);

private:  // Private functions for internal Parsing data
		void ParseInputForContactsDataL(TDesC& aInput, TInt aType);
	    void AddSingleContactDataL(TDesC& aInput, TInt aType);
	    void ParseInputForMatchLocationsL(TDesC& aInput);
	    void ParseInputForDataStoresUriL(TDesC& aInput);
	    void GetCharacterSeparatedDataL(TDesC& aInput, TChar aSeparator, RPointerArray<TDesC> &aSeparatedData);
	    void ParseInputForSearchQueryL(TDesC& aInput);
        TBool CompareInputDataWithResultDataL(CPsClientData& aResData,cacheData aInputData);
        void ParseInputForDisplayFieldsL(TDesC& aInput);
	    void ParseInputInputSearchStringL(TDesC& aInput);
        void ParseInputExpectedResultStringL(TDesC& aInput);
        void ParseInputInputBoolean(TDesC& aInput);
	    void ParseInputForLanguageSupportL(TDesC& aInput);
	    void ParseInputForAddingGroupsL(TDesC& aInput);
	    void ParseInputForSearchWithinGroupL(TDesC& aInput);
		void ParseInputForSortOrderL(TDesC& aInput);
		TInt GetFieldIdFromVpbkIdentifierL(TDesC& aIdentifierAsString);

private: // data

        /*
		* Array of cache data elements
		*/
		RPointerArray<cacheData>  iInputCacheData;

		/*
		* Array of cache data elements of the expected results
		*/
		RPointerArray<cacheData>  iResultData;

		/*
		 * Array of expected result locations data
		 */
        RArray<TPsMatchLocation> iExpectedLocations;

		/*
		* Array of cache uris to be searched
		*/
		RPointerArray<TDesC>  iCacheUris;

		/*
		* Keyboard mode
		*/
		HBufC* iKeyboardModeBuf;

		/*
		* The search query
		*/
		HBufC* iQueryBuf;

		/*
		* The contacts handler. Performs the operations related to virtual phone book
		*/
		CPcsTestContactsHandler * iContactHandler;

		/*
		* The client handler
		*/
		CPSRequestHandler* iPsClientHandler;

    	/*
		* Flag indicating if the contacts have been created
		*/
    	TBool iContactAlreadyCreated;

    	/*
		* The list of display fields
		*/
    	RArray<TInt> iDisplayFields;

    	/*
		* The input search string
		*/
    	HBufC* iInputSearchString;

        /*
        * The expected result string
        */
        HBufC* iExpectedResultString;

        /*
        * The input boolean
        */
        TBool iInputBoolean;

    	/*
		* The input language id
		*/
    	TLanguage iLangId;

    	/*
		* Flag indicating if the language is supported
		*/
    	TBool iIsLangSupported;

    	/*
		* The group to be searched
		*/
    	HBufC* iGroupToBeSearched;

    	/*
		* The sort Type
		*/
    	TSortType iSortType;

    	/*
    	* The sort order
    	*/
    	RArray<TInt> iSortOrder;

    	/*
    	* The max number of results
    	*/
    	TInt iMaxNumberOfResults;

};

#endif // TEST_SUITE_INPUT_DATA_H

// End of file