diff -r 4ca382093dae -r 493058e57c8c buildverification/autosmoketest/contacts/src/TestContactsAddEntries.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/buildverification/autosmoketest/contacts/src/TestContactsAddEntries.cpp Wed Sep 01 12:30:50 2010 +0100 @@ -0,0 +1,408 @@ +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// This contains CTestContactsAddEntries +// +// + +// Epoc include +#include + +// User include +#include "TestContactsAddEntries.h" +#include "TestContact.h" + +/*@{*/ +// Literal constants +_LIT(KCardTemplateName, "TestTemplate"); +_LIT(KCount, "count"); +_LIT(KFirstName, "firstname%d"); +_LIT(KLastName, "lastname%d"); +_LIT(KCompanyName, "company%d"); +_LIT(KJobTitle, "job%d"); +_LIT(KWorkPhone, "workphone%d"); +_LIT(KWorkMobile, "workmobile%d"); +_LIT(KHomePhone, "homephone%d"); +_LIT(KHomeMobile, "homemobile%d"); +_LIT(KFax, "fax%d"); +_LIT(KWorkEmailAddress, "workemail%d"); +_LIT(KInternetAddress, "internet%d"); +_LIT(KStreet, "street%d"); +_LIT(KTown, "town%d"); +_LIT(KCounty, "county%d"); +_LIT(KPostCode, "postcode%d"); +_LIT(KCountry, "country%d"); +_LIT(KNotes, "notes%d"); +_LIT(KNickName, "nickName%d"); +_LIT(KPictureName, "picturename%d"); +_LIT(KGroupName, "groupname%d"); +_LIT(KTemplateName, "templatename%d"); +_LIT(KOneFieldTemplate, "OneFieldTemplate"); +/*@}*/ + + +CTestContactsAddEntries::CTestContactsAddEntries() +/** +Default Constructor + */ + { + SetTestStepName(_L("AddEntries")); + } + +CTestContactsAddEntries::~CTestContactsAddEntries() +/** +Destructor + */ + { + } + +// Each test step must supply a implementation for doTestStepL +enum TVerdict CTestContactsAddEntries::doTestStepL() +/** +invoked by the test execute framework for exercising the +functionality under test +@return EPass: The test passed succesfully; + EFail: The test failed; + EInconclusive: The result of the test was inconclusive; + ETestSuiteError: Error in the test suite; + EAbort: The test was aborted; + EIgnore: The test was unexecuted +@leave system wide error codes +*/ + { + + // Printing to the console and log file + INFO_PRINTF1(_L("Contacts Add Entries Test")); + + OpenDatabase(); + if ( TestStepResult() == EPass ) + { + TRAPD(r, AddEntriesL()); + if (r!=KErrNone) + { + ERR_PRINTF2(_L("Test step failed with error code = %d"), r); + SetTestStepResult(EFail); + } + } + CleanupDatabase(); + + // test steps return a result + return TestStepResult(); + } + +void CTestContactsAddEntries::AddEntriesL() +/** +This function adds contact entries to the database depending on entry type. +If the entry contains the group name then the contact will be added to the +particular group specified in the entry. If the entry contains the template +name then the contact item depending on the specified template name will be +created and added to the database. + +@leave system wide error code + */ + { + TBool groupExists = EFalse; + TBool templateFound = EFalse; + TInt count=1; + + if ( !GetIntFromConfig(ConfigSection(), KCount, count) ) + { + count=1; + } + + INFO_PRINTF2(_L("Number of Entries to Add = %d"), count); + + TBuf tempStore; + TPtrC ptrString; + + /******************************************************************* + To Create a contact card template depending upon the contact item + on which the new template's field set is based. The template name + on which the new template is based is read from the ini file. + *******************************************************************/ + + for (TInt entry=0; entryCreateContactCardTemplateLC(KCardTemplateName); + } + else + { + INFO_PRINTF2(_L("Template Name = %S"), &ptrString); + CContactIdArray* templateList = NULL; + CContactItem* tempTemplate = NULL; + + // Returns a copy of the database's template ID list + templateList = iDatabase->GetCardTemplateIdListL(); + CleanupStack::PushL(templateList); + + // Returns the number of contact card templates that currently exist in the database. + TInt tCount = iDatabase->TemplateCount(); + INFO_PRINTF2(_L("Number of existing templates = %d"), tCount); + + // Search for template in the template ID list + for(TInt i = 0; iReadContactLC((*templateList)[i])); + + // Gets the label for a contact card template. + TPtrC tempLabel = STATIC_CAST(CContactCardTemplate*,tempTemplate)->GetTemplateLabelL(); + + // Compare the template label + if(!(tempLabel.Compare(ptrString))) + { + INFO_PRINTF2(_L("Template %S found"), &tempLabel); + + // Creates a contact card template and adds it to the database + item = iDatabase->CreateContactCardTemplateLC(tempTemplate,tempLabel); + + // Compare the template label with OneFieldTemplate and add field to it. + if(!(tempLabel.Compare(KOneFieldTemplate))) + { + // Allocates and constructs a contact item field + CContactItemField* field=CContactItemField::NewLC(KStorageTypeText,KUidContactFieldGivenName); + item->AddFieldL(*field); + CleanupStack::Pop(field); // field + } + CleanupStack::Pop(item); + templateFound = ETrue; + } + CleanupStack::PopAndDestroy(tempTemplate); + } + + if (!templateFound) + { + ERR_PRINTF2(_L("Ini Template %S does not match existing templates"), &ptrString); + SetTestStepResult(EFail); + } + + // Set templateFound to false for next entry + templateFound = EFalse; + + CleanupStack::PopAndDestroy(templateList); + CleanupStack::PushL(item); + } + + CTestContact* contact=CTestContact::NewLC(*item); + + tempStore.Format(KFirstName(), entry); + if (GetStringFromConfig(ConfigSection(), tempStore, ptrString)) + { + INFO_PRINTF2(_L("firstname = %S"), &ptrString); + contact->SetFirstNameL(ptrString); + } + + tempStore.Format(KNickName(), entry); + if (GetStringFromConfig(ConfigSection(), tempStore, ptrString)) + { + INFO_PRINTF2(_L("NickName = %S"), &ptrString); + TRAPD(err, contact->SetNickNameL(ptrString)); + if ( err != KErrNone ) + { + ERR_PRINTF2(_L("SetNickNameL Leave = %d"), err); + SetTestStepResult(EFail); + } + } + + tempStore.Format(KLastName(), entry); + if (GetStringFromConfig(ConfigSection(), tempStore, ptrString)) + { + INFO_PRINTF2(_L("lastname = %S"), &ptrString); + contact->SetLastNameL(ptrString); + } + + tempStore.Format(KCompanyName(), entry); + if (GetStringFromConfig(ConfigSection(), tempStore, ptrString)) + { + INFO_PRINTF2(_L("company = %S"), &ptrString); + contact->SetCompanyNameL(ptrString); + } + + tempStore.Format(KJobTitle(), entry); + if (GetStringFromConfig(ConfigSection(), tempStore, ptrString)) + { + INFO_PRINTF2(_L("job = %S"), &ptrString); + contact->SetJobTitleL(ptrString); + } + + tempStore.Format(KWorkPhone(), entry); + if (GetStringFromConfig(ConfigSection(), tempStore, ptrString)) + { + INFO_PRINTF2(_L("work phone = %S"), &ptrString); + contact->SetWorkPhoneL(ptrString); + } + + tempStore.Format(KWorkMobile(), entry); + if (GetStringFromConfig(ConfigSection(), tempStore, ptrString)) + { + INFO_PRINTF2(_L("work mobile = %S"), &ptrString); + contact->SetWorkMobileL(ptrString); + } + + tempStore.Format(KHomePhone(), entry); + if (GetStringFromConfig(ConfigSection(), tempStore, ptrString)) + { + INFO_PRINTF2(_L("home phone = %S"), &ptrString); + contact->SetHomePhoneL(ptrString); + } + + tempStore.Format(KHomeMobile(), entry); + if (GetStringFromConfig(ConfigSection(), tempStore, ptrString)) + { + INFO_PRINTF2(_L("home mobile = %S"), &ptrString); + contact->SetHomeMobileL(ptrString); + } + + tempStore.Format(KFax(), entry); + if (GetStringFromConfig(ConfigSection(), tempStore, ptrString)) + { + INFO_PRINTF2(_L("fax = %S"), &ptrString); + contact->SetFaxL(ptrString); + } + + tempStore.Format(KWorkEmailAddress(), entry); + if (GetStringFromConfig(ConfigSection(), tempStore, ptrString)) + { + INFO_PRINTF2(_L("work email = %S"), &ptrString); + contact->SetWorkEmailAddressL(ptrString); + } + + tempStore.Format(KInternetAddress(), entry); + if (GetStringFromConfig(ConfigSection(), tempStore, ptrString)) + { + INFO_PRINTF2(_L("internet = %S"), &ptrString); + contact->SetInternetAddressL(ptrString); + } + + tempStore.Format(KStreet(), entry); + if (GetStringFromConfig(ConfigSection(), tempStore, ptrString)) + { + INFO_PRINTF2(_L("street = %S"), &ptrString); + contact->SetStreetL(ptrString); + } + + tempStore.Format(KTown(), entry); + if (GetStringFromConfig(ConfigSection(), tempStore, ptrString)) + { + INFO_PRINTF2(_L("town = %S"), &ptrString); + contact->SetTownL(ptrString); + } + + tempStore.Format(KCounty(), entry); + if (GetStringFromConfig(ConfigSection(), tempStore, ptrString)) + { + INFO_PRINTF2(_L("county = %S"), &ptrString); + contact->SetCountyL(ptrString); + } + + tempStore.Format(KPostCode(), entry); + if (GetStringFromConfig(ConfigSection(), tempStore, ptrString)) + { + INFO_PRINTF2(_L("post code = %S"), &ptrString); + contact->SetPostCodeL(ptrString); + } + + tempStore.Format(KCountry(), entry); + if (GetStringFromConfig(ConfigSection(), tempStore, ptrString)) + { + INFO_PRINTF2(_L("country = %S"), &ptrString); + contact->SetCountryL(ptrString); + } + + tempStore.Format(KNotes(), entry); + if (GetStringFromConfig(ConfigSection(), tempStore, ptrString)) + { + INFO_PRINTF2(_L("notes = %S"), &ptrString); + contact->SetNotesL(ptrString); + } + + tempStore.Format(KPictureName(), entry); + if (GetStringFromConfig(ConfigSection(), tempStore, ptrString)) + { + INFO_PRINTF2(_L("Picture Name = %S"), &ptrString); + + HBufC8* pictureName8 = HBufC8::NewLC(ptrString.Length()); + pictureName8->Des().Copy(ptrString); + + contact->SetPictureL(*pictureName8); + + CleanupStack::PopAndDestroy(pictureName8); + } + + tempStore.Format(KGroupName(), entry); + if (GetStringFromConfig(ConfigSection(), tempStore, ptrString)) + { + INFO_PRINTF2(_L("Group Name = %S"), &ptrString); + + // Flag for adding contacts to group. + groupExists = ETrue; + } + + const TContactItemId id = iDatabase->AddNewContactL(contact->ContactItem()); + + /******************************************************************** + This is for adding the contact entry to the specified group. + ********************************************************************/ + if(groupExists) + { + INFO_PRINTF1(_L("Adding Item ")); + CContactIdArray* groupList = NULL; + + // Returns a copy of the database's group ID list + groupList = iDatabase->GetGroupIdListL(); + CleanupStack::PushL(groupList); + + // Returns the number of groups that currently exist in the database + TInt groupCount = iDatabase->GroupCount(); + + + // Search for the group + for(TInt i = 0; iReadContactLC((*groupList)[i])); + + // Gets the contact item's ID. + const TContactItemId groupId1 = group->Id(); + + // Gets the group label. + TPtrC label = group->GetGroupLabelL(); + // Compare the group label with group name read from ini file. + if(!(label.Compare(ptrString))) + { + /** + Sets a contact item which already exists in the database + to be a member of a contact group + */ + iDatabase->AddContactToGroupL(id, groupId1); + INFO_PRINTF1(_L("Item added successfully")); + groupExists = EFalse; + } + CleanupStack::PopAndDestroy(group); + + } + CleanupStack::PopAndDestroy(groupList); + } + + CleanupStack::PopAndDestroy(contact); + CleanupStack::PopAndDestroy(item); + + } + }