--- a/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaContactAvailability.cpp Tue Aug 31 15:12:07 2010 +0300
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaContactAvailability.cpp Wed Sep 01 12:31:01 2010 +0100
@@ -30,8 +30,13 @@
// EXTERNAL INCLUDES
#include <digia/eunit/eunitmacros.h>
+#include <CPbkContactItem.h>
+#include <CPbkContactEngine.h>
+#include <CPbkFieldInfo.h>
#include <cntfldst.h>
#include <cntfield.h>
+#include <PbkFields.hrh>
+#include <CPbkFieldsInfo.h>
#include <cntfilt.h>
#include <digia/eunit/eunitdecorators.h>
@@ -47,6 +52,7 @@
_LIT(KLastName,"Meikalainen");
_LIT(KFirstLastName,"Matti Meikalainen");
_LIT(KLastFirstName,"Meikalainen Matti");
+_LIT( KTelNumber, "12345" );
// CONSTRUCTION
UT_CMusAvaContactAvailability* UT_CMusAvaContactAvailability::NewL()
@@ -174,11 +180,73 @@
void UT_CMusAvaContactAvailability::UT_CMusAvaController_DoExecuteL1_L()
{
+ CContactIdArray* contactIdArray = NULL;
+ CPbkContactItem* contactItem = NULL;
+ CPbkContactItem* contactItemTmp = NULL;
+
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ CPbkContactEngine* contactEngine = CPbkContactEngine::NewL();
+ CleanupStack::PushL( contactEngine );
+
+ // dummy initialization, other ways CPbkContactEngine leaks memory
+ CPbkContactItem* pbkItem = NULL;
+ TRAP_IGNORE( pbkItem = contactEngine->ReadContactL( 1 ) );
+ delete pbkItem;
+
+ contactItem= contactEngine->CreateEmptyContactL();
+ CleanupStack::PushL( contactItem );
+
+ //contact
+ TPbkContactItemField* fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
+ fieldMobile->TextStorage()->SetTextL( KPlusNumber() );
+
+ contactEngine->AddNewContactL( *contactItem );
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+
+ iConcreteSettings->SetTelNumberL( KPlusNumber() );
+
+ TRAPD( error, iContactAvailability->DoExecuteL() );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ TInt count;
+ EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+ if ( count > 0 && error != KErrNone )
+ {
+ User::Leave( KErrNoMemory );
+ }
+ CleanupStack::PopAndDestroy( contactItem );
+ CleanupStack::PopAndDestroy( contactEngine );
}
void UT_CMusAvaContactAvailability::UT_CMusAvaController_DoExecuteL2_L()
{
+ CContactIdArray* contactIdArray = NULL;
+ CPbkContactItem* contactItem = NULL;
+ CPbkContactItem* contactItemTmp = NULL;
+
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ CPbkContactEngine* contactEngine = CPbkContactEngine::NewL();
+ CleanupStack::PushL( contactEngine );
+
+ // dummy initialization, other ways CPbkContactEngine leaks memory
+ CPbkContactItem* pbkItem = NULL;
+ TRAP_IGNORE( pbkItem = contactEngine->ReadContactL( 1 ) );
+ delete pbkItem;
+
+ contactItem= contactEngine->CreateEmptyContactL();
+ CleanupStack::PushL( contactItem );
+
+ CContactTextField* urlAtSignField =
+ EditableContactFieldL( *contactEngine, *contactItem, EPbkFieldIdSIPID );
+ if ( urlAtSignField )
+ {
+ urlAtSignField->SetTextL( _L("sip:test@10.21.30.50") );
+ }
+ else
+ {
+ EUNIT_ASSERT( !urlAtSignField );
+ }
+ EUNIT_ENABLE_ALLOC_DECORATOR;
iConcreteSettings->SetTelNumberL( KPlusNumber );
@@ -201,35 +269,20 @@
{
User::Leave( KErrNoMemory );
}
+
+ CleanupStack::PopAndDestroy( contactItem );
+ CleanupStack::PopAndDestroy( contactEngine );
}
-
-void UT_CMusAvaContactAvailability::UT_CMusAvaController_DoExecuteL3_L()
+void UT_CMusAvaContactAvailability::UT_CMusAvaController_CallConnectedLL()
{
- iConcreteSettings->SetTelNumberL( KPlusNumber );
-
- TRAPD( error, iContactAvailability->DoExecuteL() );
- EUNIT_ASSERT( error == KErrNoMemory || error == KErrNone );
- if ( error == KErrNoMemory ) User::Leave( error );
- TInt count;
- EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
- if ( count > 0 && error != KErrNone )
- {
- User::Leave( KErrNoMemory );
- }
-
- iConcreteSettings->SetTelNumberL( KPlusNumber );
-
- TRAP( error, iContactAvailability->DoExecuteL() );
- if ( error == KErrNoMemory ) User::Leave( error );
- EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
- if ( count > 0 && error != KErrNone )
- {
- User::Leave( KErrNoMemory );
- }
-
+ TRAPD( error, iContactAvailability->CallConnectedL( KTelNumber ) );
+ if ( error == KErrNone )
+ {
+ EUNIT_ASSERT_EQUALS( iContactAvailability->State(),
+ MMusAvaObserver::EMusAvaStatusAvailable );
+ EUNIT_ASSERT_EQUALS( iConcreteSettings->TelNumber(), KTelNumber );
+ }
}
-
-
void UT_CMusAvaContactAvailability::UT_CMusAvaController_NameL()
{
EUNIT_ASSERT( iContactAvailability->Name() == MMusAvaObserver::EMusAvaNameContactStatus );
@@ -296,52 +349,1138 @@
void UT_CMusAvaContactAvailability::UT_CMusAvaController_ContactLL()
{
+ CContactIdArray* contactIdArray = NULL;
+ CPbkContactItem* contactItem = NULL;
+
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ CPbkContactEngine* contactEngine = CPbkContactEngine::NewL();
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+ CleanupStack::PushL( contactEngine );
+
+ // Non cont or phone number added to contact DB
+ TBool ret;
+ TRAPD( error, ret = iContactAvailability->ContactL( contactIdArray, *contactEngine ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( !ret );
+ EUNIT_ASSERT( contactIdArray == NULL );
+
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ contactItem= contactEngine->CreateEmptyContactL();
+ CleanupStack::PushL( contactItem );
+
+ //contact
+ TPbkContactItemField* fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
+ fieldMobile->TextStorage()->SetTextL( KPlusNumber() );
+
+ contactEngine->AddNewContactL( *contactItem );
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+
+ iConcreteSettings->SetTelNumberL( KPlusNumber );
+
+ TRAP( error, ret = iContactAvailability->ContactL( contactIdArray, *contactEngine ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( ret );
+ EUNIT_ASSERT( contactIdArray != NULL );
+
+ delete contactIdArray;
+ contactIdArray = NULL;
+
+ CleanupStack::PopAndDestroy( contactItem );
+ CleanupStack::PopAndDestroy( contactEngine );
+
}
-
void UT_CMusAvaContactAvailability::UT_CMusAvaController_ContactArrayLL()
{
+ CContactIdArray* array = NULL;
+
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ CPbkContactEngine* pbkContactEngine = CPbkContactEngine::NewL();
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+ CleanupStack::PushL( pbkContactEngine );
+
+ //No number found
+ TInt ret = NULL;
+ TRAPD( error, ret = iContactAvailability->ContactArrayL( array,
+ *pbkContactEngine ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( error == KErrNone );
+ EUNIT_ASSERT( ret == KErrNotFound );
+ EUNIT_ASSERT( array == NULL );
+ //Number length 0
+ iConcreteSettings->SetTelNumberL( _L("") );
+ TRAP( error, ret = iContactAvailability->ContactArrayL( array,
+ *pbkContactEngine ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( error == KErrNone );
+ EUNIT_ASSERT( ret == KErrNotFound );
+ EUNIT_ASSERT( array == NULL );
+ //Number found
+ iConcreteSettings->SetTelNumberL( KNumber );
+ TRAP( error, ret = iContactAvailability->ContactArrayL( array,
+ *pbkContactEngine ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( ret == KErrNone );
+ EUNIT_ASSERT( array != NULL );
+ EUNIT_ASSERT( array->Count() > 0 );
+
+ CleanupStack::PopAndDestroy( pbkContactEngine );
+
+ delete array;
+ array = NULL;
}
-
void UT_CMusAvaContactAvailability::UT_CMusAvaController_ContactItemL()
{
+ CPbkContactItem* tmpItem = NULL;
+ CContactIdArray* tmpContactIdArray = NULL;
+
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ CPbkContactEngine* contactEngine = CPbkContactEngine::NewL();
+ CleanupStack::PushL( contactEngine );
+
+ CPbkContactItem* contactItem= contactEngine->CreateEmptyContactL();
+ CleanupStack::PushL( contactItem );
+
+ // CContactIdArray == 0
+ //tmpContactIdArray = CContactIdArray::NewLC();
+ //EUNIT_ASSERT_EQUALS( KErrNotFound, iContactAvailability->ContactItem(
+ //*tmpContactIdArray, tmpItem ) );
+ //CleanupStack::PopAndDestroy( );
+
+
+ // CContactIdArray > 0
+ TPbkContactItemField* fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
+ fieldMobile->TextStorage()->SetTextL( KPlusNumber() );
+ contactEngine->AddNewContactL( *contactItem );
+
+ CContactDatabase* contactDatabase = CContactDatabase::OpenL();
+ CleanupStack::PushL( contactDatabase );
+ CCntFilter* newFilter = CCntFilter::NewL();
+ CleanupStack::PushL( newFilter );
+ newFilter->Reset();
+ newFilter->SetContactFilterTypeALL( ETrue );
+ contactDatabase->FilterDatabaseL( *newFilter );
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+
+ //CContactIdArray* tmpaArray = newFilter->iIds;
+ //Item found
+
+ TInt err = iContactAvailability->ContactItem( *( newFilter->iIds ), tmpItem, *contactEngine );
+ // NOTE: Multiple contact id's could be in database and KErrNotSupported is
+ // returned if more than one. Maybe first run could get result KErrNone and
+ // then KErrNotSupported
+ EUNIT_ASSERT( ( KErrNotSupported == err ) || ( KErrNone == err ) );
+
+ //EUNIT_ASSERT( tmpItem != NULL );
+ //delete tmpaArray;
+ //contactDatabase->CommitContactL( *tmpItem );
+ delete tmpItem;
+ //tmpItem = NULL;
+ //End test
+
+ CleanupStack::PopAndDestroy( newFilter );
+
+ contactDatabase->CloseTables();
+
+ CleanupStack::PopAndDestroy( contactDatabase );
+ CleanupStack::PopAndDestroy( contactItem );
+ CleanupStack::PopAndDestroy( contactEngine );
+
+
+
}
-
void UT_CMusAvaContactAvailability::UT_CMusAvaController_PhoneResulutionLL()
{
+ CDesCArrayFlat* array = new ( ELeave ) CDesCArrayFlat( 10 );
+ CleanupStack::PushL( array );
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ CPbkContactEngine* contactEngine = CPbkContactEngine::NewL();
+ CleanupStack::PushL( contactEngine );
+ CPbkContactItem* contactItem = contactEngine->CreateEmptyContactL();
+ CleanupStack::PushL( contactItem );
+
+ // dummy initialization, other ways CPbkContactEngine leaks memory
+ CPbkContactItem* pbkItem = NULL;
+ TRAP_IGNORE( pbkItem = contactEngine->ReadContactL( 1 ) );
+ delete pbkItem;
+
+ //No prefix
+ contactItem->RemoveDefaultPhoneNumberField();
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+ iConcreteSettings->SetTelNumberL( KNumber );
+ TBool ret;
+ TRAPD( error, ret = iContactAvailability->PhoneResolutionL( *contactItem, array ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( !ret );
+
+ EUNIT_ASSERT( array->MdcaCount() == 0);
+
+ //Prefix
+ iConcreteSettings->SetTelNumberL( KPlusNumber );
+
+ TRAP( error, ret = iContactAvailability->PhoneResolutionL( *contactItem, array ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( ret );
+ EUNIT_ASSERT( array->MdcaCount() > 0 );
+ //remove object from the array
+ array->Reset();
+
+ ///Number plan is in national mode
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ TPbkContactItemField* fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
+ fieldMobile->TextStorage()->SetTextL( KNumber() );
+ contactEngine->AddNewContactL( *contactItem );
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+
+ iConcreteSettings->ReleseTelNumberL();
+ TRAP( error, ret = iContactAvailability->PhoneResolutionL( *contactItem, array ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( !ret );
+ EUNIT_ASSERT( array->MdcaCount() == 0 );
+
+
+ //Number plan is in internatiolan mode
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ contactItem->RemoveDefaultPhoneNumberField();
+ fieldMobile = contactItem->FindField( EPbkFieldIdPhoneNumberMobile );
+ fieldMobile->TextStorage()->SetTextL( KPlusNumber() );
+ contactEngine->AddNewContactL( *contactItem );
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+ iConcreteSettings->ReleseTelNumberL();
+ TRAP( error, ret = iContactAvailability->PhoneResolutionL( *contactItem, array ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( ret );
+ EUNIT_ASSERT( array->MdcaCount() > 0 );
+
+ CleanupStack::PopAndDestroy( contactItem );
+ CleanupStack::PopAndDestroy( contactEngine );
+ CleanupStack::PopAndDestroy( array );
}
+
+
+
+
void UT_CMusAvaContactAvailability::UT_CMusAvaController_ContactIdL()
{
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ CPbkContactEngine* contactEngine = CPbkContactEngine::NewL();
+ CleanupStack::PushL( contactEngine );
+
+ CPbkContactItem* contactItem = NULL;
+
+ // dummy initialization, other ways CPbkContactEngine leaks memory
+ TRAP_IGNORE( contactItem = contactEngine->ReadContactL( 1 ) );
+ delete contactItem;
+
+ contactItem = contactEngine->CreateEmptyContactL();
+ CleanupStack::PushL( contactItem );
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+
+ //Contact field not created
+ EUNIT_ASSERT( !iContactAvailability->ContactId( *contactItem, EPbkFieldIdSIPID ) );
+
+ //Contact URi not defined
+ CContactTextField* urlFieldNotDefined =
+ EditableContactFieldL( *contactEngine, *contactItem, EPbkFieldIdShareView );
+ if ( urlFieldNotDefined )
+ {
+ urlFieldNotDefined->SetTextL( _L("sip:10.21.32.51") );
+ }
+ else
+ {
+ EUNIT_ASSERT( !urlFieldNotDefined );
+ }
+
+ EUNIT_ASSERT( !iContactAvailability->ContactId( *contactItem, EPbkFieldIdShareView ) );
+
+ //Contact field not found
+ CContactTextField* urlField =
+ EditableContactFieldL( *contactEngine, *contactItem, EPbkFieldIdShareView );
+ if ( urlField )
+ {
+ urlField->SetTextL( _L("test@10.21.32.51") );
+ }
+ else
+ {
+ EUNIT_ASSERT( !urlField );
+ }
+
+ EUNIT_ASSERT( !iContactAvailability->ContactId( *contactItem, EPbkFieldIdSIPID ) );
+
+ //Contact field found
+ EUNIT_ASSERT( iContactAvailability->ContactId( *contactItem, EPbkFieldIdShareView ) );
+
+ CleanupStack::PopAndDestroy( contactItem );
+ CleanupStack::PopAndDestroy( contactEngine );
}
void UT_CMusAvaContactAvailability::UT_CMusAvaController_ContactIdSearchL()
{
+ CPbkContactItem* contactItem = NULL;
+ CContactIdArray* contactIdArray = NULL;
+ CContactTextField* phoneNumberMobiled = NULL;
+ CContactTextField* country = NULL;
+ CContactTextField* urlFieldNotDefined = NULL;
+ CPbkContactEngine* contactEngine = NULL;
+
+
+ //No contact //////////////////////////////////////////////////////////////
+ //General info
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ contactEngine = CPbkContactEngine::NewL();
+ CleanupStack::PushL( contactEngine );
+
+ //Clear contacts
+ contactIdArray = contactEngine->MatchPhoneNumberL(
+ KNumber(),
+ KNumberMatchingDigitsRequired );
+ CleanupStack::PushL( contactIdArray );
+ contactEngine->DeleteContactsL( *contactIdArray );
+
+ CleanupStack::PopAndDestroy( contactIdArray );
+
+
+ // dummy initialization, other ways CPbkContactEngine leaks memory
+ TRAP_IGNORE( contactItem = contactEngine->ReadContactL( 1 ) );
+ delete contactItem;
+
+ AddToMyContact( *contactEngine,
+ KNumber(),
+ EPbkFieldIdPhoneNumberMobile,
+ _L("nokia"),
+ EPbkFieldIdCompanyName );
+
+ contactIdArray = contactEngine->MatchPhoneNumberL(
+ KNumber(),
+ KNumberMatchingDigitsRequired );
+ CleanupStack::PushL( contactIdArray );
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+
+ EUNIT_ASSERT(
+ iContactAvailability->ContactIdSearch( *contactIdArray, *contactEngine ) ==
+ EPbkFieldIdNone );
+
+ contactEngine->DeleteContactsL( *contactIdArray );
+ CleanupStack::PopAndDestroy( contactIdArray );
+
+ // Field Phone number general found /////////////////////////////////////////////////////////
+
+ //Clear contacts
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ contactIdArray = contactEngine->MatchPhoneNumberL(
+ KNumber(),
+ KNumberMatchingDigitsRequired );
+ CleanupStack::PushL( contactIdArray );
+ contactEngine->DeleteContactsL( *contactIdArray );
+
+ CleanupStack::PopAndDestroy( contactIdArray );
+
+ AddToMyContact( *contactEngine,
+ KNumber(),
+ EPbkFieldIdPhoneNumberMobile,
+ _L("+35805123456789"),
+ EPbkFieldIdPhoneNumberGeneral );
+
+ contactIdArray = contactEngine->MatchPhoneNumberL(
+ KNumber(),
+ KNumberMatchingDigitsRequired );
+
+ CleanupStack::PushL( contactIdArray );
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+
+ EUNIT_ASSERT(
+ iContactAvailability->ContactIdSearch( *contactIdArray, *contactEngine ) ==
+ EPbkFieldIdNone );
+ //EUNIT_ASSERT( ret == EPbkFieldIdPhoneNumberGeneral );
+ contactEngine->DeleteContactsL( *contactIdArray );
+ CleanupStack::PopAndDestroy( contactIdArray );
+
+ // Field SIP id found /////////////////////////////////////////////////////////
+
+ //Clear contacts
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ contactIdArray = contactEngine->MatchPhoneNumberL(
+ KNumber(),
+ KNumberMatchingDigitsRequired );
+ CleanupStack::PushL( contactIdArray );
+ contactEngine->DeleteContactsL( *contactIdArray );
+
+ CleanupStack::PopAndDestroy( contactIdArray );
+
+ AddToMyContact( *contactEngine,
+ KNumber(),
+ EPbkFieldIdPhoneNumberMobile,
+ _L("test@10.21.32.51"),
+ EPbkFieldIdSIPID );
+
+ contactIdArray = contactEngine->MatchPhoneNumberL(
+ KNumber(),
+ KNumberMatchingDigitsRequired );
+
+ CleanupStack::PushL( contactIdArray );
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+
+ TPbkFieldId ret = iContactAvailability->ContactIdSearch( *contactIdArray, *contactEngine );
+ if ( ret == EPbkFieldIdNone )
+ {
+ User::Leave( KErrNoMemory );
+ }
+ EUNIT_ASSERT( ret == EPbkFieldIdSIPID );
+ contactEngine->DeleteContactsL( *contactIdArray );
+ CleanupStack::PopAndDestroy( contactIdArray );
+
+ // Share View found
+ //Clear contacts
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ contactIdArray = contactEngine->MatchPhoneNumberL(
+ KNumber(),
+ KNumberMatchingDigitsRequired );
+ CleanupStack::PushL( contactIdArray );
+ contactEngine->DeleteContactsL( *contactIdArray );
+
+ CleanupStack::PopAndDestroy( contactIdArray );
+
+ AddToMyContact( *contactEngine,
+ KNumber(),
+ EPbkFieldIdPhoneNumberMobile,
+ _L("test@10.21.32.51"),
+ EPbkFieldIdShareView );
+
+ contactIdArray = contactEngine->MatchPhoneNumberL(
+ KNumber(),
+ KNumberMatchingDigitsRequired );
+
+ CleanupStack::PushL( contactIdArray );
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+
+ ret = iContactAvailability->ContactIdSearch( *contactIdArray, *contactEngine );
+ if ( ret == EPbkFieldIdNone )
+ {
+ User::Leave( KErrNoMemory );
+ }
+ EUNIT_ASSERT( ret == EPbkFieldIdShareView );
+
+ contactEngine->DeleteContactsL( *contactIdArray );
+ CleanupStack::PopAndDestroy( contactIdArray );
+ CleanupStack::PopAndDestroy( contactEngine );
}
void UT_CMusAvaContactAvailability::UT_CMusAvaController_ResolveAddressesLL()
{
+ CDesCArrayFlat* array = new ( ELeave ) CDesCArrayFlat( 10 );
+ CleanupStack::PushL( array );
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ CPbkContactEngine* contactEngine = CPbkContactEngine::NewL();
+ CleanupStack::PushL( contactEngine );
+
+ // dummy initialization, other ways CPbkContactEngine leaks memory
+ CPbkContactItem* pbkItem = NULL;
+ TRAP_IGNORE( pbkItem = contactEngine->ReadContactL( 1 ) );
+ delete pbkItem;
+
+ CPbkContactItem* contactItem= contactEngine->CreateEmptyContactL();
+ CleanupStack::PushL( contactItem );
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+
+ //Test cases
+ //Sip Uri without At sign
+ CContactTextField* urlSipField =
+ EditableContactFieldL( *contactEngine, *contactItem, EPbkFieldIdSIPID );
+
+
+ if ( urlSipField )
+ {
+ urlSipField->SetTextL( _L("sip:10.21.32.51") );
+ }
+ else
+ {
+ EUNIT_ASSERT( !urlSipField );
+ }
+
+ TBool ret;
+ TRAPD( error, ret = iContactAvailability->ResolveAddressesL( *contactItem,
+ array,
+ EPbkFieldIdSIPID ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( !ret );
+ EUNIT_ASSERT( array->Count() == 0 );
+
+
+ //Undefined Uri
+ CContactTextField* urlUndefinedField =
+ EditableContactFieldL( *contactEngine, *contactItem, EPbkFieldIdPushToTalk );
+ if ( urlUndefinedField )
+ {
+ urlUndefinedField->SetTextL( _L("test@10.21.32.51") );
+ }
+ else
+ {
+ EUNIT_ASSERT( !urlUndefinedField );
+ }
+ contactEngine->AddNewContactL( *contactItem );
+ TRAP( error, ret = iContactAvailability->ResolveAddressesL( *contactItem,
+ array,
+ EPbkFieldIdSIPID ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( !ret );
+
+ EUNIT_ASSERT( array->Count() == 0 );
+
+ //Sip Uri
+ CContactTextField* urlAtSignField =
+ EditableContactFieldL( *contactEngine, *contactItem, EPbkFieldIdSIPID );
+ if ( urlAtSignField )
+ {
+ urlAtSignField->SetTextL( _L("sip:test@10.21.32.51") );
+ }
+ else
+ {
+ EUNIT_ASSERT( !urlAtSignField );
+ }
+ contactEngine->AddNewContactL( *contactItem );
+ TRAP( error, ret = iContactAvailability->ResolveAddressesL( *contactItem,
+ array,
+ EPbkFieldIdSIPID ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( ret );
+ EUNIT_ASSERT( array->Count() > 0 );
+
+ //Clear array
+ array->Reset();
+
+ //ShareView Uri
+ CContactTextField* urlShareViewField =
+ EditableContactFieldL( *contactEngine, *contactItem, EPbkFieldIdShareView );
+ if ( urlShareViewField )
+ {
+ urlShareViewField->SetTextL( _L("test@10.21.32.51") );
+ }
+ else
+ {
+ EUNIT_ASSERT( !urlShareViewField );
+ }
+
+ TRAP( error, ret = iContactAvailability->ResolveAddressesL( *contactItem,
+ array,
+ EPbkFieldIdShareView ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( ret );
+ EUNIT_ASSERT( array != NULL );
+ EUNIT_ASSERT( array->Count() > 0 );
+ array->Reset();
+
+
+ //End test
+ CleanupStack::PopAndDestroy( contactItem );
+ CleanupStack::PopAndDestroy( contactEngine );
+ CleanupStack::PopAndDestroy( array );
+
}
void UT_CMusAvaContactAvailability::UT_CMusAvaController_ResolveAddressesLOpSpecificL()
{
+ CDesCArrayFlat* array = new ( ELeave ) CDesCArrayFlat( 10 );
+ CleanupStack::PushL( array );
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ CPbkContactEngine* contactEngine = CPbkContactEngine::NewL();
+ CleanupStack::PushL( contactEngine );
+
+ // dummy initialization, other ways CPbkContactEngine leaks memory
+ CPbkContactItem* pbkItem = NULL;
+ TRAP_IGNORE( pbkItem = contactEngine->ReadContactL( 1 ) );
+ delete pbkItem;
+
+ CPbkContactItem* contactItem= contactEngine->CreateEmptyContactL();
+ CleanupStack::PushL( contactItem );
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+
+ //Test cases
+ //Sip Uri without test string
+ CContactTextField* urlAtSignField =
+ EditableContactFieldL( *contactEngine, *contactItem, EPbkFieldIdSIPID );
+ if ( urlAtSignField )
+ {
+ urlAtSignField->SetTextL( _L("sip:test@10.21.32.51") );
+ }
+ else
+ {
+ EUNIT_ASSERT( !urlAtSignField );
+ }
+ contactEngine->AddNewContactL( *contactItem );
+ TBool ret;
+ TRAPD( error, ret = iContactAvailability->ResolveAddressesL( *contactItem,
+ array,
+ EPbkFieldIdSIPID ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( !ret );
+ EUNIT_ASSERT_EQUALS( array->Count(), 0 );
+
+ //Clear array
+ array->Reset();
+
+ //Sip Uri with test string (*#)
+ urlAtSignField =
+ EditableContactFieldL( *contactEngine, *contactItem, EPbkFieldIdSIPID );
+ if ( urlAtSignField )
+ {
+ urlAtSignField->SetTextL( _L("sip:test*#@10.21.32.51") );
+ }
+ else
+ {
+ EUNIT_ASSERT( !urlAtSignField );
+ }
+ contactEngine->AddNewContactL( *contactItem );
+ TRAP( error, ret = iContactAvailability->ResolveAddressesL( *contactItem,
+ array,
+ EPbkFieldIdSIPID ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT ( ret );
+ EUNIT_ASSERT( array->Count() > 0 );
+
+ //Clear array
+ array->Reset();
+
+ //End test
+ CleanupStack::PopAndDestroy( contactItem );
+ CleanupStack::PopAndDestroy( contactEngine );
+ CleanupStack::PopAndDestroy( array );
+
}
void UT_CMusAvaContactAvailability::UT_CMusAvaController_ResolvePhoneContactLL()
{
+ CDesCArrayFlat* array = new ( ELeave ) CDesCArrayFlat( 10 );
+ CleanupStack::PushL( array );
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ CPbkContactEngine* contactEngine = CPbkContactEngine::NewL();
+ CleanupStack::PushL( contactEngine );
+
+ CPbkContactItem* contactItem= contactEngine->CreateEmptyContactL();
+ CleanupStack::PushL( contactItem );
+ ///Number plan is in national mode
+ TPbkContactItemField* fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
+ fieldMobile->TextStorage()->SetTextL(_L("0401234567"));
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+
+ iContactAvailability->ResolvePhoneContactL( *contactItem, array );
+ EUNIT_ASSERT( array->MdcaCount() == 0 );
+ //Number plan is in internatiolan mode
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ contactItem->RemoveDefaultPhoneNumberField();
+ fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
+ fieldMobile->TextStorage()->SetTextL(_L("+358401234567"));
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+ iContactAvailability->ResolvePhoneContactL( *contactItem, array );
+ EUNIT_ASSERT( array->MdcaCount() > 0 );
+ array->Reset();
+
+ //tel uri
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ contactItem->RemoveDefaultPhoneNumberField();
+ fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
+ fieldMobile->TextStorage()->SetTextL(_L("tel:+358401234567"));
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+ iContactAvailability->ResolvePhoneContactL( *contactItem, array );
+ EUNIT_ASSERT( array->Count() == 0 );
+
+ //End test
+ CleanupStack::PopAndDestroy( contactItem );
+ CleanupStack::PopAndDestroy( contactEngine );
+ CleanupStack::PopAndDestroy( array );
}
void UT_CMusAvaContactAvailability::UT_CMusAvaController_ResolvePhoneContactLOpSpecificL()
{
+ CDesCArrayFlat* array = new ( ELeave ) CDesCArrayFlat( 10 );
+ CleanupStack::PushL( array );
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ CPbkContactEngine* contactEngine = CPbkContactEngine::NewL();
+ CleanupStack::PushL( contactEngine );
+
+ CPbkContactItem* contactItem= contactEngine->CreateEmptyContactL();
+ CleanupStack::PushL( contactItem );
+ ///Number plan is in national mode
+ TPbkContactItemField* fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
+ fieldMobile->TextStorage()->SetTextL(_L("0401234567"));
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+
+ iContactAvailability->ResolvePhoneContactL( *contactItem, array );
+ EUNIT_ASSERT( array->MdcaCount() > 0 );
+ //Number plan is in internatiolan mode
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ contactItem->RemoveDefaultPhoneNumberField();
+ fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
+ fieldMobile->TextStorage()->SetTextL(_L("+358401234567"));
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+ iContactAvailability->ResolvePhoneContactL( *contactItem, array );
+ EUNIT_ASSERT( array->MdcaCount() > 0 );
+ array->Reset();
+
+ //tel uri
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ contactItem->RemoveDefaultPhoneNumberField();
+ fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
+ fieldMobile->TextStorage()->SetTextL(_L("tel:+358401234567"));
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+ iContactAvailability->ResolvePhoneContactL( *contactItem, array );
+ EUNIT_ASSERT( array->Count() > 0 );
+
+ //End test
+ CleanupStack::PopAndDestroy( contactItem );
+ CleanupStack::PopAndDestroy( contactEngine );
+ CleanupStack::PopAndDestroy( array );
+ }
+
+CContactTextField* UT_CMusAvaContactAvailability::EditableContactFieldL(
+ CPbkContactEngine& aContactEngine,
+ CPbkContactItem& aContact,
+ TPbkFieldId aFieldId )
+ {
+ /* CContactDatabase* contactDatabase = NULL;
+ contactDatabase = CContactDatabase::OpenL();
+ CleanupStack::PushL( contactDatabase );
+ CCntFilter* newFilter = CCntFilter::NewLC();
+ newFilter->Reset();
+ newFilter->SetContactFilterTypeALL( ETrue );
+ contactDatabase->FilterDatabaseL( *newFilter );
+
+ CContactIdArray* contactsId = newFilter->iIds;
+ if ( contactsId->Count() )
+ {
+ aContactEngine.DeleteContactsL( *contactsId );
+ }
+ //contactDatabase->CommitContactL():
+
+ CleanupStack::PopAndDestroy( 2 );
+ CleanupStack::PopAndDestroy( contactDatabase );*/
+
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ const CPbkFieldsInfo& fieldsInfo = aContactEngine.FieldsInfo();
+ // Try to get the SIP URI storage field for this contact
+ TPbkContactItemField* itemField = aContact.FindField( aFieldId );
+
+ if ( !itemField )
+ {
+ CPbkFieldInfo* fieldInfo = fieldsInfo.Find( aFieldId );
+ // Add field to this contact
+ if ( fieldInfo )
+ {
+ CleanupStack::PushL( fieldInfo );
+ // Contact takes ownership of the field.
+ aContact.AddFieldL( *fieldInfo );
+ CleanupStack::Pop( fieldInfo );
+ itemField = aContact.FindField( aFieldId );
+ if ( itemField )
+ {
+ return itemField->TextStorage();
+ }
+ else
+ {
+ EUNIT_ASSERT( !itemField );
+ }
+ }
+ else
+ {
+ EUNIT_ASSERT( !fieldInfo );
+ }
+ }
+ else
+ {
+ return itemField->TextStorage();
+ }
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+ return NULL; // Should never reach here, just to avoid warnings.
}
+void UT_CMusAvaContactAvailability::AddFields( CPbkContactEngine& aContactEngine,
+ CPbkContactItem& contact,
+ const TDesC& aText,
+ TPbkFieldId aFieldId )
+ {
+ const CPbkFieldsInfo& fieldsInfo = aContactEngine.FieldsInfo();
+ // Try to get the storage field for this contact
+ TPbkContactItemField* itemField = contact.FindField( aFieldId );
+
+ if ( itemField == NULL )
+ {
+ CPbkFieldInfo* fieldInfo = fieldsInfo.Find( aFieldId );
+ // Add field to this contact
+ if ( fieldInfo )
+ {
+ CleanupStack::PushL( fieldInfo );
+ // Contact takes ownership of the field.
+ contact.AddFieldL( *fieldInfo );
+ CleanupStack::Pop( fieldInfo );
+ itemField = contact.FindField( aFieldId );
+ if ( itemField )
+ {
+ itemField->TextStorage()->SetTextL( aText );
+ }
+ else
+ {
+ EUNIT_ASSERT( !itemField );
+ }
+ }
+ else
+ {
+ EUNIT_ASSERT( !fieldInfo );
+ }
+ }
+ else
+ {
+ // Set some default fields
+ itemField->TextStorage()->SetTextL(aText );
+ }
+ }
+
+void UT_CMusAvaContactAvailability::AddToMyContact( CPbkContactEngine& aContactEngine,
+ const TDesC& aText,
+ TPbkFieldId aFieldId,
+ const TDesC& aText2,
+ TPbkFieldId aFieldId2 )
+ {
+ // Create a contact with few default fields
+ // All the default fields are empty and won't be displayed
+ // until some information is stored in them
+ /*CPbkContactItem* contact = aContactEngine.CreateEmptyContactL();
+ CleanupStack::PushL( contact );
+
+ // Set some default fields
+ contact->FindField( aFieldId )->TextStorage()->SetTextL(aText );
+ // Set some default fields
+ contact->FindField( aFieldId2 )->TextStorage()->SetTextL(aText2 );
+
+ // Store the contact to the phonebook
+ aContactEngine.AddNewContactL( *contact );
+ CleanupStack::PopAndDestroy( contact );*/
+
+ /*CPbkContactItem* contact = aContactEngine.CreateEmptyContactL();
+ CleanupStack::PushL( contact );
+
+ const CPbkFieldsInfo& fieldsInfo = aContactEngine.FieldsInfo();
+ // Try to get the storage field for this contact
+ TPbkContactItemField* itemField = contact->FindField( aFieldId );
+
+ if ( itemField == NULL )
+ {
+ CPbkFieldInfo* fieldInfo = fieldsInfo.Find( aFieldId );
+ // Add field to this contact
+ if ( fieldInfo )
+ {
+ CleanupStack::PushL( fieldInfo );
+ // Contact takes ownership of the field.
+ contact->AddFieldL( *fieldInfo );
+ CleanupStack::Pop( fieldInfo );
+ itemField = contact->FindField( aFieldId );
+ if ( itemField )
+ {
+ itemField->TextStorage()->SetTextL( aText );
+ }
+ else
+ {
+ EUNIT_ASSERT( !itemField );
+ }
+ }
+ else
+ {
+ EUNIT_ASSERT( !fieldInfo );
+ }
+ }
+ else
+ {
+ // Set some default fields
+ itemField->TextStorage()->SetTextL(aText );
+ }
+ // Store the contact to the phonebook
+ aContactEngine.AddNewContactL( *contact );
+ CleanupStack::PopAndDestroy( contact );*/
+
+ CPbkContactItem* contact = aContactEngine.CreateEmptyContactL();
+ CleanupStack::PushL( contact );
+
+ AddFields( aContactEngine, *contact, aText, aFieldId );
+ AddFields( aContactEngine, *contact, aText2, aFieldId2 );
+ // Store the contact to the phonebook
+ aContactEngine.AddNewContactL( *contact );
+ CleanupStack::PopAndDestroy( contact );
+
+ }
+
void UT_CMusAvaContactAvailability::UT_CMusAvaController_IsExistAlreadyL()
{
+ _LIT( KTestUri1, "sip:1@test.net");
+ _LIT( KTestUri2, "sip:2@test.net");
+ _LIT( KTestUri3, "sip:3@test.net");
+ _LIT( KTestUri5, "sip:5@test.net");
+
+ TBufC16<16> str1(KTestUri1);
+ HBufC16* ptr1;
+ ptr1 = str1.AllocLC();
+
+ TBufC16<16> str2(KTestUri2);
+ HBufC16* ptr2;
+ ptr2 = str2.AllocLC();
+
+ TBufC16<16> str3(KTestUri3);
+ HBufC16* ptr3;
+ ptr3 = str3.AllocLC();
+
+ CDesCArrayFlat* array = new( ELeave ) CDesCArrayFlat(1);
+ CleanupStack::PushL(array);
+ array->AppendL(*ptr1);
+ array->AppendL(*ptr2);
+ array->AppendL(*ptr3);
+
+ TBool exist = EFalse;
+
+ // Test 1 :
+ exist = iContactAvailability->IsExistAlready(*array,KTestUri1);
+ EUNIT_ASSERT(exist);
+ // Test 2 :
+ exist = iContactAvailability->IsExistAlready(*array,KTestUri5);
+ EUNIT_ASSERT(!exist);
+
+ array->Reset();
+ CleanupStack::PopAndDestroy(array);
+ CleanupStack::PopAndDestroy(ptr3);
+ CleanupStack::PopAndDestroy(ptr2);
+ CleanupStack::PopAndDestroy(ptr1);
}
void UT_CMusAvaContactAvailability::UT_CMusAvaController_UpdateContactNameLL()
{
+ CPbkContactItem* contactItem = NULL;
+
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ CPbkContactEngine* contactEngine = CPbkContactEngine::NewL();
+ CleanupStack::PushL( contactEngine );
+
+ // dummy initialization, other ways CPbkContactEngine leaks memory
+ CPbkContactItem* pbkItem = NULL;
+ TRAP_IGNORE( pbkItem = contactEngine->ReadContactL( 1 ) );
+ delete pbkItem;
+
+ contactItem= contactEngine->CreateEmptyContactL();
+ CleanupStack::PushL( contactItem );
+
+ //contact firstname && iBeginWithFirstName = ETrue
+ TPbkContactItemField* fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
+ fieldMobile->TextStorage()->SetTextL( KPlusNumber() );
+
+ TPbkContactItemField* fieldMobile1 = contactItem->FindField(EPbkFieldIdFirstName);
+ fieldMobile1->TextStorage()->SetTextL( KFirstName() );
+
+ contactEngine->AddNewContactL( *contactItem );
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+
+ iConcreteSettings->SetTelNumberL( KPlusNumber() );
+
+ iContactAvailability->iBeginWithFirstName = ETrue;
+ TRAPD( error,
+ iContactAvailability->UpdateContactNameL( contactItem->ContactItem() ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( error == KErrNone );
+ EUNIT_ASSERT( iContactAvailability->iContactName->Compare( KFirstName ) == NULL );
+
+ CleanupStack::PopAndDestroy( contactItem );
+ CContactIdArray* array = NULL;
+ iContactAvailability->ContactArrayL( array, *contactEngine );
+ CleanupStack::PushL( array );
+ contactEngine->DeleteContactsL( *array, ETrue );
+ CleanupStack::PopAndDestroy( array );
+
+ //contact firstname && iBeginWithFirstName = EFalse
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ contactItem= contactEngine->CreateEmptyContactL();
+ CleanupStack::PushL( contactItem );
+
+ fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
+ fieldMobile->TextStorage()->SetTextL( KPlusNumber() );
+
+ fieldMobile1 = contactItem->FindField(EPbkFieldIdFirstName);
+ fieldMobile1->TextStorage()->SetTextL( KFirstName() );
+
+ contactEngine->AddNewContactL( *contactItem );
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+
+ iConcreteSettings->SetTelNumberL( KPlusNumber() );
+
+ iContactAvailability->iBeginWithFirstName = EFalse;
+ TRAP( error,
+ iContactAvailability->UpdateContactNameL( contactItem->ContactItem() ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( error == KErrNone );
+ EUNIT_ASSERT( iContactAvailability->iContactName->Compare( KFirstName ) == NULL );
+
+ CleanupStack::PopAndDestroy( contactItem );
+ array = NULL;
+ iContactAvailability->ContactArrayL( array, *contactEngine );
+ CleanupStack::PushL( array );
+ contactEngine->DeleteContactsL( *array, ETrue );
+ CleanupStack::PopAndDestroy( array );
+
+ //contact lastname && iBeginWithFirstName = ETrue
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ contactItem= contactEngine->CreateEmptyContactL();
+ CleanupStack::PushL( contactItem );
+
+ fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
+ fieldMobile->TextStorage()->SetTextL( KPlusNumber() );
+
+ fieldMobile1 = contactItem->FindField(EPbkFieldIdLastName);
+ fieldMobile1->TextStorage()->SetTextL( KLastName() );
+
+ contactEngine->AddNewContactL( *contactItem );
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+
+ iConcreteSettings->SetTelNumberL( KPlusNumber() );
+
+ iContactAvailability->iBeginWithFirstName = ETrue;
+ TRAP( error,
+ iContactAvailability->UpdateContactNameL( contactItem->ContactItem() ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( error == KErrNone );
+ EUNIT_ASSERT( iContactAvailability->iContactName->Compare( KLastName ) == NULL );
+
+ CleanupStack::PopAndDestroy( contactItem );
+ array = NULL;
+ iContactAvailability->ContactArrayL( array, *contactEngine );
+ CleanupStack::PushL( array );
+ contactEngine->DeleteContactsL( *array, ETrue );
+ CleanupStack::PopAndDestroy( array );
+
+ //contact lastname && iBeginWithFirstName = EFalse
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ contactItem= contactEngine->CreateEmptyContactL();
+ CleanupStack::PushL( contactItem );
+
+ fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
+ fieldMobile->TextStorage()->SetTextL( KPlusNumber() );
+
+ fieldMobile1 = contactItem->FindField(EPbkFieldIdLastName);
+ fieldMobile1->TextStorage()->SetTextL( KLastName() );
+
+ contactEngine->AddNewContactL( *contactItem );
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+
+ iConcreteSettings->SetTelNumberL( KPlusNumber() );
+
+ iContactAvailability->iBeginWithFirstName = EFalse;
+ TRAP( error,
+ iContactAvailability->UpdateContactNameL( contactItem->ContactItem() ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( error == KErrNone );
+ EUNIT_ASSERT( iContactAvailability->iContactName->Compare( KLastName ) == NULL );
+
+ CleanupStack::PopAndDestroy( contactItem );
+ array = NULL;
+ iContactAvailability->ContactArrayL( array, *contactEngine );
+ CleanupStack::PushL( array );
+ contactEngine->DeleteContactsL( *array, ETrue );
+ CleanupStack::PopAndDestroy( array );
+
+ //contact firstname && lastname && iBeginWithFirstName = ETrue
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ contactItem= contactEngine->CreateEmptyContactL();
+ CleanupStack::PushL( contactItem );
+
+ fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
+ fieldMobile->TextStorage()->SetTextL( KPlusNumber() );
+
+ fieldMobile1 = contactItem->FindField(EPbkFieldIdFirstName);
+ fieldMobile1->TextStorage()->SetTextL( KFirstName() );
+
+ TPbkContactItemField* fieldMobile2 = contactItem->FindField(EPbkFieldIdLastName);
+ fieldMobile2->TextStorage()->SetTextL( KLastName() );
+
+ contactEngine->AddNewContactL( *contactItem );
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+
+ iConcreteSettings->SetTelNumberL( KPlusNumber() );
+
+ iContactAvailability->iBeginWithFirstName = ETrue;
+ TRAP( error,
+ iContactAvailability->UpdateContactNameL( contactItem->ContactItem() ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( error == KErrNone );
+ EUNIT_ASSERT( iContactAvailability->iContactName->Compare( KFirstLastName ) == NULL );
+//
+ CleanupStack::PopAndDestroy( contactItem );
+ array = NULL;
+ iContactAvailability->ContactArrayL( array, *contactEngine );
+ CleanupStack::PushL( array );
+ contactEngine->DeleteContactsL( *array, ETrue );
+ CleanupStack::PopAndDestroy( array );
+
+ //contact firstname && lastname && iBeginWithFirstName = EFalse
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ contactItem= contactEngine->CreateEmptyContactL();
+ CleanupStack::PushL( contactItem );
+
+ fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
+ fieldMobile->TextStorage()->SetTextL( KPlusNumber() );
+
+ fieldMobile1 = contactItem->FindField(EPbkFieldIdFirstName);
+ fieldMobile1->TextStorage()->SetTextL( KFirstName() );
+
+ fieldMobile2 = contactItem->FindField(EPbkFieldIdLastName);
+ fieldMobile2->TextStorage()->SetTextL( KLastName() );
+
+ contactEngine->AddNewContactL( *contactItem );
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+
+ iConcreteSettings->SetTelNumberL( KPlusNumber() );
+
+ iContactAvailability->iBeginWithFirstName = EFalse;
+ TRAP( error,
+ iContactAvailability->UpdateContactNameL( contactItem->ContactItem() ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( error == KErrNone );
+ EUNIT_ASSERT( iContactAvailability->iContactName->Compare( KLastFirstName ) == NULL );
+
+ CleanupStack::PopAndDestroy( contactItem );
+ array = NULL;
+ iContactAvailability->ContactArrayL( array, *contactEngine );
+ CleanupStack::PushL( array );
+ contactEngine->DeleteContactsL( *array, ETrue );
+ CleanupStack::PopAndDestroy( array );
+
+ // contact name only contain 1 character
+ _LIT(KNameWithOneChar,"M");
+ for (int i = 0; i < 1; ++i )
+ {
+ EUNIT_DISABLE_ALLOC_DECORATOR;
+ contactItem= contactEngine->CreateEmptyContactL();
+ CleanupStack::PushL( contactItem );
+
+ fieldMobile = contactItem->FindField(EPbkFieldIdPhoneNumberMobile);
+ fieldMobile->TextStorage()->SetTextL( KPlusNumber() );
+
+ fieldMobile1 = contactItem->FindField(EPbkFieldIdFirstName);
+ fieldMobile1->TextStorage()->SetTextL( KNameWithOneChar() );
+
+ contactEngine->AddNewContactL( *contactItem );
+ EUNIT_ENABLE_ALLOC_DECORATOR;
+
+ iConcreteSettings->SetTelNumberL( KPlusNumber() );
+
+ iContactAvailability->iBeginWithFirstName = i;
+ TRAP( error,
+ iContactAvailability->UpdateContactNameL( contactItem->ContactItem() ) );
+ if ( error == KErrNoMemory ) User::Leave( error );
+ EUNIT_ASSERT( error == KErrNone );
+ EUNIT_ASSERT( iContactAvailability->iContactName->Compare( KNameWithOneChar ) == 0 );
+
+ CleanupStack::PopAndDestroy( contactItem );
+ array = NULL;
+ iContactAvailability->ContactArrayL( array, *contactEngine );
+ CleanupStack::PushL( array );
+ contactEngine->DeleteContactsL( *array, ETrue );
+ CleanupStack::PopAndDestroy( array );
+ }
+
+ CleanupStack::PopAndDestroy( contactEngine );
}
-
// TEST TABLE
EUNIT_BEGIN_TEST_TABLE(
@@ -376,13 +1515,6 @@
"DoExecuteL_2",
"FUNCTIONALITY",
SetupL, UT_CMusAvaController_DoExecuteL2_L, Teardown)
-
-EUNIT_TEST(
- "DoExecuteL_3 - test ",
- "CMusAvaContactAvailability",
- "DoExecuteL_3",
- "FUNCTIONALITY",
- SetupL, UT_CMusAvaController_DoExecuteL3_L, Teardown)
EUNIT_TEST(
"Name - test ",
@@ -503,6 +1635,12 @@
"FUNCTIONALITY",
SetupL, UT_CMusAvaController_UpdateContactNameLL, Teardown)
+EUNIT_TEST(
+ "UpdateContactNameL - test ",
+ "CMusAvaContactAvailability",
+ "UpdateContactNameL",
+ "FUNCTIONALITY",
+ SetupL, UT_CMusAvaController_CallConnectedLL, Teardown)
EUNIT_END_TEST_TABLE
// END OF FILE