phonebookengines/contactsmodel/tsrc/Integration/CntPerfTest/inc/ContactViewsThread.h
changeset 0 e686773b3f54
child 24 0ba2181d7c28
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookengines/contactsmodel/tsrc/Integration/CntPerfTest/inc/ContactViewsThread.h	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,175 @@
+/**
+* Copyright (c) 2007-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:
+*
+*/
+
+
+
+#ifndef __CONTACTVIEWS_THREAD_H__
+#define __CONTACTVIEWS_THREAD_H__
+
+// System Includes
+#include <test/testexecutestepbase.h>
+#include <cntdb.h>
+#include <cntitem.h>
+#include <cntviewbase.h>
+#include <cntfldst.h>
+#include <cntfilt.h>
+#include <e32math.h>
+
+// User Includes
+#include "ContactUtilitiesCollection.h"
+#include "ClientServer.h"
+#include "TestContactViewDatabaseUtilitiesStep.h"
+
+// Literals used
+_LIT(KChunkName, 	 "ContactViewsChunk");
+_LIT(KSemaphoreName, "ContactViewsSemaphore");
+
+// Global Methods
+GLDEF_C TInt RunContactViewsThreadL(TAny* aArgs);
+
+/**
+ * This class facilitates construction of contact view validation objects, used for verifying the
+ * behaviour of contact views when CRUD operations are performed on the contacts database. Basically
+ * information regarding different contact CRUD Operations performed and expected view behaviour in terms of
+ * view count, view notifications are specified in the ini file. These details are validated against
+ * actual results.
+ */
+class TContactViewValidationData
+	{
+	public:
+
+		enum TContactViewNotificationType
+			{
+ 			EUnAvailableNotifications,
+			EViewReadyNotifications,
+			EViewSortOrderChangedNotifications,
+			EViewSortErrorNotifications,
+			EContactServerErrorNotifications,
+			EViewIndexingErrorNotifications,
+			EItemAddedNotifications,
+			EItemRemovedNotifications,
+			EGroupChangedNotifications,
+			};
+
+		enum TContactViewCurrentOperation
+			{
+			EViewConstructionOperations,
+			EAddContactOperations,
+			ERemoveContactsOperations,
+			EUpdateContactOperations,
+			ESortOrderChangeOperations,
+			EServerRelatedOperations,
+			EGroupChangedOperations,
+			ENone,
+			};
+
+		TContactViewValidationData();
+
+		// Increment view notification functions are useful while incrementing the
+		// TContactViewNotificationGroup member varibales i.e TContactViewNotificationGroup object
+		// the member variables as and when notifications are recieved by the view observers
+		void IncrementNotificationCount(TContactViewNotificationType aContactViewNotificationType);
+
+		// Get View Notification functions are useful while comparing the notifications received against expected
+		// notification information specified in the ini file
+		TInt NotificationsCount(TContactViewNotificationType aContactViewNotificationType);
+
+		// Set View Notification functions are useful while updating TContactViewNotificationGroup objects
+		// with data read from the ini file
+		void SetNotificationsCount(TContactViewNotificationType aContactViewNotificationType,
+																 TInt aNumOfExpectedNotifications);																
+		void NotificationType (TContactViewEvent aEvent,
+										 TContactViewValidationData::TContactViewNotificationType& aNotificationType);																
+		void SetCurrentOperation(const TPtrC& aCurrentOperation);
+		void SetCurrentOperation(TContactViewValidationData::TContactViewCurrentOperation aCurrentOperation);				
+		TDesC& TContactViewValidationData::CurrentOperationInfoInStringFormatL();
+		TContactViewValidationData::TContactViewCurrentOperation CurrentOperation();				
+		void ConvertStringToTContactViewValidationDataFormat(const TPtrC& aCurrentOperation);		
+		void SetViewCount(TInt aViewCount);
+		TInt ViewCount();
+
+		
+
+	private:
+		TInt iViewCount;
+ 		TInt iNumOfUnAvailableNotifications;
+ 		TInt iNumOfReadyNotifications;
+ 		TInt iNumOfSortOrderChangedNotifications;
+ 		TInt iNumOfSortErrorNotifications;
+ 		TInt iNumOfServerErrorNotifications;
+ 		TInt iNumOfIndexingErrorNotifications;
+ 		TInt iNumOfItemAddedNotifications;
+ 		TInt iNumOfItemRemovedNotifications;
+ 		TInt iNumOfGroupChangedNotifications;
+		TContactViewValidationData::TContactViewCurrentOperation iCurrentOperation;
+		TBuf<256>  	iCurrentOperationInStringFormat;		
+
+	};
+
+
+/**
+ * This class facilitates construction of desired contact views based on the ini data. Listen for contact view
+ * notifications, validate the contact view count at the end of each CRUD Operation. 
+ */
+class CContactViews : public CBase
+	{
+	public:
+		static 		CContactViews*  NewL(CTestStep& aTestStep);
+		void 		RunTestL();
+					~CContactViews();
+
+	private:
+		CContactViews(CTestStep& aTestStep);
+		void 		ConstructL();		
+		void 		InstallActiveSchedularL();
+		void 		UnInstallActiveSchedularL();
+		void 		OpenDatabaseL();
+		void 		CloseDatabaseL();
+		void 		SetupChunk();
+		void 		SetCurrentOperation(TContactViewValidationData& aValidationData);		
+		void 		ReadDataFromIniAndConstructValidationObjectsL();
+		void 		IterateThroValidationSectionAndUpdateValidationData(const TPtrC& aValidationSection, TContactViewValidationData& aValidationData);
+		void 		ConstructViewsL();		
+		void 		SetViewOfInterest();
+ 		void		ListenForContactViewEvents(CContactViewEventQueue& aViewObserver, TContactViewValidationData& aActualData);
+		void 		UpdateActualNotificationCollectionObjectL (TContactViewEvent aEvent, TContactViewValidationData& aActualData);
+		TBool 		Compare(TContactViewValidationData& aDesiredData, TContactViewValidationData& aActualData);
+		TPtrC& 		SemaphoreName();
+		CTestStep&  TestStepReference();
+		TBool 		ExecutionCompleted();
+		void 		PrintDetailsL(TContactViewValidationData& aDesiredData, TContactViewValidationData& aActualData);		
+		CContactDatabase& DatabaseReference();
+		CContactViewCollection& ViewCollectionReference();
+		CContactViewEventQueue& RetrieveDesiredViewObserverL();
+		TContactViewValidationData RetrieveValidationData(TContactViewValidationData::TContactViewCurrentOperation aCurrentOperation);		
+			
+	private:
+		CTestStep& 													iTestStep;
+		TBool*														iExecutionCompleted;
+		CContactUtilitiesCollection*								iContactUtility;
+		CContactDatabase* 											iDb;
+		CContactViewCollection* 									iContactViewCollection;
+		CActiveScheduler* 											iScheduler;
+		CContactViewBase* 											iContactView;
+		RSemaphore													iSemaphore;
+		RArray<TContactViewValidationData> 							iExpectedData;
+		RArray<TContactViewValidationData> 							iActualData;
+		RChunk														iChunk;		
+		TPtrC*														iCurrentOperation;
+	};
+	
+#endif