phonebookengines/contactsmodel/tsrc/Integration/CntPerfTest/src/ViewDefCustomFieldsTest.cpp
changeset 0 e686773b3f54
child 24 0ba2181d7c28
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookengines/contactsmodel/tsrc/Integration/CntPerfTest/src/ViewDefCustomFieldsTest.cpp	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,379 @@
+// Copyright (c) 2006-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:
+//
+
+/**
+ @file
+ @publishedAll
+ @released
+*/
+
+#include <e32panic.h>
+#include <test/testexecutelog.h>
+#include <cntfldst.h>
+#include "ClientServer.h"
+#include "ViewDefCustomFieldsTest.h"
+
+_LIT(KRun1,"AllLabelUid");
+_LIT(KRun2,"AllNewFields");
+_LIT(KRun3,"AllOnlyNew");
+_LIT(KRun4,"ExistingLabelUid");
+_LIT(KRun5,"ExistingNewFields");
+_LIT(KRun6,"ExistingOnlyNew");
+
+_LIT(KTest1,"Testing KUidContactFieldMatchAll in viewdef with custom labels/uids...");
+_LIT(KTest2,"Testing KUidContactFieldMatchAll in viewdef with new fields...");
+_LIT(KTest3,"Testing KUidContactFieldMatchAll in viewdef with only new fields...");
+_LIT(KTest4,"Testing Multiple Exisiting & Custom Uids in viewdef with custom labels/uids...");
+_LIT(KTest5,"Testing Multiple Exisiting & Custom Uids in viewdef with new fields...");
+_LIT(KTest6,"Testing Multiple Exisiting & Custom Uids in viewdef with only new fields...");
+
+const static TInt KCustomUidCount = 100;
+
+//Number of contacts
+CViewDefCustomFieldsTest::CViewDefCustomFieldsTest():CViewDefBase(1)
+/**
+ * Constructor
+ */
+	{
+	// Call base class method to set up the human readable name for logging
+	SetTestStepName(SharedConstants::KViewDefCustomFieldsTest);
+	}
+
+TVerdict CViewDefCustomFieldsTest::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ */
+	{
+	
+	__UHEAP_MARK;
+		
+	InitializeL();
+	iIterate->Reset();
+	
+	const TDesC &run = ConfigSection();
+	
+	if( run == KRun1 )
+		{
+		INFO_PRINTF1(KTest1);
+		MatchAllTestsL( iIterate->NextL() );
+		}
+	else if( run == KRun2 )
+		{
+		INFO_PRINTF1(KTest2);
+		NewFieldsMATestsL( iIterate->NextL(), EFalse );
+		}
+	else if( run == KRun3 )
+		{
+		INFO_PRINTF1(KTest3);
+		NewFieldsMATestsL( iIterate->NextL(), ETrue );
+		}
+	else if( run == KRun4 )
+		{
+		INFO_PRINTF1(KTest4);
+		ManyUidsTestsL( iIterate->NextL() );
+		}
+	else if( run == KRun5 )
+		{
+		INFO_PRINTF1(KTest5);
+		NewFieldsMUITestsL( iIterate->NextL(), EFalse );
+		}
+	else if( run == KRun6 )
+		{
+		INFO_PRINTF1(KTest6);
+		NewFieldsMUITestsL( iIterate->NextL(), ETrue );
+		}
+	else
+		{
+		MissngTestPanic();
+		}
+	
+	Cleanup();
+	
+	__UHEAP_MARKEND;
+	
+	return TestStepResult();
+	}
+
+void CViewDefCustomFieldsTest::MatchAllTestsL(const TContactItemId &aCid)
+	{
+	TInt fields = 0;
+	
+	OpenL(aCid,*iViewAll, EFalse);//ETrue);
+	SetContactFieldsL(*iContactItem);
+	SetContactLabelsL(*iContactItem);
+	AddUIDsL(*iFields,TestConstants::KInitialUID);
+	fields = iFields->Count();	
+	CommitL();
+
+	iViewII->AddL(KUidContactFieldMatchAll);
+	iViewIM->AddL(KUidContactFieldMatchAll);
+	iViewMM->AddL(KUidContactFieldMatchAll);
+	
+	SINGLECOMPARE( doAllMatchL( aCid, *iViewII, fields, EFalse, EFalse ), 0, 0 );
+	SINGLECOMPARE( doAllMatchL( aCid, *iViewIM, fields, EFalse, ETrue ), 0, 0 );
+	SINGLECOMPARE( doAllMatchL( aCid, *iViewMM, fields, ETrue, ETrue ), 0, 0 );
+	
+	iViewII->Reset();
+	iViewIM->Reset();
+	iViewMM->Reset();
+	}
+
+void CViewDefCustomFieldsTest::NewFieldsMATestsL(const TContactItemId &aCid, const TBool aOnlyNew)
+	{
+	TInt fields = 0;
+	const static TInt newFields = 10;
+	
+	OpenL(aCid,*iViewAll, EFalse);//ETrue);
+	if(aOnlyNew)
+		{
+		iFields->Reset();
+		}
+	for(TInt i = 0, uids = TestConstants::KAltUID; i < newFields; i++, uids++)
+		{
+		AddNewFieldL( *iFields, TestConstants::KShortString, TFieldType::Uid(uids) );
+		}
+	SetContactFieldsL(*iContactItem);
+	fields = iFields->Count();	
+	CommitL();
+
+	iViewII->AddL(KUidContactFieldMatchAll);
+	iViewIM->AddL(KUidContactFieldMatchAll);
+	iViewMM->AddL(KUidContactFieldMatchAll);
+	
+	SINGLECOMPARE( doAllMatchL( aCid, *iViewII, fields, EFalse, EFalse, aOnlyNew ), 0, 0  );
+	SINGLECOMPARE( doAllMatchL( aCid, *iViewIM, fields, EFalse, ETrue, aOnlyNew ), 0, 0  );
+	SINGLECOMPARE( doAllMatchL( aCid, *iViewMM, fields, ETrue, ETrue, aOnlyNew ), 0, 0  );
+	
+	iViewII->Reset();
+	iViewIM->Reset();
+	iViewMM->Reset();
+	}
+
+
+TBool CViewDefCustomFieldsTest::doAllMatchL(const TContactItemId &aCid, const CContactItemViewDef &aView,
+											const TInt aFieldCount, const TBool aZeroN, 
+											const TBool aZeroH, const TBool aNew )
+	{
+	TBool SingleTestResult = EFalse;
+	TBool OverallTestResult = ETrue;
+	
+	TInt countM = 0;
+	TInt countR = 0;
+	TInt emptyfsM = 0;
+	TInt emptyfsR = 0;
+	TInt hcountM = 0;
+	TInt hcountR = 0;
+	
+	ReadL(aCid,*iViewAll,EFalse);
+	countR = iFields->Count();
+	hcountR = CountHiddenFields(*iFields);
+	emptyfsR = CountEmpty(*iFields);
+	Close();
+	
+	ReadMinimalL(aCid, aView, *iDefView, EFalse);
+	countM = iFields->Count();
+	hcountM = CountHiddenFields(*iFields);
+	emptyfsM = CountEmpty(*iFields);
+	Close();
+	
+	if(aNew)
+		{
+		countR -= emptyfsR;
+		emptyfsR = 0;
+		hcountR = 0;
+		}
+	
+	SingleTestResult = INTCOMPARE(countR , ==,  aFieldCount, 0, 0 ); 
+	OverallTestResult = OverallTestResult && SingleTestResult;
+	
+	SingleTestResult = INTCOMPARE(emptyfsM , ==,  0, 0, 0 ); 
+	OverallTestResult = OverallTestResult && SingleTestResult;
+	
+	SingleTestResult = INTCOMPARE(emptyfsR , ==,  0, 0, 0 );
+	
+	if(aZeroN)
+		{
+		SingleTestResult = INTCOMPARE( (countM - hcountM), <=, 0, 0, 0 );
+		OverallTestResult = OverallTestResult && SingleTestResult;
+		}
+	else
+		{
+		SingleTestResult = INTCOMPARE( (countM - hcountM) , ==,  (countR - hcountR) , 0, 0 );
+		OverallTestResult = OverallTestResult && SingleTestResult;
+		}
+		
+	if(aZeroH)
+		{
+		SingleTestResult = INTCOMPARE(hcountM , ==,  0, 0, 0 );
+		OverallTestResult = OverallTestResult && SingleTestResult;
+		}
+	else
+		{
+		SingleTestResult = INTCOMPARE(hcountR , ==,  hcountM, 0, 0 );
+		OverallTestResult = OverallTestResult && SingleTestResult;
+		}
+		
+	return OverallTestResult;
+	
+	}
+
+void CViewDefCustomFieldsTest::ManyUidsTestsL(const TContactItemId &aCid)
+	{
+	TInt fields = 0;
+	
+	OpenL(aCid,*iViewAll, EFalse);//ETrue);
+	SetContactFieldsL(*iContactItem);
+	SetContactLabelsL(*iContactItem);
+	AddUIDsL(*iFields,TestConstants::KInitialUID);
+	fields = iFields->Count();	
+	CommitL();
+
+	const TInt length = iExistingUidsArray->Count() - 1;
+	TInt i(0);
+	for(; i < length;)
+		{	
+		AddMultipleUidsL(*iViewII, i, 1);
+		SINGLECOMPARE( doManyUidsL( aCid, *iViewII, fields, EFalse, EFalse ), i, 0 );
+		iViewII->Reset();
+		}
+		
+	const TInt flength = KCustomUidCount - 1;
+	for(i = 0; i < flength;)
+		{	
+		AddMultipleCustomUidsL(*iViewII, i, 1);
+		SINGLECOMPARE( doManyUidsL( aCid, *iViewII, fields, EFalse, EFalse ), i, i );
+		iViewII->Reset();
+		}
+	}
+
+void CViewDefCustomFieldsTest::NewFieldsMUITestsL(const TContactItemId &aCid, const TBool aOnlyNew)
+	{
+	TInt fields = 0;
+	const static TInt newFields = 10;
+	
+	OpenL(aCid,*iViewAll, EFalse);//ETrue);
+	if(aOnlyNew)
+		{
+		iFields->Reset();
+		}
+	TInt i(0);
+	for(TInt uids = TestConstants::KInitialUID; i < newFields; i++, uids++)
+		{
+		AddNewFieldL( *iFields, TestConstants::KShortString, TFieldType::Uid(uids) );
+		}
+	SetContactFieldsL(*iContactItem);
+	fields = iFields->Count();	
+	CommitL();
+
+	const TInt length = iExistingUidsArray->Count()-1;
+	for(i = 0; i < length;)
+		{	
+		AddMultipleUidsL(*iViewII, i, 1);
+		SINGLECOMPARE( doManyUidsL( aCid, *iViewII, fields, EFalse, EFalse ) , i, 0 );
+		iViewII->Reset();
+		}
+		
+	const TInt flength = KCustomUidCount - 1;
+	for(i = 0; i < flength;)
+		{	
+		AddMultipleCustomUidsL(*iViewII, i, 1);
+		SINGLECOMPARE( doManyUidsL( aCid, *iViewII, fields, EFalse, EFalse ), i, 0 );
+		iViewII->Reset();
+		}
+	}
+	
+TBool CViewDefCustomFieldsTest::doManyUidsL(const TContactItemId &aCid, const CContactItemViewDef &aView,
+											const TInt aFieldCount, const TBool aExcludeN, 
+											const TBool aExcludeH )
+	{
+	TBool SingleTestResult = EFalse;
+	TBool OverallTestResult = ETrue;
+	
+	TInt countM = 0;
+	TInt countR = 0;
+	TInt fieldsIV = 0;
+
+	TInt emptyfsR = 0;
+	TInt hcountM = 0;
+	TInt hcountR = 0;
+	TInt hfieldsIV = 0;
+	
+	ReadL(aCid,*iViewAll,EFalse);
+	FieldsInView(aView, fieldsIV, hfieldsIV, ETrue);
+	countR = iFields->Count();
+	hcountR = CountHiddenFields(*iFields);
+	emptyfsR = CountEmpty(*iFields);
+	Close();
+	
+	ReadMinimalL(aCid, aView, *iDefView, EFalse);
+	countM = iFields->Count();
+	hcountM = CountHiddenFields(*iFields);
+
+	Close();
+	
+	SingleTestResult = INTCOMPARE( (countR - emptyfsR) , ==,  aFieldCount, 0, 0 ); 
+	OverallTestResult = OverallTestResult && SingleTestResult;
+	
+	if(aExcludeN)
+		{
+		SingleTestResult = INTCOMPARE( ( (countR - fieldsIV) - hcountR ) , ==,  (countM - hcountM) , 0, 0 ); 
+		OverallTestResult = OverallTestResult && SingleTestResult;
+		}
+	else
+		{
+		SingleTestResult = INTCOMPARE(  fieldsIV  , ==,  (countM - hcountM) , 0, 0 );
+		OverallTestResult = OverallTestResult && SingleTestResult;
+		}
+	if(aExcludeH)
+		{
+		SingleTestResult = INTCOMPARE(  (hcountR - hfieldsIV) , ==,  hcountM , 0, 0 );
+		OverallTestResult = OverallTestResult && SingleTestResult;
+		}
+	else
+		{
+		SingleTestResult = INTCOMPARE(  hcountM , ==,  hfieldsIV , 0, 0 );
+		OverallTestResult = OverallTestResult && SingleTestResult;
+		}
+		
+	return OverallTestResult;
+	}
+
+void CViewDefCustomFieldsTest::AddMultipleCustomUidsL( CContactItemViewDef &aView, TInt &aPos, const TInt &aMany )
+	{
+	
+	static TInt lastPlace = 0;	
+	aView.Reset();
+	aView.AddL( TUid::Uid( TestConstants::KInitialUID + aPos ) );
+	
+	for(TInt i = 0; (lastPlace < KCustomUidCount) && (i < aMany); ++lastPlace, ++i)
+		{
+		if(lastPlace == aPos)
+			{
+			--i;
+			continue;
+			}
+		aView.AddL( TUid::Uid( TestConstants::KInitialUID + lastPlace ) );
+		}
+	if( lastPlace == KCustomUidCount )
+		{
+		lastPlace = 0;
+		++aPos;//this should never equal count
+		_LIT(KNextCustom,"nextCustom %d");
+		INFO_PRINTF2(KNextCustom, aPos);
+		}
+		
+	}
+