void CreateContactsL(CContactDatabase& aDb) { CRandomContactGenerator* generator = CRandomContactGenerator::NewL(); CleanupStack::PushL( generator ); generator->SetDbL(aDb); AddContactsL(*generator); CleanupStack::PopAndDestroy( generator ); }
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 AddContactsL(CRandomContactGenerator& aGenerator) { TInt ii; for (ii=0;ii<KNumSmsContacts;ii++) { TInt bit=0; bit |= CContactDatabase::ESmsable; aGenerator.AddTypicalContactForFilterL(bit); } }
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; } }
void CTestResources::ConstructL(TInt aNumberOfContactsToAddToExistingDatabase, TBool aCreateNewDatabase) { if (aCreateNewDatabase) iDb = CContactDatabase::ReplaceL(KTestDbName); else iDb = CContactDatabase::OpenL(KTestDbName); if(!iRandomGenerator) { iRandomGenerator=CRandomContactGenerator::NewL(); } iRandomGenerator->SetDbL(*iDb); CreateContactsL(aNumberOfContactsToAddToExistingDatabase); // done adding everything to the database TCntProfile profile[1]; CCntTest::ProfileReset(0,1); CCntTest::ProfileStart(0); iDb->CompactL(); CCntTest::ProfileEnd(0); CCntTest::ProfileResult(&profile[0],0,1); TInt timeToCompact = profile[0].iTime/1000; CCntTest::ProfileReset(0,1); CCntTest::ProfileStart(0); delete iDb; iDb=NULL; CCntTest::ProfileEnd(0); CCntTest::ProfileResult(&profile[0],0,1); TInt timeToClose = profile[0].iTime; // in microseconds CCntTest::ProfileReset(0,1); CCntTest::ProfileStart(0); iDb = CContactDatabase::OpenL(KTestDbName); CCntTest::ProfileEnd(0); CCntTest::ProfileResult(&profile[0],0,1); iRandomGenerator->SetDbL(*iDb); TInt timeToOpen = profile[0].iTime/1000; TInt numberOfContactsInDb=iDb->CountL(); iViewEventQueue = CContactViewEventQueue::NewL(NULL, numberOfContactsInDb*2); TInt i; for(i = 0; i< GNumberOfFieldsToSort; i++) { iViewSortOrder.AppendL(TUid::Uid(GFieldsToSort[i])); } iLocalView = CContactLocalView::NewL(*iViewEventQueue, *iDb, iViewSortOrder, EContactsOnly); // Wait 100 seconds for the view to get ready TContactViewEvent event; CCntTest::ProfileReset(0,1); CCntTest::ProfileStart(0); test(iViewEventQueue->ListenForEvent(100,event)); CCntTest::ProfileEnd(0); CCntTest::ProfileResult(&profile[0],0,1); test(event.iEventType == TContactViewEvent::EReady); TBuf<128> result; result.Format(_L("*%C Contacts: %d\t"),static_cast<TUint>(GChar),numberOfContactsInDb); RDebug::Print(result); result.Format(_L("\tView ready: %d ms\t\tOpen: %d ms\t\tClose: %d us\t\tCompact: %d ms\t"), profile[0].iTime/1000, timeToOpen, timeToClose, timeToCompact); RDebug::Print(result); result.Format(_L("\tSize: %d bytes\n"),iDb->FileSize()); RDebug::Print(result); iFindFields = new(ELeave)CContactItemFieldDef; }