phonebookengines_old/contactsmodel/tsrc/t_view2.h
changeset 40 b46a585f6909
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookengines_old/contactsmodel/tsrc/t_view2.h	Fri Jun 11 13:29:23 2010 +0300
@@ -0,0 +1,390 @@
+// 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 CViewExerciser;
+class CSortOrderChanger;
+class CUnsortableContactAdder;
+class CContactOwnCardRemover;
+class CContactOwnCardModifier;
+//
+// CTestConductor.
+//
+
+class CTestConductor : public CActive, public MContactViewObserver
+	{
+public:
+	static CTestConductor* NewL();
+	~CTestConductor();
+	void NextTest();
+private:
+	CTestConductor();
+	void ConstructL();
+private: // From CActive.
+	void RunL();
+	void DoCancel();
+	TInt RunError(TInt aError);
+private: // From MContactViewObserver.
+	virtual void HandleContactViewEvent(const CContactViewBase& aView,const TContactViewEvent& aEvent);
+private:
+	void ExerciseViewPreferencesL(const CContactViewBase* aViewToTest,TContactViewPreferences aPrefsToTest);
+private:
+	enum TTest
+		{
+		ECreateLocalView,
+		EAddInitialContacts,
+		EExerciseLocalView_1,
+		ECreateLocalNamedView,
+		EExerciseLocalNamedView_1,
+		EAddMoreContacts_1,
+		EExerciseLocalView_2,
+		EExerciseLocalNamedView_2,
+		ECreateRemoteView1,
+		EExerciseRemoteView1,
+		ECreateRemoteView2,
+		EExerciseRemoteView2,
+		ECreateNamedRemoteView1,
+		EExerciseNamedRemoteView1,
+		ECreateNamedRemoteView2,
+		EExerciseNamedRemoteView2,
+		ECreateSubViewLessThanA,
+		EExerciseSubViewLessThanA,
+		ECreateSubViewAbc,
+		EExerciseSubViewAbc,
+		ECreateSubViewDef,
+		EExerciseSubViewDef,
+		ECreateSubViewGhi,
+		EExerciseSubViewGhi,
+		ECreateSubViewJkl,
+		EExerciseSubViewJkl,
+		ECreateSubViewGreaterThanOrEqualToM,
+		EExerciseSubViewGreaterThanOrEqualToM,
+		ECreateConcatenatedView,
+		EExerciseConcatenatedView,
+		EChangeSortOrder1,
+		EChangeSortOrder2,
+		EChangeSortOrder3,
+		EExerciseAllAffectedViews,
+		EAddMoreContacts_2,
+		EExerciseAllViews_1,
+		ERemoveSomeContacts,
+		EExerciseAllViews_2,
+		EAllViewsOutOfBoundsAccess,
+		ECreateLocalViewWithUnsortableAtEnd,
+		EAddUnsortableContacts,
+		EExerciseLocalViewWithUnsortableAtEnd,
+		EAddFreshLocalView,
+		EExerciseFreshLocalView,
+		EAddSomeMoreUnsortableContacts,
+		EExerciseViewForPrefsAgain,
+		EAddWhiteSpaceContacts,
+		EExerciseWhiteSpaceContacts,
+		ERemoveOwnCardContact,
+		EModifyOwnCardContact,
+		ESearchForEuroChar, 
+		ENumTests
+		};
+public:
+	RFs iFs;
+	CLog* iLog;
+	CContactDatabase* iDb;
+	CSortChecker* iSortChecker;
+	RContactViewSortOrder iSortOrder_1;
+	RContactViewSortOrder iSortOrder_2;
+	RContactViewSortOrder iSortOrder_3;
+	RContactViewSortOrder iSortOrder_4;
+	CContactLocalView* iLocalView;
+	CContactLocalView* iFreshLocalView;
+	CContactNamedLocalView* iNamedLocalView;
+	CContactSubView* iSubViewLessThanA;
+	CContactSubView* iSubViewAbc;
+	CContactSubView* iSubViewDef;
+	CContactSubView* iSubViewGhi;
+	CContactSubView* iSubViewJkl;
+	CContactSubView* iSubViewGreaterThanOrEqualToM;
+	CContactConcatenatedView* iConcatenatedView;
+	CContactRemoteView* iRemoteView_1;
+	CContactRemoteView* iRemoteView_2;
+	CContactNamedRemoteView* iNamedRemoteView_1;
+	CContactNamedRemoteView* iNamedRemoteView_2;
+	CContactFindView* iLocalFindView;
+	CContactFindView* iRemoteFindView;
+	CContactLocalView* iLocalViewWithViewPreferences;
+	CRandomContactGenerator* iRandomGenerator;
+	RArray<TContactItemId> iTestIds;
+private:
+	CViewCreator* iViewCreator;
+	CContactAdder* iContactAdder;
+	CContactRemover* iContactRemover;
+	CViewExerciser* iViewExerciser;
+	CSortOrderChanger* iSortOrderChanger;
+	CContactOwnCardRemover* iOwnCardRemover;
+	CContactOwnCardModifier* iOwnCardModifier;
+	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;
+	};
+
+
+//
+// CViewExerciser.
+//
+
+class CViewExerciser : public CTestBase
+	{
+public:
+	static CViewExerciser* NewL(CTestConductor& aConductor);
+	void ProfileViewL(CContactViewBase& aView);
+	void ExerciseViewL(CSortChecker::TSortOrder aSortOrder,CContactViewBase& aView);
+	void ExerciseSubViewL(CSortChecker::TSortOrder aSortOrder,CContactViewBase& aView,const TDesC& aLowBoundary,const TDesC& aHighBoundary);
+	void ExerciseLowSubViewL(CSortChecker::TSortOrder aSortOrder,CContactViewBase& aView,const TDesC& aLowBoundary);
+	void ExerciseHighSubViewL(CSortChecker::TSortOrder aSortOrder,CContactViewBase& aView,const TDesC& aHighBoundary);
+	void QueueNextTestWhenComplete(TBool aQueue);
+	~CViewExerciser();
+	virtual void HandleNotificationL(const CContactViewBase& aView,const TContactViewEvent& aEvent);
+private:
+	CViewExerciser(CTestConductor& aConductor);
+	void GetComparisonStringL(const TContactItemId aContactId, const CSortChecker::TSortOrder aSortOrder, TDes& aContactInfo);
+	void ConstructL();
+private:
+	CContactTextDef* iTextDef_FirstLast;
+	CContactTextDef* iTextDef_LastFirst;
+	TBool iQueue;
+	};
+
+
+//
+// CSortOrderChanger.
+//
+
+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;
+	};
+
+/** Removes an own card item and checks it is removed correctly */
+class CContactOwnCardRemover : public CTestBase
+	{
+public:
+	CContactOwnCardRemover(CTestConductor& aConductor);
+	~CContactOwnCardRemover();
+	void RemoveOwnCardL(const CContactViewBase& aView);
+	virtual void HandleNotificationL(const CContactViewBase& aView,const TContactViewEvent& aEvent);
+private:
+	TInt iOriginalCount;
+	const CContactViewBase* iView;
+	};
+
+/** Modifies an own card item and checks changes are picked up correctly */
+class CContactOwnCardModifier : public CTestBase
+	{
+public:
+	CContactOwnCardModifier(CTestConductor& aConductor);
+	~CContactOwnCardModifier();
+	void ModifyOwnCardL(const CContactViewBase& aView);
+	virtual void HandleNotificationL(const CContactViewBase& aView,const TContactViewEvent& aEvent);
+private:
+	TInt iOriginalCount;
+	const CContactViewBase* iView;
+	TInt iNotificationsReceived;
+	};