phonebookengines_old/contactsmodel/tsrc/t_apac.h
changeset 40 b46a585f6909
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookengines_old/contactsmodel/tsrc/t_apac.h	Fri Jun 11 13:29:23 2010 +0300
@@ -0,0 +1,274 @@
+// Copyright (c) 2001-2009 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:
+//
+
+#include <cntview.h>
+#include "cntviewprivate.h"
+#include "t_utils2.h"
+
+
+//
+// Forward declarations.
+//
+
+class CSortChecker;
+class CTestBase;
+class CViewCreator;
+class CContactAdder;
+class CContactRemover;
+class CSortOrderChanger;
+class CUnsortableContactAdder;
+//
+// CTestConductor.
+//
+
+class CTestConductor : public CActive, public MContactViewObserver
+	{
+public:
+	static CTestConductor* NewL();
+	~CTestConductor();
+	void NextTest();
+private:
+	CTestConductor();
+	void ConstructL();
+private: // From CActive.
+	void RunL();
+	TInt RunError(TInt aError);
+	void DoCancel();
+private: // From MContactViewObserver.
+	virtual void HandleContactViewEvent(const CContactViewBase& aView,const TContactViewEvent& aEvent);
+private:
+	void ExerciseViewPreferencesL(const CContactViewBase* aViewToTest,TContactViewPreferences aPrefsToTest);
+private:
+	enum TTest
+		{
+		EAsyncOpen,
+		EAsyncOpened,
+		ECreateLocalView,
+		EAddInitialContacts,
+		ECreateLocalViewWithPlugin,		
+		ECreateRemoteView,
+		ECreateRemoteViewWithPlugin,
+		ECriteriaSearchForStringInLocal, 
+		ECriteriaSearchForStringInLocalWithPlugin,
+		ECriteriaSearchForStringInRemote, 
+		ECriteriaSearchForStringInRemoteWithPlugin,
+		EPrefixSearchForStringInLocal, 
+		EPrefixSearchForStringInLocalWithPlugin,
+		EPrefixSearchForStringInRemote, 
+		EPrefixSearchForStringInRemoteWithPlugin,
+		ENumTests
+		};
+public:
+	CContactOpenOperation* iContactOpenOperation;
+	RFs iFs;
+	CLog* iLog;
+	CContactDatabase* iDb;
+	CSortChecker* iSortChecker;
+	RContactViewSortOrder iSortOrder;
+	CContactLocalView* iLocalView;
+	CContactLocalView* iLocalViewWithPlugin;
+	CContactRemoteView* iRemoteView;
+	CContactRemoteView* iRemoteViewWithPlugin;
+	CRandomContactGenerator* iRandomGenerator;
+	RArray<TContactItemId> iTestIds;
+private:
+	CViewCreator* iViewCreator;
+	CContactAdder* iContactAdder;
+	CContactRemover* iContactRemover;
+	CSortOrderChanger* iSortOrderChanger;
+	TInt iCurrentTestNumber;
+	CTestBase* iCurrentTestObject;
+	CPtrC16Array* iFindDesArray;
+	CPtrC16Array* iFindDesArray2;
+	CUnsortableContactAdder* iUnsortableAdder;
+	TInt iTestError;
+	};
+
+
+//
+// CSortChecker.
+//
+
+class CSortChecker : public CBase
+	{
+public:
+	enum TSortOrder
+		{
+		EFirstNameLastName,
+		ELastNameFirstName
+		};
+	enum TCriteria
+		{
+		ELessThan,
+		ELessThanOrEqualTo,
+		EGreaterThan,
+		EGreaterThanOrEqualTo
+		};
+public:
+	static CSortChecker* NewL(CTestConductor& aConductor);
+	~CSortChecker();
+	void AddContactL(const TDesC& aFirstName,const TDesC& aLastName);
+	void RemoveContactL(const TDesC& aFirstName,const TDesC& aLastName);
+	TPtrC ContactAt(TSortOrder aOrder,TInt aIndex) const;
+	TInt Count() const;
+	TInt Count(TSortOrder aOrder,const TDesC& aLowBoundary,const TDesC& aHighBoundary) const;
+	TInt CountLow(TSortOrder aOrder,const TDesC& aHighBoundary) const;
+	TInt CountHigh(TSortOrder aOrder,const TDesC& aLowBoundary) const;
+	void Sort();	
+	void CheckSort(TSortOrder aOrder,const TDesC& aName,TInt aIndex) const;
+	void CheckSortLowSubView(TSortOrder aOrder,const TDesC& aName,TInt aIndex,const TDesC& aHighBoundary) const;
+	void CheckSortHighSubView(TSortOrder aOrder,const TDesC& aName,TInt aIndex,const TDesC& aLowBoundary) const;
+	void CheckSortSubView(TSortOrder aOrder,const TDesC& aName,TInt aIndex,const TDesC& aLowBoundary,const TDesC& aHighBoundary) const;
+private:
+	CSortChecker(CTestConductor& aConductor);
+	void ConstructL();
+	TInt FindIndex(TSortOrder aOrder,const TDesC& aBoundary,TCriteria aCriteria) const;
+	static TInt Compare(const HBufC& aFirst, const HBufC& aSecond);
+ 	static TInt CompareWithoutIgnoringSpacesL(const HBufC& aFirst, const HBufC& aSecond);
+ 	static void RemoveCharacterFromDescriptor(const TChar aChar, TDes& aDes);
+	static TBool Match(const HBufC& aFirst,const HBufC& aSecond);
+private:
+	CTestConductor& iConductor;
+	TCollationMethod* iCollateMethod;
+	RPointerArray<HBufC> iSortedFirstLast;
+	RPointerArray<HBufC> iSortedLastFirst;
+	};
+
+
+//
+// CTestBase.
+//
+
+class CTestBase : public CBase
+	{
+public:
+	virtual void HandleNotificationL(const CContactViewBase& aView,const TContactViewEvent& aEvent)=0;
+protected:
+	CTestBase(CTestConductor& aConductor);
+protected:
+	CTestConductor& iConductor;
+	};
+
+
+//
+// CViewCreator.
+//
+
+class CViewCreator : public CTestBase
+	{
+public:
+	static CViewCreator* NewL(CTestConductor& aConductor);
+	CContactLocalView* CreateLocalViewL(const RContactViewSortOrder& aSortOrder);
+	CContactLocalView* CreateLocalViewL(const RContactViewSortOrder& aSortOrder,TContactViewPreferences aViewPrefs);
+	CContactNamedLocalView* CreateNamedLocalViewL(const TDesC& aName,const RContactViewSortOrder& aSortOrder);
+	CContactRemoteView* CreateRemoteViewL(const RContactViewSortOrder& aSortOrder);
+	CContactNamedRemoteView* CreateNamedRemoteViewL(const TDesC& aName,const RContactViewSortOrder& aSortOrder);
+	CContactSubView* CreateSubViewL(CContactViewBase& aUnderlyingView,const TDesC& aBoundary);
+	CContactSubView* CreateSubViewL(CContactViewBase& aUnderlyingView,const TDesC& aLowBoundary,const TDesC& aHighBoundary);
+	CContactConcatenatedView* CreateConcatenatedViewL(RPointerArray<CContactViewBase>& aComponentViews);
+	virtual void HandleNotificationL(const CContactViewBase& aView,const TContactViewEvent& aEvent);
+private:
+	CViewCreator(CTestConductor& aConductor);
+	CContactViewBase* iView;
+	};
+
+
+//
+// CContactAdder.
+//
+
+class CContactAdder : public CTestBase
+	{
+public:
+	static CContactAdder* NewL(CTestConductor& aConductor);
+	~CContactAdder();
+	void AddContactsL(const TDesC& aFileName,TInt aNumViews);
+	virtual void HandleNotificationL(const CContactViewBase& aView,const TContactViewEvent& aEvent);
+	static TBool ReadNamePairL(RFile aFile,TDes& aFirstName,TDes& aLastName);
+private:
+	CContactAdder(CTestConductor& aConductor);
+	void ConstructL();
+	void AddOneContactL();
+private:
+	RFs iFs;
+	RFile iFile;
+	CContactTemplate* iTemplate;
+	TBool iFinished;
+	TInt iNumViews;
+	TInt iNumNotifications;
+	};
+
+
+//
+// CContactRemover.
+//
+
+class CContactRemover : public CTestBase
+	{
+public:
+	static CContactRemover* NewL(CTestConductor& aConductor);
+	~CContactRemover();
+	void RemoveContactsL(const TDesC& aFileName,TInt aNumViews);
+	virtual void HandleNotificationL(const CContactViewBase& aView,const TContactViewEvent& aEvent);
+private:
+	CContactRemover(CTestConductor& aConductor);
+	void ConstructL();
+	void RemoveOneContactL();
+private:
+	RFs iFs;
+	RFile iFile;
+	TBool iFinished;
+	TInt iNumViews;
+	TInt iNumNotifications;
+	};
+
+class CSortOrderChanger : public CTestBase
+	{
+public:
+	static CSortOrderChanger* NewL(CTestConductor& aConductor);
+	void ChangeSortOrderL(RContactViewSortOrder& aSortOrder,CContactNamedLocalView& aView,TInt aNumViews);
+	void ChangeSortOrderL(RContactViewSortOrder& aSortOrder,CContactNamedRemoteView& aView,TInt aNumViews);
+	~CSortOrderChanger();
+	virtual void HandleNotificationL(const CContactViewBase& aView,const TContactViewEvent& aEvent);
+private:
+	CSortOrderChanger(CTestConductor& aConductor);
+private:
+	CContactTextDef* iTextDef;
+	TInt iNumViews;
+	TInt iNumNotifications;
+	};
+
+//
+// CContactAdder.
+//
+
+class CUnsortableContactAdder : public CTestBase
+	{
+public:
+	static CUnsortableContactAdder* NewL(CTestConductor& aConductor,const CContactViewBase& aView);
+	~CUnsortableContactAdder();
+	void AddContactsL(TInt aNumberOfContact,TContactViewPreferences aContactTypes);
+	virtual void HandleNotificationL(const CContactViewBase& aView,const TContactViewEvent& aEvent);
+	inline void SetNumContactExpected(TInt aNoContact) {iNumContacts=aNoContact;}
+	inline TInt NumContactsExpected() {return iNumContacts;}
+private:
+	CUnsortableContactAdder(CTestConductor& aConductor,const CContactViewBase& aView);
+	void ConstructL();
+private:
+	TBool iFinished;
+	TInt iNumContacts;
+	TInt iNumNotifications;
+	const CContactViewBase* iView;
+	};