buildverification/autosmoketest/contacts/src/TestContactsAddEntries.cpp
branchRCL_3
changeset 20 493058e57c8c
parent 0 9736f095102e
--- /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 <test/testexecutelog.h>
+
+// 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<KMaxScriptLineLength>	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; entry<count; )
+		{
+		CContactItem* item = NULL;
+
+		// The entry contains the template name
+		tempStore.Format(KTemplateName(), ++entry);
+		if (!GetStringFromConfig(ConfigSection(), tempStore, ptrString))
+			{
+			INFO_PRINTF2(_L("Entry %d has no Template Name"), entry);
+			item = iDatabase->CreateContactCardTemplateLC(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; i<tCount && templateFound == EFalse;i++)
+				{
+				// Reads a contact item
+				tempTemplate = STATIC_CAST(CContactItem*, iDatabase->ReadContactLC((*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; i<groupCount;i++)
+				{
+				// Reads a contact item
+				CContactGroup* group = STATIC_CAST(CContactGroup*, iDatabase->ReadContactLC((*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);
+
+		}
+	}