--- /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;
+ };