/*sets a specific contact field to a value as determined by its type. field at aPos in aFields is set to aText*/ void CContactsRamTest::SetFieldL(const CContactItemField &aField, const TDesC& aText) { if( aField.IsTemplateLabelField() ) { return; } if( 0 == aText.Size() ) { return; } switch(aField.StorageType()) { case KStorageTypeText: aField.TextStorage()->SetTextL(aText); break; case KStorageTypeStore: { HBufC8 *buf = HBufC8::NewLC(aText.Size()); TPtr8 tptr8 = buf->Des(); tptr8.Copy(aText); aField.StoreStorage()->SetThingL(*buf); CleanupStack::PopAndDestroy(buf); } break; case KStorageTypeContactItemId: { aField.AgentStorage()->SetAgentId( KAgentId ); } break; case KStorageTypeDateTime: { if( aText.Size() > 0 ) { aField.DateTimeStorage()->SetTime( TTime(KTime) ); } else { aField.DateTimeStorage()->SetTime( TTime(0) ); } } break; default: User::Panic(aText,EInvariantFalse); break; } }
/** Create Contact Item and add field to it and * verify the field is being added * aValue - field value * @param aStorageType - Storage type of each field * @param aContFieldUid - Uid of Contact field * @param avCardMapUid - Uid of vCard * @return - void */ void CTestAddFieldsStep::AddFieldsL(TPtrC aValue, TInt aStorageType,TUid aContFieldUid, TUid avCardMap) { TPtrC value; TInt year, month, day; // Create contact Item and add field to it CContactItem* item = CContactCard::NewLC(); CContactItemField* field = CContactItemField::NewL(aStorageType, aContFieldUid); CleanupStack::PushL(field); field->SetMapping(avCardMap); if(aStorageType==KStorageTypeDateTime) { GetIntFromConfig(ConfigSection(), KIniYear, year); GetIntFromConfig(ConfigSection(), KIniMonth, month); GetIntFromConfig(ConfigSection(), KIniDay, day); TDateTime date(year,(TMonth)month,day,0,0,0,0); field->DateTimeStorage()->SetTime(date); } else { field->TextStorage()->SetTextL(aValue); } item->AddFieldL(*field); // verify the field is being added CContactItemFieldSet& ContactFieldSet = item->CardFields(); TInt pos = ContactFieldSet.Find(aContFieldUid, avCardMap); if(pos != KErrNotFound) { if(aStorageType==KStorageTypeDateTime) { TDateTime result=ContactFieldSet[pos].DateTimeStorage()->Time().DateTime(); //compair the results if((result.Year() == year) && (result.Month() == (TMonth)month) && (result.Day() == day)) { SetTestStepResult(EPass); } else { SetTestStepResult(EFail); } } else { value.Set(ContactFieldSet[pos].TextStorage()->Text()); //compair the results if(aValue.Compare(value)==0 ) { SetTestStepResult(EPass); } else { SetTestStepResult(EFail); } } } CleanupStack::Pop(field); CleanupStack::PopAndDestroy(item); }
TBool CPackagerCntComparator::DoCompareCContactItemFieldStorageTypeL(const CContactItemField& anItemField1, const CContactItemField& anItemField2) const /** Compares two storage type items contained within their respective CContactItemField parent. @param anItemField1 The first CContactItemField containing the storage type to be compared. @param anItemField2 The second CContactItemField containing the storage type to be compared. @return ETrue if the two items are equal, EFalse otherwise. */ { // Check if storage type is same first, otherwise don't need to // compare storage content. if(!DoCompareTUint(anItemField1.StorageType(), anItemField2.StorageType())) { return EFalse; } TBool result = ETrue; switch (anItemField1.StorageType()) { case KStorageTypeText: result = DoCompareTPtrC(anItemField1.TextStorage()->Text(), anItemField2.TextStorage()->Text()); break; case KStorageTypeStore: result = (anItemField1.StoreStorage()->Thing()==anItemField2.StoreStorage()->Thing()); break; case KStorageTypeDateTime: result = DoCompareTTime(anItemField1.DateTimeStorage()->Time(), anItemField2.DateTimeStorage()->Time()); break; case KStorageTypeContactItemId: result = DoCompareTContactItemId(anItemField1.AgentStorage()->Value(), anItemField2.AgentStorage()->Value()); break; default: User::Leave(KErrNotSupported); break; } return result; }
QList<CContactItemField *> CntTransformBirthday::transformDetailL(const QContactDetail &detail) { if(detail.definitionName() != QContactBirthday::DefinitionName) User::Leave(KErrArgument); QList<CContactItemField *> fieldList; //cast to birthday const QContactBirthday &birthday(static_cast<const QContactUrl&>(detail)); //create new field TDateTime dateTime(birthday.date().year(), TMonth(birthday.date().month() - 1), birthday.date().day() - 1, 0, 0, 0, 0); CContactItemField* newField = CContactItemField::NewLC(KStorageTypeDateTime, KUidContactFieldBirthday); newField->DateTimeStorage()->SetTime(dateTime); newField->SetMapping(KUidContactFieldVCardMapBDAY); fieldList.append(newField); CleanupStack::Pop(newField); return fieldList; }
QList<CContactItemField *> CntTransformAnniversarySimple::transformDetailL(const QContactDetail &detail) { if(detail.definitionName() != QContactAnniversary::DefinitionName) User::Leave(KErrArgument); QList<CContactItemField *> fieldList; //cast to anniversary const QContactAnniversary &anniversary(static_cast<const QContactAnniversary&>(detail)); //create new field TDateTime dateTime(anniversary.originalDate().year(), TMonth(anniversary.originalDate().month() - 1), anniversary.originalDate().day() - 1, 0, 0, 0, 0); CContactItemField* newField = CContactItemField::NewLC(KStorageTypeDateTime, KUidContactFieldAnniversary); newField->DateTimeStorage()->SetTime(dateTime); newField->SetMapping(KUidContactFieldVCardMapAnniversary); fieldList.append(newField); CleanupStack::Pop(newField); return fieldList; }
/** Create Multiple Contact Item with field and Add all contact * Item to Contact database. verify field is * being added * aValue - field value * @param aStorageType - Storage type of each field * @param aContFieldUid - Uid of Contact field * @param avCardMapUid - Uid of vCard * @return - void */ void CTestAddMultipleContactsStep::AddMultipleContactsL(TPtrC aValue, TInt aStorageType,TUid aContFieldUid, TUid avCardMap) { TPtrC value; _LIT(KTestDbName, "c:contactmultiple.cdb"); TInt year, month, day,noOfCI; RArray <TInt> idArray; CleanupClosePushL(idArray); //replace existing database name database = CContactDatabase::ReplaceL(KTestDbName); //Get the number of contact item from ini file GetIntFromConfig(ConfigSection(), KNoOfContactItem, noOfCI); //Get the int value GetIntFromConfig(ConfigSection(), KIniYear, year); GetIntFromConfig(ConfigSection(), KIniMonth, month); GetIntFromConfig(ConfigSection(), KIniDay, day); // Create contact item and add field to it for(TInt range=0;range<noOfCI;range++) { CContactItem* item = CContactCard::NewLC(); CContactItemField* field = CContactItemField::NewL(aStorageType, aContFieldUid); CleanupStack::PushL(field); field->SetMapping(avCardMap); if(aStorageType==KStorageTypeDateTime) { TDateTime date(year,(TMonth)month,day,0,0,0,0); field->DateTimeStorage()->SetTime(date); } else { field->TextStorage()->SetTextL(aValue); } item->AddFieldL(*field); CleanupStack::Pop(field); // add contact item to database id = database->AddNewContactL(*item); //append the id in array idArray.Append(id); //Cleanup CleanupStack::PopAndDestroy(item); } database->CloseContactL(id); // verify for multiple contact item with field is being created CContactItem *readItem = NULL; for(TInt readContact=0;readContact<noOfCI;readContact++) { readItem = database->ReadContactL(idArray[readContact]); CleanupStack::PushL(readItem); CContactItemFieldSet& ContactFieldSet = readItem->CardFields(); TInt pos = ContactFieldSet.Find(aContFieldUid, avCardMap); if(pos != KErrNotFound) { if(aStorageType==KStorageTypeDateTime) { TDateTime result=ContactFieldSet[pos].DateTimeStorage()->Time().DateTime(); if((result.Year() == year) && (result.Month() == (TMonth)month) && (result.Day() == day)) { SetTestStepResult(EPass); } else { SetTestStepResult(EFail); } } else { value.Set(ContactFieldSet[pos].TextStorage()->Text()); //compare the results if(aValue.Compare(value)==0 ) { SetTestStepResult(EPass); } else { SetTestStepResult(EFail); } } } CleanupStack::PopAndDestroy(readItem); } // Cleanup CleanupStack::PopAndDestroy(&idArray); delete database; }
void CTestAddMultipleContactsStep::OpenExistingContactL(TPtrC aValue, TInt aStorageType,TUid aContFieldUid, TUid avCardMap) { TPtrC value,fielddel; _LIT(KTestDbName, "c:contactexist.cdb"); _LIT(KExistDelete, "exist"); TInt year, month, day; // Create contact item and add field to it CContactItem* item = CContactCard::NewLC(); CContactItemField* field = CContactItemField::NewL(aStorageType, aContFieldUid); CleanupStack::PushL(field); field->SetMapping(avCardMap); if(aStorageType==KStorageTypeDateTime) { GetIntFromConfig(ConfigSection(), KIniYear, year); GetIntFromConfig(ConfigSection(), KIniMonth, month); GetIntFromConfig(ConfigSection(), KIniDay, day); TDateTime date(year,(TMonth)month,day,0,0,0,0); field->DateTimeStorage()->SetTime(date); } else { field->TextStorage()->SetTextL(aValue); } item->AddFieldL(*field); CleanupStack::Pop(field); //replace existing database name database = CContactDatabase::ReplaceL(KTestDbName); // add contact item to database id = database->AddNewContactL(*item); CleanupStack::PopAndDestroy(item); //reopen the contact CContactItem *openItem = database->OpenContactL(id); CleanupStack::PushL(openItem); //create contactitem field and add to it. CContactItemField* newField = CContactItemField::NewL(aStorageType, aContFieldUid); CleanupStack::PushL(newField); newField->SetMapping(avCardMap); if(aStorageType==KStorageTypeDateTime) { GetIntFromConfig(ConfigSection(), KIniYear, year); GetIntFromConfig(ConfigSection(), KIniMonth, month); GetIntFromConfig(ConfigSection(), KIniDay, day); TDateTime date(year,(TMonth)month,day,0,0,0,0); newField->DateTimeStorage()->SetTime(date); } else { newField->TextStorage()->SetTextL(aValue); } openItem->AddFieldL(*newField); CleanupStack::Pop(newField); // verify the field is being added CContactItemFieldSet& ContactFieldSetOpen = openItem->CardFields(); TInt startPos=0; for(TInt check=0; check<2; check++) { TInt pos = ContactFieldSetOpen.FindNext(aContFieldUid, avCardMap, startPos); TInt noOfFields = ContactFieldSetOpen.Count(); if(pos != KErrNotFound) { if(aStorageType==KStorageTypeDateTime) { TDateTime result=ContactFieldSetOpen[pos].DateTimeStorage()->Time().DateTime(); startPos=startPos+1; if((result.Year() == year) && (result.Month() == (TMonth)month) && (result.Day() == day)) { SetTestStepResult(EPass); } else { SetTestStepResult(EFail); } } else { value.Set(ContactFieldSetOpen[pos].TextStorage()->Text()); startPos=startPos+1; //compare the results if(aValue.Compare(value)==0 ) { SetTestStepResult(EPass); } else { SetTestStepResult(EFail); } } } } GetStringFromConfig(ConfigSection(), KIniFlagDelete, fielddel); if(KErrNone == fielddel.Compare(KExistDelete)) { TRAPD(ret, DeleteExistContactL(aContFieldUid, avCardMap)); if(ret!=KErrNone) { database->CloseContactL(id); delete database; return; } } database->CloseContactL(id); CleanupStack::PopAndDestroy(openItem); delete database; }
/** Create Contact user defuned Template add add field to contact item * through template and verify the field is being added * aValue - field value * @param aStorageType - Storage type of each field * @param aContFieldUid - Uid of Contact field * @param avCardMapUid - Uid of vCard * @return - void */ void CTestAddFieldsStep::AddFieldsNewTemplateL(TPtrC aValue, TInt aStorageType,TUid aContFieldUid, TUid avCardMap) { TPtrC value; TInt year, month, day; CContactDatabase *base = NULL; _LIT(KTestDbName, "c:mytemplate.cdb"); _LIT(KUserDefinedTemplate,"MyTemplate"); // replace existing database name base = CContactDatabase::ReplaceL(KTestDbName); CleanupStack::PushL(base); TContactItemId TempId ; CContactItemField* field = NULL; //Create User defined Template CContactItem* contactTemplate = base->CreateContactCardTemplateLC(KUserDefinedTemplate); // Get the ID of Template TempId = contactTemplate->Id(); //Add fields to it field = CContactItemField::NewL(aStorageType, aContFieldUid); CleanupStack::PushL(field); field->SetMapping(avCardMap); contactTemplate->AddFieldL(*field); CleanupStack::Pop(field); //Allocates and constructs a new contact card. CContactItem* item = CContactCard::NewLC(); //Sets the ID of the template on which this contact item is based item->SetTemplateRefId(TempId); //create contact item and add field value to it field = CContactItemField::NewL(aStorageType, aContFieldUid); CleanupStack::PushL(field); field->SetMapping(avCardMap); if(aStorageType==KStorageTypeDateTime) { //Get the int value TBool res; res = GetIntFromConfig(ConfigSection(), KIniYear, year); if(!res) { ERR_PRINTF1(_L("Unable to read year val from ini file")); SetTestStepResult(EFail); } res = GetIntFromConfig(ConfigSection(), KIniMonth, month); if(!res) { ERR_PRINTF1(_L("Unable to read month val from ini file")); SetTestStepResult(EFail); } res = GetIntFromConfig(ConfigSection(), KIniDay, day); if(!res) { ERR_PRINTF1(_L("Unable to read day val from ini file")); SetTestStepResult(EFail); } TDateTime date(year,(TMonth)month,day,0,0,0,0); field->DateTimeStorage()->SetTime(date); } else { field->TextStorage()->SetTextL(aValue); } item->AddFieldL(*field); // verify the field is being added to the user defined template CContactItemFieldSet& ContactFieldSet = item->CardFields(); TInt pos = ContactFieldSet.Find(aContFieldUid, avCardMap); if(pos != KErrNotFound) { if(aStorageType==KStorageTypeDateTime) { TDateTime result=ContactFieldSet[pos].DateTimeStorage()->Time().DateTime(); //compair the results if((result.Year() == year) && (result.Month() == (TMonth)month) && (result.Day() == day)) { SetTestStepResult(EPass); } else { SetTestStepResult(EFail); } } else { value.Set(ContactFieldSet[pos].TextStorage()->Text()); //compair the results if(aValue.Compare(value)==0 ) { SetTestStepResult(EPass); } else { SetTestStepResult(EFail); } } } CleanupStack::Pop(field); CleanupStack::PopAndDestroy(item); CleanupStack::PopAndDestroy(contactTemplate); CleanupStack::PopAndDestroy(base); }
/** Create Contact Item and add all fields to it and * verify the field is being added * @return - void */ void CTestAddFieldsStep::AddAllFieldsL() { RArray<TPtrC> readValues; CleanupClosePushL(readValues); TPtrC temp, value; TInt year, month, day,readPos=0; // get string value from ini file. if(!GetStringFromConfig(ConfigSection(), KIniFieldAsstVal, temp)) { ERR_PRINTF1(_L("Unable to read val from ini file")); SetTestStepResult(EFail); } else { readValues.Append(temp); } if(!GetStringFromConfig(ConfigSection(), KIniFieldAsstTelVal, temp)) { ERR_PRINTF1(_L("Unable to read val from ini file")); SetTestStepResult(EFail); } else { readValues.Append(temp); } if(!GetStringFromConfig(ConfigSection(), KIniFieldSpouseVal, temp)) { ERR_PRINTF1(_L("Unable to read val from ini file")); SetTestStepResult(EFail); } else { readValues.Append(temp); } if(!GetStringFromConfig(ConfigSection(), KIniFieldChildVel, temp)) { ERR_PRINTF1(_L("Unable to read val from ini file")); SetTestStepResult(EFail); } else { readValues.Append(temp); } if(!GetStringFromConfig(ConfigSection(), KIniFieldClassVal, temp)) { ERR_PRINTF1(_L("Unable to read val from ini file")); SetTestStepResult(EFail); } else { readValues.Append(temp); } if(!GetStringFromConfig(ConfigSection(), KIniFieldDeptVal, temp)) { ERR_PRINTF1(_L("Unable to read val from ini file")); SetTestStepResult(EFail); } else { readValues.Append(temp); } // get int val from ini file GetIntFromConfig(ConfigSection(), KIniYear, year); GetIntFromConfig(ConfigSection(), KIniMonth, month); GetIntFromConfig(ConfigSection(), KIniDay, day); CContactItemField* field = NULL; // Create contact Item and add all fields to it CContactItem* item = CContactCard::NewLC(); for(TInt x=0; x<7; x++) { field = CContactItemField::NewL(iStorage[x], iFieldUid[x]); CleanupStack::PushL(field); field->SetMapping(iVcardUid[x]); if(iStorage[x]==KStorageTypeDateTime) { TDateTime date(year,(TMonth)month,day,0,0,0,0); field->DateTimeStorage()->SetTime(date); } else { field->TextStorage()->SetTextL(readValues[readPos++]); } item->AddFieldL(*field); CleanupStack::Pop(field); } readPos=0; // verify the field is being added for(TInt x=0; x<7; x++) { CContactItemFieldSet& ContactFieldSet = item->CardFields(); TInt pos = ContactFieldSet.Find(iFieldUid[x], iVcardUid[x]); if(pos != KErrNotFound) { if(iStorage[x]==KStorageTypeDateTime) { TDateTime result=ContactFieldSet[pos].DateTimeStorage()->Time().DateTime(); if((result.Year() == year) && (result.Month() == (TMonth)month) && (result.Day() == day)) { SetTestStepResult(EPass); } else { SetTestStepResult(EFail); } } else { value.Set(ContactFieldSet[pos].TextStorage()->Text()); if(value.Compare(readValues[readPos++])==0 ) { SetTestStepResult(EPass); } else { SetTestStepResult(EFail); } } } } //Cleanup stack CleanupStack::PopAndDestroy(item); CleanupStack::PopAndDestroy(&readValues); }
/** Create Contact Item and add couple of same fields to it and * verify the field is being added * aValue - field value * @param aStorageType - Storage type of each field * @param aContFieldUid - Uid of Contact field * @param avCardMapUid - Uid of vCard * @return - void */ void CTestAddFieldsStep::AddCoupleFieldsL(TPtrC aValue, TInt aStorageType,TUid aContFieldUid, TUid avCardMap) { TPtrC value; TInt year, month, day; CContactItemField* field; // Get the value form ini file GetIntFromConfig(ConfigSection(), KIniYear, year); GetIntFromConfig(ConfigSection(), KIniMonth, month); GetIntFromConfig(ConfigSection(), KIniDay, day); // Create contact Item and add same field twice to it CContactItem* item = CContactCard::NewLC(); for(TInt x=0; x<2; x++) { field = CContactItemField::NewL(aStorageType, aContFieldUid); CleanupStack::PushL(field); field->SetMapping(avCardMap); if(aStorageType==KStorageTypeDateTime) { TDateTime date(year,(TMonth)month,day,0,0,0,0); field->DateTimeStorage()->SetTime(date); } else { field->TextStorage()->SetTextL(aValue); } item->AddFieldL(*field); CleanupStack::Pop(field); } CContactItemFieldSet& ContactFieldSetOpen = item->CardFields(); // verify the field is being added TInt startPos=0; for(TInt check=0; check<2; check++) { TInt pos = ContactFieldSetOpen.FindNext(aContFieldUid, avCardMap,startPos); if(pos != KErrNotFound) { if(aStorageType==KStorageTypeDateTime) { TDateTime result=ContactFieldSetOpen[pos].DateTimeStorage()->Time().DateTime(); startPos=startPos+1; if((result.Year() == year) && (result.Month() == (TMonth)month) && (result.Day() == day)) { SetTestStepResult(EPass); } else { SetTestStepResult(EFail); } } else { value.Set(ContactFieldSetOpen[pos].TextStorage()->Text()); startPos=startPos+1; //compair the results if(aValue.Compare(value)==0 ) { SetTestStepResult(EPass); } else { SetTestStepResult(EFail); } } } } CleanupStack::PopAndDestroy(item); }
/** Create Contact Item and add field to it.Update the field value and * verify the field is being updated * aValue - field value * @param aStorageType - Storage type of each field * @param aContFieldUid - Uid of Contact field * @param avCardMapUid - Uid of vCard * @return - void */ void CTestUpdateFieldsStep::UpdateFieldsL(TPtrC aValue, TInt aStorageType,TUid aContFieldUid, TUid avCardMap) { TPtrC value, updateVal, getUpdateValue; TInt year, month, day; // get the value from ini file GetIntFromConfig(ConfigSection(), KIniYear, year); GetIntFromConfig(ConfigSection(), KIniMonth, month); GetIntFromConfig(ConfigSection(), KIniDay, day); //Create contact Item and add field to it. CContactItem* item = CContactCard::NewLC(); CContactItemField* field = CContactItemField::NewL(aStorageType, aContFieldUid); CleanupStack::PushL(field); field->SetMapping(avCardMap); if(aStorageType==KStorageTypeDateTime) { TDateTime date(year,(TMonth)month,day,0,0,0,0); field->DateTimeStorage()->SetTime(date); } else { field->TextStorage()->SetTextL(aValue); } item->AddFieldL(*field); // Get the value from ini file for update GetStringFromConfig(ConfigSection(), KIniUpdatedvalue, updateVal); GetIntFromConfig(ConfigSection(), KIniUpdateYear, year); GetIntFromConfig(ConfigSection(), KIniUpdateMonth, month); GetIntFromConfig(ConfigSection(), KIniUpdateDay, day); CContactItemFieldSet& ContactFieldSet = item->CardFields(); TInt pos = ContactFieldSet.Find(aContFieldUid, avCardMap); if(aStorageType==KStorageTypeDateTime) { // update the field value TDateTime date(year,(TMonth)month,day,0,0,0,0); field->DateTimeStorage()->SetTime(date); ContactFieldSet.UpdateFieldL(ContactFieldSet[pos],pos); // verify the updated field value TInt upadtePos = ContactFieldSet.Find(aContFieldUid, avCardMap); TDateTime result=ContactFieldSet[upadtePos].DateTimeStorage()->Time().DateTime(); if((result.Year() == year) && (result.Month() == (TMonth)month) && (result.Day() == day)) { SetTestStepResult(EPass); } else { SetTestStepResult(EFail); } } else { // Update the field value ContactFieldSet[pos].TextStorage()->SetTextL(updateVal); ContactFieldSet.UpdateFieldL(ContactFieldSet[pos],pos); // verify the field is being updated TInt upadtePos = ContactFieldSet.Find(aContFieldUid, avCardMap); getUpdateValue.Set(ContactFieldSet[upadtePos].TextStorage()->Text()); //compair the results if(getUpdateValue.Compare(updateVal)==0 ) { SetTestStepResult(EPass); } else { SetTestStepResult(EFail); } } // Cleanup CleanupStack::Pop(field); CleanupStack::PopAndDestroy(item); }
/** * Creating 1000 contact item with all new fields * @return - void */ void CTestContactPerformanceStep::FieldPerformanceL() { TPtrC value, temp; _LIT(KTestDbName, "c:contactmultiple.cdb"); TInt readPos=0; TContactItemId id = 0; _LIT(KUpdate, "update"); _LIT(KDelete, "delete"); CleanupClosePushL(idArray); RArray<TPtrC> readValues; CleanupClosePushL(readValues); // get string value from ini file. GetStringFromConfig(ConfigSection(), KIniFieldAsstVal, temp); readValues.Append(temp); GetStringFromConfig(ConfigSection(), KIniFieldAsstTelVal, temp); readValues.Append(temp); GetStringFromConfig(ConfigSection(), KIniFieldSpouseVal, temp); readValues.Append(temp); GetStringFromConfig(ConfigSection(), KIniFieldChildVel, temp); readValues.Append(temp); GetStringFromConfig(ConfigSection(), KIniFieldClassVal, temp); readValues.Append(temp); GetStringFromConfig(ConfigSection(), KIniFieldDeptVal, temp); readValues.Append(temp); // get int val from ini file GetIntFromConfig(ConfigSection(), KIniYear, iYear); GetIntFromConfig(ConfigSection(), KIniMonth, iMonth); GetIntFromConfig(ConfigSection(), KIniDay, iDay); //replace existing database name dBase = CContactDatabase::ReplaceL(KTestDbName); //Get the number of contact item from ini file GetIntFromConfig(ConfigSection(), KNoOfContactItem, iNoOfCI); // Create contact item and add all fields to it for(TInt range=0; range<iNoOfCI; range++) { CContactItem* item = CContactCard::NewLC(); for(TInt noOfFields=0; noOfFields<7; noOfFields++) { CContactItemField* field = CContactItemField::NewL(iStorage[noOfFields], iFieldUid[noOfFields]); CleanupStack::PushL(field); field->SetMapping(iVcardUid[noOfFields]); if(iStorage[noOfFields]==KStorageTypeDateTime) { TDateTime date(iYear,(TMonth)iMonth,iDay,0,0,0,0); field->DateTimeStorage()->SetTime(date); } else { field->TextStorage()->SetTextL(readValues[readPos++]); } item->AddFieldL(*field); CleanupStack::Pop(field); } // add contact item to database id = dBase->AddNewContactL(*item); //Append the id into array idArray.Append(id); readPos=0; // Cleanup CleanupStack::PopAndDestroy(item); } dBase->CloseContactL(id); // verify for multiple contact item with all fields is being added readPos=0; CContactItem *readItem = NULL; for(TInt readContact=0; readContact<iNoOfCI; readContact++) { readItem = dBase->ReadContactLC(idArray[readContact]); for(TInt check=0; check<7; check++) { CContactItemFieldSet& ContactFieldSet = readItem->CardFields(); TInt pos = ContactFieldSet.Find(iFieldUid[check], iVcardUid[check]); if(pos != KErrNotFound) { if(iStorage[check]==KStorageTypeDateTime) { TDateTime result=ContactFieldSet[pos].DateTimeStorage()->Time().DateTime(); //compare the results if((result.Year() == iYear) && (result.Month() == (TMonth)iMonth) && (result.Day() == iDay)) { SetTestStepResult(EPass); } else { SetTestStepResult(EFail); } } else { value.Set(ContactFieldSet[pos].TextStorage()->Text()); //compare the results if(value.Compare(readValues[readPos++])==0 ) { SetTestStepResult(EPass); } else { SetTestStepResult(EFail); } } } } readPos=0; CleanupStack::PopAndDestroy(readItem); } CleanupStack::PopAndDestroy(&readValues); GetStringFromConfig(ConfigSection(), KIniFlagvalue, temp); if(KErrNone == temp.Compare(KUpdate)) { UpdatePerformanceL(); } else if(KErrNone == temp.Compare(KDelete)) { DeletePerformanceL(); } CleanupStack::PopAndDestroy(&idArray); delete dBase; }