/** * Check that the field of type aFieldType has the same content as * aExpectedContent * @param aFieldset Contact item fieldset * @param aFieldType Field type to test * @param aExpectedContent Expected data */ void CheckFieldContentL(CContactItemFieldSet& aFieldset, TFieldType aFieldType, const TDesC& aExpectedContent) { TInt pos = aFieldset.Find(aFieldType); CContactItemField& field = aFieldset[pos]; CContactTextField* textField = field.TextStorage(); test(textField != NULL); test(textField->Text() == aExpectedContent); }
void CReadContactsAO::GetTextFieldFromFieldSet(CContactItemFieldSet& aFieldSet, const TUid aField,TDesC& name) { TInt index = aFieldSet.Find(aField); if ((index >= 0) && (index < aFieldSet.Count())) { CContactItemField& textfield = aFieldSet[index]; CContactTextField* textValue = textfield.TextStorage(); ((TDes&)name).Copy(textValue->Text()); } }
/** this function encompasses two tests Test1(!aNewFields) opens contact item, and adds a custom uid to each field, changes lable to custom label then checks if uid and label were stored correctly Test2(aNewFields) opens contact item and adds ten new fields, and adds a custom uid to each field(new and old), changes lable to custom label then checks if uid and label were stored correctly. also checks both uids of new fields */ void CCustomLabelUid::TestCustomUidLabelsL( const TContactItemId aCid, const TBool aNewFields ) { CContactItem *contactItem = NULL; //open contact contactItem = iContactsDatabase->OpenContactLX(aCid,*iViewAll); CleanupStack::PushL(contactItem); CContactItemFieldSet *ContactFields = &(contactItem->CardFields()); if(aNewFields) { TInt length = 10;//add 10 new custom fields for(TInt i = 0, uids = TestConstants::KAltUID; i < length; i++, uids++) { AddNewFieldL( *ContactFields, TestConstants::KShortString, TFieldType::Uid(uids) ); } } //set custom labels for contact fields SetContactLabelsL(*contactItem); //set custom uids for contact fields AddUIDsL(*ContactFields,TestConstants::KInitialUID); //populate contact fields and update SetContactFieldsL(*contactItem); iContactsDatabase->CommitContactL(*contactItem); CleanupStack::PopAndDestroy(contactItem); CleanupStack::Pop();//lock //read contact contactItem = NULL; contactItem = iContactsDatabase->ReadContactLC(aCid,*iViewAll); ContactFields = &(contactItem->CardFields()); //check uids were update correctly SINGLECOMPARE( CheckUIDsL(*ContactFields,TestConstants::KInitialUID),0,0 ); //check labels were update correctly SINGLECOMPARE( CheckContactLabelsL(*contactItem),0,0 ); //check fields were populated correctly SINGLECOMPARE( CheckContactFieldsL(*contactItem),0,0 ); if(aNewFields) { //check that new fields contain the correct uids(2), initial and updated custom values TInt length = ContactFields->Count(); TInt i = ContactFields->Find( TFieldType::Uid(TestConstants::KAltUID) ); for(TInt uids = TestConstants::KAltUID; i < length; i++, uids++) { SINGLECOMPARE( CheckNewFieldL( *ContactFields, i, TFieldType::Uid(uids) ), i, 0); } } CleanupStack::PopAndDestroy(contactItem); }
/**Utility function for Adding any number of contact items with name and telephone fields. */ void CAgentTest::AddContactItemsL(TInt aCount) { iIdArray->Reset(); CContactItem* templateCard = NULL; CContactCard* card = NULL; CContactItemFieldSet* fieldSet = NULL; for(TInt loop = 0; loop < aCount; ++loop) { TInt pos = KErrNotFound; TBuf<16> name; name.Format(_L("NAME%d"),loop); TBuf<16> tel; tel.Format(_L("123456%d"),loop); templateCard = iDb->ReadContactLC(iDb->TemplateId()); card = CContactCard::NewLC(templateCard); fieldSet = &card->CardFields(); pos = fieldSet->Find(KUidContactFieldFamilyName); if (pos != KErrNotFound) { (*fieldSet)[pos].TextStorage()->SetTextL(name); } pos = fieldSet->Find(KUidContactFieldPhoneNumber); if (pos != KErrNotFound) { (*fieldSet)[pos].TextStorage()->SetTextL(tel); } TContactItemId contactId = iDb->AddNewContactL(*card); iIdArray->AddL(contactId); CleanupStack::PopAndDestroy(2); } }
/**Utility function to remove any specified contact field from a specified contact item*/ TBool CAgentTest::RemoveFieldFromContactL(TContactItemId aContactId, TUid aContactField) { CContactItem* mainItem = NULL; CContactItemFieldSet* fields = NULL; mainItem = iDb->OpenContactL(aContactId); CleanupStack::PushL(mainItem); fields = &mainItem->CardFields(); TInt pos = 0; pos = fields->Find(aContactField); if (pos != KErrNotFound) { fields->Remove(pos); } iDb->CommitContactL(*mainItem); CleanupStack::PopAndDestroy(); return pos; }