LOCAL_C void StoreRestoreTestL() { CStreamStore* blobstore=CBufStore::NewLC(3); CStreamStore* textstore=CBufStore::NewLC(3); CStreamStore* store=CBufStore::NewLC(3); RStoreWriteStream stream; TStreamId textId=stream.CreateLC(*textstore); // CContactItemFieldSet* fieldSet=CContactItemFieldSet::NewLC(); AddFieldL(fieldSet,KStorageTypeText,KUidContactFieldCompanyName,KUidContactFieldVCardMapORG); AddFieldL(fieldSet,KStorageTypeText,KUidContactFieldPhoneNumber,KUidContactFieldVCardMapTEL); AddFieldL(fieldSet,KStorageTypeDateTime,KUidContactFieldBirthday,KUidContactFieldVCardMapBDAY); // TStreamId streamId=fieldSet->StoreL(*store,stream,*blobstore); CleanupStack::PopAndDestroy(); // fieldSet // CContactItemFieldSet* fieldSet2=CContactItemFieldSet::NewLC(); CContactItemViewDef *viewDef=CContactItemViewDef::NewLC(CContactItemViewDef::EMaskFields,CContactItemViewDef::EMaskHiddenFields ); RStoreReadStream rstream; rstream.OpenLC(*textstore,textId); fieldSet2->RestoreL(*store,streamId,blobstore,*viewDef,rstream); test(fieldSet2->Count()==3); CntTest->TestField((*fieldSet2)[0],KStorageTypeText,KUidContactFieldCompanyName,KUidContactFieldVCardMapORG); CntTest->TestField((*fieldSet2)[1],KStorageTypeText,KUidContactFieldPhoneNumber,KUidContactFieldVCardMapTEL); CntTest->TestField((*fieldSet2)[2],KStorageTypeDateTime,KUidContactFieldBirthday,KUidContactFieldVCardMapBDAY); CleanupStack::PopAndDestroy(7); // viewDef,fieldSet2 stream store textstore rstream,blobstore //zzz more to do here }
LOCAL_C void TestSystemTemplateL() { CContactDatabase* db=CntTest->OpenDatabaseL(); // add fields to cards to system template CheckDefaultTemplate(db,CntTest->Fs(),db->TemplateId()); // CContactTemplate *contactTemplate=(CContactTemplate *)db->OpenContactLX(db->TemplateId()); CleanupStack::PushL(contactTemplate); AddFieldL(contactTemplate,TUid::Uid(1),_L("Uid1"),_L("")); AddFieldL(contactTemplate,TUid::Uid(2),_L("Uid2"),_L("")); AddFieldL(contactTemplate,TUid::Uid(3),_L("Uid3"),_L("")); AddDateFieldL(contactTemplate,TUid::Uid(4),_L("Uid4"),NULL); db->CommitContactL(*contactTemplate); doTestTemplate(db,db->TemplateId(),contactTemplate,ETrue); CleanupStack::PopAndDestroy(2); // contactTemplate,contactTemplate.Close() // AddFindRecordsL(db); CContactItemFieldDef* fieldDef=new(ELeave) CContactItemFieldDef; CleanupStack::PushL(fieldDef); fieldDef->AppendL(KUidContactFieldJobTitle); CContactIdArray* idarray=db->FindLC(_L("Bates 3"),fieldDef); test(idarray->Count()==1); // // Now change the field KUidContactFieldFamilyName field type to Uid(44) and check // the records field type also changes. // contactTemplate=(CContactTemplate *)db->OpenContactLX(db->TemplateId()); CleanupStack::PushL(contactTemplate); CContactItemFieldSet& fieldSet=contactTemplate->CardFields(); TInt fieldNum=fieldSet.Find(KUidContactFieldJobTitle); CContentType &ct=(CContentType&)fieldSet[fieldNum].ContentType(); ct.RemoveFieldType(KUidContactFieldJobTitle); TUid newUidType=TUid::Uid(44); ct.AddFieldTypeL(newUidType); db->CommitContactL(*contactTemplate); // CContactItem *checkItem=(CContactTemplate *)db->ReadContactLC((*idarray)[0]); CContactItemFieldSet& templateFieldSet=checkItem->CardFields(); test(templateFieldSet.Find(KUidContactFieldJobTitle)==KErrNotFound); test(templateFieldSet.Find(newUidType)!=KErrNotFound); CleanupStack::PopAndDestroy(1); // checkItem // // Check finding using the new field type also works // fieldDef->Delete(0); fieldDef->AppendL(newUidType); CContactIdArray* idarray2=db->FindLC(_L("Bates 3"),fieldDef); test(idarray2->Count()==1); test((*idarray2)[0]==(*idarray)[0]); CleanupStack::PopAndDestroy(5); // fieldDef,idarray2,idarray,contactTemplate,contactTemplate.Close() // CntTest->CloseDatabase(); }
/** * Test Case required for INC078981 "Contacts model field type mathching urgent fix" */ LOCAL_C void TestTemplateFieldTypeMatchingL() { test.Next(_L("Create template")); CreateDatabaseL(); CContactDatabase* db=CntTest->OpenDatabaseL(); CntTest->DeleteAllTemplateFieldsL(); _LIT(KField1,"Field 1"); CContactTemplate *contactTemplate=(CContactTemplate *)db->OpenContactLX(db->TemplateId()); CleanupStack::PushL(contactTemplate); TFieldType mapping1(TUid::Uid(KIntContactFieldVCardMapSIPID)); TFieldType mappingX(TUid::Uid(KIntContactFieldVCardMapSIPID)); TFieldType mapping2(TUid::Uid(KIntContactFieldVCardMapVOIP)); TFieldType mapping3(TUid::Uid(3)); TFieldType mapping4(TUid::Uid(4)); TFieldType fieldType1(TUid::Uid(KUidContactFieldSIPIDValue)); TFieldType fieldType2(TUid::Uid(KIntContactFieldVCardMapVOIP)); AddFieldL(contactTemplate,mapping1,KField1(),&fieldType1,&mappingX); AddFieldL(contactTemplate,mapping1,KField1(),&fieldType1,&mapping2); AddFieldL(contactTemplate,mapping1,KField1(),&fieldType1,&mapping3); AddFieldL(contactTemplate,mapping1,KField1(),&fieldType1,&mapping4); db->CommitContactL(*contactTemplate); CleanupStack::PopAndDestroy(); // contactTemplate CleanupStack::Pop(); // contactTemplate.Close() TTemplateMapTest tmTest1(mapping1,&fieldType1,&mappingX,NULL,KField1(),1,ETrue); TTemplateMapTest tmTest2(mapping1,&fieldType1,&mapping2,NULL,KField1(),2,ETrue); TTemplateMapTest tmTest3(mapping1,&fieldType1,&mapping3,NULL,KField1(),3,ETrue); TTemplateMapTest tmTest4(mapping1,&fieldType1,&mapping4,NULL,KField1(),4,ETrue); TTemplateMapTest tmTest5(mapping1,&fieldType2,&mappingX,NULL,KField1(),1,EFalse); contactTemplate=(CContactTemplate *)ReadContactIncHiddenFieldsLC(db,db->TemplateId()); CheckFieldMappings(db,contactTemplate,&tmTest1); CheckFieldMappings(db,contactTemplate,&tmTest3); CheckFieldMappings(db,contactTemplate,&tmTest2); CheckFieldMappings(db,contactTemplate,&tmTest4); CheckFieldMappings(db,contactTemplate,&tmTest5); CleanupStack::PopAndDestroy(); // contactTemplate CntTest->CloseDatabase(); }
LOCAL_C void DoTestsL() { test.Start(_L("@SYMTESTCaseID:PIM-T-CVIEWCONTACT-0001 Tests for CViewContact")); TestConstructionL(); TestMiscMethodsL(); AddFieldL(); AddEmptyFieldL(); OomAddEmptyFieldL(); }
LOCAL_C void AddTestField(CContactCard* aCard,TTemplateMapTest *aTmtest, const TDesC &aText, TInt &aExtraFields) { if (aTmtest) { CContactItemField *field=AddFieldL(aCard,aTmtest->iMapping,aTmtest->iFieldName,aTmtest->iFieldType1,aTmtest->iFieldType2,aTmtest->iFieldType3); field->TextStorage()->SetTextL(aText); if (aTmtest->iExtraField) aExtraFields++; } }
LOCAL_C void FieldSetTests() { CntTest->OpenDatabaseL(); // CContactCard* card=CContactCard::NewL(); CleanupStack::PushL(card); // AddFieldL(card,KStorageTypeText,KUidContactFieldNone,KUidContactFieldVCardMapUnusedN); // CContactItemFieldSet *fieldSet=CContactItemFieldSet::NewLC(); AddFieldL(fieldSet,KStorageTypeText,KUidContactFieldPhoneNumber,KUidContactFieldVCardMapTEL); AddFieldL(fieldSet,KStorageTypeText,KUidContactFieldSuffixName,KUidContactFieldVCardMapUnusedN); (*fieldSet)[1].SetDisabled(ETrue); // card->UpdateFieldSet(fieldSet); CleanupStack::Pop(); // fieldSet // CContactItemFieldSet &cardFieldSet=card->CardFields(); test(cardFieldSet[0].ContentType().ContainsFieldType(KUidContactFieldPhoneNumber)); test(cardFieldSet[1].ContentType().ContainsFieldType(KUidContactFieldSuffixName)); test(cardFieldSet[1].IsDisabled()); // CContactItemField *field=CContactItemField::NewLC(KStorageTypeText,KUidContactFieldAddress); card->InsertFieldL(*field,1); CleanupStack::Pop(); // field test(cardFieldSet[1].ContentType().ContainsFieldType(KUidContactFieldAddress)); test(cardFieldSet[1].IsDisabled()==EFalse); // card->RemoveField(1); test(cardFieldSet[1].ContentType().ContainsFieldType(KUidContactFieldSuffixName)); // card->RemoveField(0); test(cardFieldSet[0].ContentType().ContainsFieldType(KUidContactFieldSuffixName)); // field=CContactItemField::NewLC(KStorageTypeText,KUidContactFieldEMail); card->InsertFieldL(*field,0); CleanupStack::Pop(); // field test(cardFieldSet[0].ContentType().ContainsFieldType(KUidContactFieldEMail)); // CleanupStack::PopAndDestroy(); // card CntTest->CloseDatabase(); }
LOCAL_C void TestTemplateL() { test.Next(_L("Create template")); CreateDatabaseL(); CContactDatabase* db=CntTest->OpenDatabaseL(); CntTest->DeleteAllTemplateFieldsL(); // CContactTemplate* contactTemplate=CContactTemplate::NewLC(); TContactItemId id1=db->AddNewContactL(*contactTemplate); CleanupStack::PopAndDestroy(); // contactTemplate contactTemplate=(CContactTemplate *)db->ReadContactLC(id1); // add fields to cards AddFieldL(contactTemplate,KUidContactFieldGivenName,_L("First name"),_L("Bilbo")); AddFieldL(contactTemplate,KUidContactFieldFamilyName,_L("Surname"),_L("Baggins")); AddFieldL(contactTemplate,KUidContactFieldCompanyName,_L("Company"),_L("Great Ape Software")); TDateTime dt(1965,EJuly,15,0,0,0,0); AddDateFieldL(contactTemplate,KUidContactFieldNone,_L("Birthday"),&dt); // TContactItemId templateId=db->AddNewContactL(*contactTemplate); // doTestTemplate(db,templateId,contactTemplate,EFalse); CleanupStack::PopAndDestroy(); // contactTemplate CntTest->CloseDatabase(); }
LOCAL_C void TestFieldSetL() // // test CContactItemFieldSet // { test.Next(_L("field set")); CContactItemFieldSet* fieldSet=CContactItemFieldSet::NewLC(); AddFieldL(fieldSet,KStorageTypeText,KUidContactFieldCompanyName,KUidContactFieldVCardMapORG); AddFieldL(fieldSet,KStorageTypeText,KUidContactFieldPhoneNumber,KUidContactFieldVCardMapTEL); test(fieldSet->Count()==2); TInt index=fieldSet->Find(KUidContactFieldCompanyName); test((*fieldSet)[index].ContentType().ContainsFieldType(KUidContactFieldCompanyName)); index=fieldSet->Find(KUidContactFieldPhoneNumber); test((*fieldSet)[index].ContentType().ContainsFieldType(KUidContactFieldPhoneNumber)); AddFieldL(fieldSet,KStorageTypeText,KUidContactFieldPhoneNumber,KUidContactFieldVCardMapTEL); AddFieldL(fieldSet,KStorageTypeText,KUidContactFieldCompanyName,KUidContactFieldVCardMapORG); AddFieldL(fieldSet,KStorageTypeText,KUidContactFieldPhoneNumber,KUidContactFieldVCardMapTEL); AddFieldL(fieldSet,KStorageTypeDateTime,KUidContactFieldBirthday,KUidContactFieldVCardMapBDAY); AddFieldL(fieldSet,KStorageTypeText,KUidContactFieldPhoneNumber,KUidContactFieldVCardMapTEL); index=fieldSet->Find(KUidContactFieldBirthday); test(index!=KErrNotFound); index=fieldSet->Find(KUidContactFieldCompanyName); test(index!=KErrNotFound); // index=fieldSet->FindNext(KUidContactFieldCompanyName,index+1); test(index!=KErrNotFound); index=fieldSet->FindNext(KUidContactFieldCompanyName,index+1); test(index==KErrNotFound); index=fieldSet->Find(KUidContactFieldPhoneNumber); index=fieldSet->FindNext(KUidContactFieldPhoneNumber,index+1); test(index!=KErrNotFound); index=fieldSet->FindNext(KUidContactFieldPhoneNumber,index+1); test(index!=KErrNotFound); index=fieldSet->FindNext(KUidContactFieldPhoneNumber,index+1); test(index!=KErrNotFound); index=fieldSet->FindNext(KUidContactFieldPhoneNumber,index+1); test(index==KErrNotFound); test(fieldSet->Count()==7); index=fieldSet->Find(KUidContactFieldCompanyName); index=fieldSet->FindNext(KUidContactFieldCompanyName,index+1); fieldSet->Remove(index); test(fieldSet->Count()==6); index=fieldSet->Find(KUidContactFieldCompanyName); test(fieldSet->FindNext(KUidContactFieldCompanyName,index+1)==KErrNotFound); fieldSet->Reset(); test(fieldSet->Count()==0); CleanupStack::PopAndDestroy(); // fieldSet fieldSet=CContactItemFieldSet::NewL(); AddFieldL(fieldSet,KStorageTypeText,KUidContactFieldCompanyName,KUidContactFieldVCardMapUnusedN); AddFieldL(fieldSet,KStorageTypeText,KUidContactFieldPhoneNumber,KUidContactFieldVCardMapTEL); test(fieldSet->Count()==2); delete fieldSet; }
LOCAL_C void TestTemplateFieldMatchingL() { test.Next(_L("Create template")); CreateDatabaseL(); CContactDatabase* db=CntTest->OpenDatabaseL(); CntTest->DeleteAllTemplateFieldsL(); // _LIT(KField1,"Field 1"); _LIT(KField2,"Field 2"); _LIT(KField3,"Field 3"); _LIT(KField4,"Field 4"); _LIT(KField5,"Field 5"); _LIT(KField6,"Field 6"); _LIT(KField7,"Field 7"); _LIT(KField8,"Field 8"); _LIT(KField9,"Field 9"); _LIT(KFieldX1,"Field X1"); _LIT(KFieldX2,"Field X2"); _LIT(KFieldHome,"Field Home"); _LIT(KFieldWork,"Field Work"); // CContactTemplate *contactTemplate=(CContactTemplate *)db->OpenContactLX(db->TemplateId()); CleanupStack::PushL(contactTemplate); TFieldType mapping1(TUid::Uid(1)); TFieldType mapping2(TUid::Uid(2)); TFieldType mapping3(TUid::Uid(3)); TFieldType mapping4(TUid::Uid(4)); TFieldType mappingX(KUidContactFieldVCardMapUnusedN); TFieldType fieldType1(TUid::Uid(101)); TFieldType fieldType2(TUid::Uid(102)); TFieldType fieldType3(TUid::Uid(103)); TFieldType fieldType4(TUid::Uid(104)); TFieldType fieldType5(TUid::Uid(105)); TFieldType fieldTypeHome(TUid::Uid(KIntContactFieldVCardMapHOME)); TFieldType fieldTypeWork(TUid::Uid(KIntContactFieldVCardMapWORK)); AddFieldL(contactTemplate,mapping1,KField1()); SetUserFlags(contactTemplate,1); AddFieldL(contactTemplate,mapping2,KField2(),&fieldType2); SetUserFlags(contactTemplate,2); AddFieldL(contactTemplate,mapping2,KField3(),&fieldType3); SetUserFlags(contactTemplate,3); AddFieldL(contactTemplate,mapping3,KField4(),&fieldType2); SetUserFlags(contactTemplate,0); AddFieldL(contactTemplate,mapping3,KField5(),&fieldType2,&fieldType4); SetUserFlags(contactTemplate,1); AddFieldL(contactTemplate,mapping3,KField6(),&fieldType2,&fieldType1); SetUserFlags(contactTemplate,2); AddFieldL(contactTemplate,mapping4,KField8(),&fieldType4); SetUserFlags(contactTemplate,3); InsertFieldL(contactTemplate,mapping4,6,KField7()); SetUserFlags(contactTemplate,0); AddFieldL(contactTemplate,mapping4,KField9(),&fieldType4,&fieldType2,&fieldType1); SetUserFlags(contactTemplate,1); AddFieldL(contactTemplate,mappingX,KFieldX1()); SetUserFlags(contactTemplate,2); AddFieldL(contactTemplate,mappingX,KFieldX2(),&fieldType2); SetUserFlags(contactTemplate,3); AddFieldL(contactTemplate,mapping1,KFieldHome(),&fieldType1,&fieldType5,&fieldTypeHome); SetUserFlags(contactTemplate,0); AddFieldL(contactTemplate,mapping1,KFieldWork(),&fieldType1,&fieldType5,&fieldTypeWork); SetUserFlags(contactTemplate,0); db->CommitContactL(*contactTemplate); CleanupStack::PopAndDestroy(); // contactTemplate CleanupStack::Pop(); // contactTemplate.Close() // TTemplateMapTest tmTest1(mapping1,&fieldType4,NULL,NULL,KField1(),1,EFalse); TTemplateMapTest tmTest2(mapping2,&fieldType1,NULL,NULL,KField2(),2,EFalse); TTemplateMapTest tmTest3(mapping2,&fieldType2,NULL,NULL,KField2(),2,ETrue); TTemplateMapTest tmTest4(mapping2,&fieldType3,NULL,NULL,KField3(),3,ETrue); TTemplateMapTest tmTest5(mapping3,&fieldType4,NULL,NULL,KField5(),5,EFalse); TTemplateMapTest tmTest6(mapping3,&fieldType1,NULL,NULL,KField6(),6,EFalse); TTemplateMapTest tmTest7(mapping3,&fieldType2,&fieldType4,NULL,KField5(),5,ETrue); TTemplateMapTest tmTest8(mapping4,&fieldType3,NULL,NULL,KField7(),7,EFalse); TTemplateMapTest tmTest9(mapping4,&fieldType4,NULL,NULL,KField8(),8,ETrue); TTemplateMapTest tmTest10(mapping4,&fieldType4,&fieldType2,NULL,KField9(),9,EFalse); TTemplateMapTest tmTestX1(mappingX,&fieldType4,NULL,NULL,KFieldX1(),10,EFalse,&mappingX); TTemplateMapTest tmTestX2(mappingX,&fieldType2,NULL,NULL,KFieldX2(),11,ETrue); TTemplateMapTest tmTestWork(mapping1,&fieldType1,&fieldType5,NULL,KFieldWork(),13,EFalse,NULL,&fieldTypeWork);//zzz change to work contactTemplate=(CContactTemplate *)ReadContactIncHiddenFieldsLC(db,db->TemplateId()); CheckFieldMappings(db,contactTemplate,&tmTest1); CheckFieldMappings(db,contactTemplate,&tmTest1,&tmTest3,&tmTest4); CheckFieldMappings(db,contactTemplate,&tmTest5,&tmTest2,&tmTest1,&tmTest6); CheckFieldMappings(db,contactTemplate,&tmTest7,&tmTest10,&tmTest8); CheckFieldMappings(db,contactTemplate,&tmTest9); CheckFieldMappings(db,contactTemplate,&tmTestX1); CheckFieldMappings(db,contactTemplate,&tmTestX2); CheckFieldMappings(db,contactTemplate,&tmTestWork); // CleanupStack::PopAndDestroy(); // contactTemplate CntTest->CloseDatabase(); }