/** * To return a valid contact item id. */ TContactItemId CSyncTestStep::GetValidUIDFromContactsDbL() { TContactItemId firstId(KNullContactId); CContactDatabase *iDb = NULL; TRAPD(err,iDb = CContactDatabase::OpenL()); // open existing database CleanupStack::PushL(iDb); if (err != KErrNone) { CleanupStack::PopAndDestroy(); // iDb return firstId; } iDb->SetDbViewContactType(KUidContactICCEntry); // to get the unique groupId for the phonebook TContactItemId groupId(KNullContactId); User::LeaveIfError(iSession.GetPhoneBookId(groupId, RPhoneBookSession::ESyncGroupId)); TESTCHECKCONDITIONL(groupId != KNullContactId); // based on the groupId, get an item belonging to the phonebook CContactGroup* group = static_cast<CContactGroup*>(iDb->ReadContactLC(groupId)); const CContactIdArray* array = group->ItemsContained(); TInt count(array->Count()); if (count > 0) firstId = (*array)[0]; CleanupStack::PopAndDestroy(group); CleanupStack::PopAndDestroy(); // iDb return firstId; }
void TestPhoneMatchingL(CContactDatabase& aDb) { test.Next(_L("Test phone match")); CContactIdArray* array = aDb.MatchPhoneNumberL(KTelephoneNum,KMaxPhoneMatchLength); test(array->Count() == 4); delete array; syncChecker->SetValidateResponseL(MContactSynchroniser::ERead,KErrNone); syncChecker->SetValidateResponseL(MContactSynchroniser::EEdit, KErrNone); syncChecker->SetValidateWriteResponseL(KErrNone); aDb.SetDbViewContactType(KUidContactICCEntry); TContactItemId id = (*aDb.SortedItemsL())[0]; CContactItem* item = aDb.OpenContactLX(id); CleanupStack::PushL(item); CContactItemFieldSet& fieldset = item->CardFields(); const TInt pos = fieldset.Find(KUidContactFieldPhoneNumber); CContactItemField& field = fieldset[pos]; CContactTextField* textfield = field.TextStorage(); textfield->SetTextL(KTelephoneNumModified); aDb.CommitContactL(*item); CleanupStack::PopAndDestroy(2); //item, lock record CContactIdArray* array2 = aDb.MatchPhoneNumberL(KTelephoneNumModified,KMaxPhoneMatchLength); test(array2->Count() == 1); delete array2; }
void TestDatabaseIterationL(CContactDatabase& aDb) { test.Next(_L("Test database iteration")); aDb.SetDbViewContactType(KUidContactICCEntry); TContactIter iterator(aDb); TContactItemId id = iterator.FirstL(); while (id!=KNullContactId) { CContactItem* item = aDb.ReadContactLC(id); test(item->Type() == KUidContactICCEntry); CleanupStack::PopAndDestroy(item); id = iterator.NextL(); } }