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 TestMatchPhoneNumberL(CContactDatabase& aDb, TContactItemId aIccId, TContactItemId aNonIccId) { // The synchroniser is not called to validate the IDs at for this method because // phone number resolution needs to be as quick as possible. // Instead, validation is done when the client attempts to read the items. test.Next(_L("Test MatchPhoneNumberL")); // Successful find of icc entry phone number syncChecker->ResetMethodCallCountsL(); CContactIdArray* array = aDb.MatchPhoneNumberL(KIccNumber,KMaxPhoneMatchLength); test(syncChecker->ValidateMethodCallCountL() == 0); test(array!=NULL); test(array->Count() == 1); test((*array)[0]==aIccId); delete array; array=NULL; test.Next(_L("Test searching when ICC locked")); // successful find when icc locked - validation done when entry read syncChecker->SetValidateResponseL(MContactSynchroniser::ESearch,KErrLocked); syncChecker->ResetMethodCallCountsL(); TRAPD(err,array = aDb.MatchPhoneNumberL(KIccNumber,KMaxPhoneMatchLength)); test(syncChecker->ValidateMethodCallCountL() == 0); test(array!=NULL); test(err==KErrNone); test((*array)[0]==aIccId); delete array; array=NULL; syncChecker->ResetMethodCallCountsL(); array = aDb.MatchPhoneNumberL(KNonIccNumber,KMaxPhoneMatchLength); test(syncChecker->ValidateMethodCallCountL() == 0); test(array!=NULL); test(array->Count() == 1); test((*array)[0]==aNonIccId); delete array; array=NULL; }