LOCAL_C void PopulateDatabaseL(CContactDatabase* aDb, TInt aCntCount) { CRandomContactGenerator* randomCnt = CRandomContactGenerator::NewL(); CleanupStack::PushL(randomCnt); randomCnt->SetDbL(*aDb); for (TInt i = 0; i < aCntCount; ++i) { randomCnt->AddTypicalRandomContactL(); } CleanupStack::PopAndDestroy(randomCnt); }
void CTestResources::CreateMoreTestContactsL() { CRandomContactGenerator* generator = CRandomContactGenerator::NewL(); CleanupStack::PushL(generator); generator->SetDbL(*iDb); for (TInt i=0;i<KMaxNumContacts;i++) { generator->AddTypicalRandomContactL(); if (i%100==0) { iDb->CompactL(); test.Printf(_L("Added %d contacts\n"),i); } } CleanupStack::PopAndDestroy(generator); }
void CGroupViewTester::RunL() { switch (iCurrentTest) { case ECreateLocalView: iLog.LogLine(_L("=== Create local view")); iLocalView=CContactLocalView::NewL(*this,iDb,iSortOrder_1,EContactAndGroups/*EContactsOnly*/); break; case EExerciseLocalView: iLog.LogLine(_L("=== Exercise local view")); ExceriseViewL(*iLocalView); NextTest(); break; case ECreateGroupOneView: { iLog.LogLine(_L("=== GroupOneView")); iGroupViewOne=CContactGroupView::NewL(iDb,*iLocalView,*this,iGroupOne->Id(),CContactGroupView::EShowContactsInGroup); } break; case ETestGroupOneView: { iLog.LogLine(_L("==== Exercise ETestGroupOneView")); TInt groupCount = iGroupOne->ItemsContained()->Count(); test(iGroupViewOne->CountL()==groupCount); const CContactIdArray* array= iGroupOne->ItemsContained(); for (TInt ii=0;ii<groupCount;ii++) { test(iGroupViewOne->FindL((*array)[ii])!=KErrNotFound); } TestGroupViewSortOrderL(*iGroupViewOne); NextTest(); } break; case ECreateGroupOneViewByName: { iLog.LogLine(_L("=== Create GroupOneView By Name")); iGroupViewOneByName=CContactGroupView::NewL(iDb,*iLocalView,*this,KGroupOneName,CContactGroupView::EShowContactsInGroup); } break; case ETestGroupOneViewByName: { iLog.LogLine(_L("==== Exercise ETestGroupOneView By Name")); TInt groupCount = iGroupOne->ItemsContained()->Count(); test(iGroupViewOneByName->CountL()==groupCount); const CContactIdArray* array= iGroupOne->ItemsContained(); for (TInt ii=0;ii<groupCount;ii++) { test(iGroupViewOneByName->FindL((*array)[ii])!=KErrNotFound); } TestGroupViewSortOrderL(*iGroupViewOneByName); NextTest(); break; } case ECreateGroupOneViewNotInGroup: { iLog.LogLine(_L("=== Create GroupOneViewNotInGroup By Name")); iGroupViewOneNotInGroup=CContactGroupView::NewL(iDb,*iLocalView,*this,KGroupOneName,CContactGroupView::EShowContactsNotInGroup); } break; case ETestGroupOneViewNotInGroup: { iLog.LogLine(_L("==== Exercise GroupOneViewNotInGroup By Name")); TInt totalContacts = iLocalView->CountL(); TInt totalNotInGroup = totalContacts - KNumContactsInGroupOne; test(iGroupViewOneNotInGroup->CountL()==totalNotInGroup); const CContactIdArray* array= iGroupOne->ItemsContained(); TInt groupCount = array->Count(); for (TInt ii=0;ii<groupCount;ii++) { test(iGroupViewOneNotInGroup->FindL((*array)[ii])==KErrNotFound); } TestGroupViewSortOrderL(*iGroupViewOneNotInGroup); NextTest(); break; } case EAllViewsOutOfBoundsAccess: { //Views depend on their underlying views being in a good state, however //as some base views are potentially in other processes they must be resistant //to out of date views accessesing out of bound members, views, should not //panic but should leave with KErrNotFound; //local view TInt err=0; iLog.LogLine(_L("=== Test views for out of bounds access")); TInt outCount = iGroupViewOneByName->CountL(); TRAP(err,iGroupViewOneByName->AtL(outCount)); test(err==KErrNotFound); TRAP(err,iGroupViewOneByName->ContactAtL(outCount)); test(err==KErrNotFound); NextTest(); } break; case ECreateUnfiledGroupView: { iLog.LogLine(_L("=== Create Unfiled group view")); iGroupViewUnfiled=CContactGroupView::NewL(iDb,*iLocalView,*this,KNullContactId,CContactGroupView::EShowContactsNotInAnyGroup); } break; case ETestUnfiledGroupView: { iLog.LogLine(_L("==== Exercise Unfiled group")); const TInt totalContacts = iLocalView->CountL(); const TInt totalUnfiled = totalContacts - KNumContactsInGroupOne - KNumGroups; test(iGroupViewUnfiled->CountL()==totalUnfiled); test(iGroupViewUnfiled->FindL(iGroupOneId)); TestGroupViewSortOrderL(*iGroupViewUnfiled); CRandomContactGenerator* generator = CRandomContactGenerator::NewL(); CleanupStack::PushL(generator); generator->SetDbL(iDb); generator->AddTypicalRandomContactL(); CleanupStack::PopAndDestroy(generator); iNumNotificationExpected=5; } break; case ETestUnfiledGroupAddition: { iLog.LogLine(_L("==== Exercise Unfiled group addition")); TInt revisedCount = iGroupViewUnfiled->CountL(); CContactIdArray* unfiled = iDb.UnfiledContactsL(); test(revisedCount == unfiled->Count()); delete unfiled; ExceriseViewL(*iGroupViewUnfiled); // Test that adding contact which currently forms part of // iGroupViewUnfiled to iGroupOne causes update of // iGroupViewUnfiled such that the contact no longer forms // part of iGroupViewUnfiled (i.e. by adding the contact to the // group it is no longer unfiled and should not appear in the // unfiled view). The update to iGroupViewUnfiled will not take // place until the view receives the change event so wait until the // view observer method HandleContactViewEvent() is called before // testing that the expected change to iGroupViewUnfiled has taken // place. iDb.AddContactToGroupL(KNumContacts,iGroupOne->Id()); // Expect (ESortOrderChanged x 4) + EGroupChanged + (EItemRemoved x // 4) + (EItemAdded x 4). iNumNotificationExpected=13; } break; case ENumTests: iLog.LogLine(_L("==== Group View Tests Finished, All Passed...\n")); CActiveScheduler::Stop(); delete this; break; default: ASSERT(EFalse); break; } }