diff -r 000000000000 -r e686773b3f54 phonebookengines/contactsmodel/tsrc/Integration/CntPerfTest/src/ViewDefCustomFieldsTest.cpp --- /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 +#include +#include +#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); + } + + } +