pimprotocols/phonebooksync/Test/TE_PhBkSync/TestGetContactFormatSteps.cpp
author Peter Fordham <peter.fordham@gmail.com>
Fri, 19 Mar 2010 14:42:44 -0700
branchCompilerCompatibility
changeset 9 ac078c434997
parent 0 e686773b3f54
permissions -rw-r--r--
Bug 1745 - Fix types for passing function pointers.

// Copyright (c) 2001-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 PhbkSync API GetContactFormat() related Unit Test Steps
// 
//


#include "TE_PhBkSyncBase.h"
#include "TestGetContactFormatSteps.h"

void CPhbkSyncGetContactFormatTest_01::CheckContactFieldsFormatV1(RPhoneBookSession::TContactFieldsV1& aContactFormatV1)
	{
	TESTCHECKCONDITION(aContactFormatV1.iNameField.iLength > 0);
	TESTCHECK(aContactFormatV1.iNameField.iCount, 1);
	TESTCHECKCONDITION(aContactFormatV1.iNameField.iDisplayed);
	TESTCHECKCONDITION(aContactFormatV1.iNumberField.iLength > 0);
	TESTCHECK(aContactFormatV1.iNumberField.iCount, 1);
	TESTCHECKCONDITION(aContactFormatV1.iNumberField.iDisplayed);
	TESTCHECK(aContactFormatV1.iIccSlotField.iLength, -1);
	TESTCHECK(aContactFormatV1.iIccSlotField.iCount, 1);
	TESTCHECKCONDITION(aContactFormatV1.iIccSlotField.iDisplayed);
	}

void CPhbkSyncGetContactFormatTest_01::CheckContactFieldsFormatV2(RPhoneBookSession::TContactFieldsV2& aContactFormatV2, TUid aPhonebook)
	{
	CheckContactFieldsFormatV1(aContactFormatV2);

	if ((aPhonebook == KUidIccGlobalSdnPhonebook) ||
		(aPhonebook == KUidIccGlobalLndPhonebook) ||
		(aPhonebook == KUidIccGlobalFdnPhonebook))
		{
		TESTCHECK(aContactFormatV2.iAdditionalNumString.iLength, 0);
		TESTCHECK(aContactFormatV2.iAdditionalNumString.iCount, 0);
		TESTCHECKCONDITION(!aContactFormatV2.iAdditionalNumString.iDisplayed);
		TESTCHECK(aContactFormatV2.iGroupField.iLength, 0);
		TESTCHECK(aContactFormatV2.iGroupField.iCount, 0);
		TESTCHECKCONDITION(!aContactFormatV2.iGroupField.iDisplayed);
		TESTCHECK(aContactFormatV2.iEmailField.iLength, 0);
		TESTCHECK(aContactFormatV2.iEmailField.iCount, 0);
		TESTCHECKCONDITION(!aContactFormatV2.iEmailField.iDisplayed);
		}
	else if ((aPhonebook == KUidIccGlobalAdnPhonebook) ||
		(aPhonebook == KUidUsimAppAdnPhonebook))
		{
		// Assuming TMobilePhoneBookInfoV5...
		TESTCHECK(aContactFormatV2.iAdditionalNumString.iLength, 41);
		TESTCHECK(aContactFormatV2.iAdditionalNumString.iCount, 3);
		TESTCHECKCONDITION(aContactFormatV2.iAdditionalNumString.iDisplayed);
		TESTCHECK(aContactFormatV2.iGroupField.iLength, 47);
		TESTCHECK(aContactFormatV2.iGroupField.iCount, 10);
		TESTCHECKCONDITION(aContactFormatV2.iGroupField.iDisplayed);
		TESTCHECK(aContactFormatV2.iEmailField.iLength, 47);
		TESTCHECK(aContactFormatV2.iEmailField.iCount, 3);
		TESTCHECKCONDITION(aContactFormatV2.iEmailField.iDisplayed);
		}

		TESTCHECK(aContactFormatV2.iPhonebook, aPhonebook);
	}

void CPhbkSyncGetContactFormatTest_01::CheckContactFieldsFormatV3(RPhoneBookSession::TContactFieldsV3& aContactFormatV3, TUid aPhonebook)
	{
	CheckContactFieldsFormatV2(aContactFormatV3, aPhonebook);

	if (aPhonebook == KUidIccGlobalSdnPhonebook  ||
		aPhonebook == KUidIccGlobalLndPhonebook  ||
		aPhonebook == KUidIccGlobalFdnPhonebook)
		{
		TESTCHECK(aContactFormatV3.iAdditionalNumAlphaString.iLength, 0);
		TESTCHECK(aContactFormatV3.iAdditionalNumAlphaString.iCount, 0);
		TESTCHECKCONDITION(!aContactFormatV3.iAdditionalNumAlphaString.iDisplayed);
		TESTCHECK(aContactFormatV3.iSecondNameField.iLength, 0);
		TESTCHECK(aContactFormatV3.iSecondNameField.iCount, 0);
		TESTCHECKCONDITION(!aContactFormatV3.iSecondNameField.iDisplayed);
		}
	else if (aPhonebook == KUidIccGlobalAdnPhonebook  ||
			 aPhonebook == KUidUsimAppAdnPhonebook)
		{
		// Assuming TMobilePhoneBookInfoV5...
		TESTCHECK(aContactFormatV3.iAdditionalNumAlphaString.iLength, 47);
		TESTCHECK(aContactFormatV3.iAdditionalNumAlphaString.iCount, 3);
		TESTCHECKCONDITION(aContactFormatV3.iAdditionalNumAlphaString.iDisplayed);
		TESTCHECK(aContactFormatV3.iSecondNameField.iLength, 47);
		TESTCHECK(aContactFormatV3.iSecondNameField.iCount, 1);
		TESTCHECKCONDITION(aContactFormatV3.iSecondNameField.iDisplayed);
		}
	}

void CPhbkSyncGetContactFormatTest_01::PrintGetContactFieldsFormatV1(RPhoneBookSession::TContactFieldsV1& aContactFormatV1)
	{
	INFO_PRINTF1(_L("RPhoneBookSession::TContactFieldsV1:"));
	INFO_PRINTF2(_L("ExtensionId                      =%d"), aContactFormatV1.ExtensionId());

	INFO_PRINTF2(_L("Format: iNameField.iLength       =%d"), aContactFormatV1.iNameField.iLength);
	INFO_PRINTF2(_L("Format: iNameField.iCount        =%d"), aContactFormatV1.iNameField.iCount);
	if (aContactFormatV1.iNameField.iDisplayed)
		{
		INFO_PRINTF1(_L("Format: iNameField.iDisplayed    =True"));
		}
	else
		{
		INFO_PRINTF1(_L("Format: iNameField.iDisplayed    =False"));
		}

	INFO_PRINTF2(_L("Format: iNumberField.iLength     =%d"), aContactFormatV1.iNumberField.iLength);
	INFO_PRINTF2(_L("Format: iNumberField.iCount      =%d"), aContactFormatV1.iNumberField.iCount);
	if (aContactFormatV1.iNumberField.iDisplayed)
		{
		INFO_PRINTF1(_L("Format: iNumberField.iDisplayed  =True"));
		}
	else
		{
		INFO_PRINTF1(_L("Format: iNumberField.iDisplayed  =False"));
		}

	INFO_PRINTF2(_L("Format: iIccSlotField.iLength    =%d"), aContactFormatV1.iIccSlotField.iLength);
	INFO_PRINTF2(_L("Format: iIccSlotField.iCount     =%d"), aContactFormatV1.iIccSlotField.iCount);
	if (aContactFormatV1.iIccSlotField.iDisplayed)
		{
		INFO_PRINTF1(_L("Format: iIccSlotField.iDisplayed =True"));
		}
	else
		{
		INFO_PRINTF1(_L("Format: iIccSlotField.iDisplayed =False"));
		}
	}

void CPhbkSyncGetContactFormatTest_01::PrintGetContactFieldsFormatV2(RPhoneBookSession::TContactFieldsV2& aContactFormatV2)
	{
	PrintGetContactFieldsFormatV1(aContactFormatV2); // up cast

	INFO_PRINTF1(_L("RPhoneBookSession::TContactFieldsV2:"));
	INFO_PRINTF2(_L("ExtensionId                              =%d"), aContactFormatV2.ExtensionId());

	INFO_PRINTF2(_L("Format: iAdditionalNumString.iLength     =%d"), aContactFormatV2.iAdditionalNumString.iLength);
	INFO_PRINTF2(_L("Format: iAdditionalNumString.iCount      =%d"), aContactFormatV2.iAdditionalNumString.iCount);
	if (aContactFormatV2.iAdditionalNumString.iDisplayed)
		{
		INFO_PRINTF1(_L("Format: iAdditionalNumString.iDisplayed  =True"));
		}
	else
		{
		INFO_PRINTF1(_L("Format: iAdditionalNumString.iDisplayed  =False"));
		}

	INFO_PRINTF2(_L("Format: iGroupField.iLength              =%d"), aContactFormatV2.iGroupField.iLength);
	INFO_PRINTF2(_L("Format: iGroupField.iCount               =%d"), aContactFormatV2.iGroupField.iCount);
	if (aContactFormatV2.iGroupField.iDisplayed)
		{
		INFO_PRINTF1(_L("Format: iGroupField.iDisplayed           =True"));
		}
	else
		{
		INFO_PRINTF1(_L("Format: iGroupField.iDisplayed           =False"));
		}

	INFO_PRINTF2(_L("Format: iEmailField.iLength              =%d"), aContactFormatV2.iEmailField.iLength);
	INFO_PRINTF2(_L("Format: iEmailField.iCount               =%d"), aContactFormatV2.iEmailField.iCount);
	if (aContactFormatV2.iEmailField.iDisplayed)
		{
		INFO_PRINTF1(_L("Format: iEmailField.iDisplayed           =True"));
		}
	else
		{
		INFO_PRINTF1(_L("Format: iEmailField.iDisplayed           =False"));
		}

	INFO_PRINTF2(_L("Format: iPhonebookUid                    =%d"), aContactFormatV2.iPhonebook);
	}

void CPhbkSyncGetContactFormatTest_01::PrintGetContactFieldsFormatV3(RPhoneBookSession::TContactFieldsV3& aContactFormatV3)
	{
	PrintGetContactFieldsFormatV2(aContactFormatV3); // up cast

	INFO_PRINTF1(_L("RPhoneBookSession::TContactFieldsV3:"));
	INFO_PRINTF2(_L("ExtensionId                                  =%d"), aContactFormatV3.ExtensionId());

	INFO_PRINTF2(_L("Format: iAdditionalNumAlphaString.iLength    =%d"), aContactFormatV3.iAdditionalNumAlphaString.iLength);
	INFO_PRINTF2(_L("Format: iAdditionalNumAlphaString.iCount     =%d"), aContactFormatV3.iAdditionalNumAlphaString.iCount);

	if (aContactFormatV3.iAdditionalNumAlphaString.iDisplayed)
		{
		INFO_PRINTF1(_L("Format: iAdditionalNumAlphaString.iDisplayed =True"));
		}
	else
		{
		INFO_PRINTF1(_L("Format: iAdditionalNumAlphaString.iDisplayed =False"));
		}

	INFO_PRINTF2(_L("Format: iSecondNameField.iLength             =%d"), aContactFormatV3.iSecondNameField.iLength);
	INFO_PRINTF2(_L("Format: iSecondNameField.iCount              =%d"), aContactFormatV3.iSecondNameField.iCount);

	if (aContactFormatV3.iSecondNameField.iDisplayed)
		{
		INFO_PRINTF1(_L("Format: iSecondNameField.iDisplayed          =True"));
		}
	else
		{
		INFO_PRINTF1(_L("Format: iSecondNameField.iDisplayed          =False"));
		}
	}

/**
 * Test getting the format of a new contact and print this information
 * to screen. Repeat for all supported honebooks.
 */
//
//    Test step1 -- Test#53 in Unit Test Spec. Doc. //
//
CPhbkSyncGetContactFormatTest_01::CPhbkSyncGetContactFormatTest_01()
	{
	// store the name of this test step
	SetTestStepName(_L("PhbkSyncGetContactFormatTest_01"));
	}

CPhbkSyncGetContactFormatTest_01::~CPhbkSyncGetContactFormatTest_01()
	{
	}

/** 
 * Test API GetContactFormat operation
 */
TVerdict CPhbkSyncGetContactFormatTest_01::doTestStepL( )
	{
	// 1. Load phonebook
	SetSimTsyTestNumberL(0);

	// 2. Loop for all phonebooks to produce contact format info
	TInt i(0);
	for (i=0; i<KTotalNumberOfPhoneBook; i++)
		{ 

		// get the contact format (both V1, V2 and V3) and print it out
		RPhoneBookSession::TContactFieldsV3 contactFormatV3;
		contactFormatV3.iPhonebook = iPhoneBook[i];
		RPhoneBookSession::TContactFieldsV3Pckg contactFormatV3Pckg(contactFormatV3);
		TInt returnCode = KErrNone;
		returnCode = iSession.GetContactFormat(contactFormatV3Pckg); // Get contact format

		//If GetContactFormat returns KErrNotReady (because Subscriber ID has not been obtained)
		//Try again up to five times with a 1sec delay before each retry
		if (returnCode == KErrNotReady)
			{
			TInt jj = 0;
			while(jj < 5)
				{
				User::After(1000000);
				returnCode = iSession.GetContactFormat(contactFormatV3Pckg);
				if (returnCode != KErrNotReady)
					{	
					break;
					}
				jj++;
				}
			}

		TESTCHECKL(returnCode, KErrNone);

		//INFO_PRINTF2(_L("Combined V1, V2 & V3 Contact format Package for phonebook %d"), iPhoneBook[i]);
		//PrintGetContactFieldsFormatV3(contactFormatV3);  

		// Check results
		CheckContactFieldsFormatV3(contactFormatV3, iPhoneBook[i]);

		//
		// Get the contact format (V1 and V2 only) and print it out...
		//
		RPhoneBookSession::TContactFieldsV2 contactFormatV2;
		contactFormatV2.iPhonebook = iPhoneBook[i];
		RPhoneBookSession::TContactFieldsV2Pckg contactFormatV2Pckg(contactFormatV2);
		iSession.GetContactFormat(contactFormatV2Pckg); // Get contact format

		//INFO_PRINTF2(_L("V1 & V2 Contact format Package Only for phonebook %d"),iPhoneBook[i]);
		//PrintGetContactFieldsFormatV1(contactFormatV2);  

		CheckContactFieldsFormatV1(contactFormatV2);

		//
		// Get the contact format (V1 only) and print it out...
		//
		RPhoneBookSession::TContactFieldsV1 contactFormatV1;
		RPhoneBookSession::TContactFieldsV1Pckg contactFormatV1Pckg(contactFormatV1);
		iSession.GetContactFormat(contactFormatV1Pckg); // Get contact format

		//INFO_PRINTF2(_L("V1 Contact format Package Only for phonebook %d"),iPhoneBook[i]);
		//PrintGetContactFieldsFormatV1(contactFormatV1);  

		CheckContactFieldsFormatV1(contactFormatV1);
		}

	return TestStepResult();
	}