uiservicetab/vimpstengine/tsrc/vimpstengine_ut/src/t_vimpstengineimsubservice.cpp
branchRCL_3
changeset 29 9a48e301e94b
parent 0 5e5d6b214f4f
child 30 2b4be3554d30
equal deleted inserted replaced
28:3104fc151679 29:9a48e301e94b
       
     1 /*
       
     2 * t_vimpstengineimsubservice.cpp Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:t_vimpstengineimsubservice.cpp
       
    15 *
       
    16 */
       
    17 #include <EUnitMacros.h>
       
    18 #include <TEUnitAssertionInfo.h>
       
    19 #include <CEUnitAllocTestCaseDecorator.h>
       
    20 #include "t_vimpstengineimsubservice.h"
       
    21 
       
    22 #include <spentry.h>
       
    23 #include <spsettings.h>
       
    24 #include <spproperty.h>
       
    25 
       
    26 #include "cvimpstengineimsubservice.h"
       
    27 #include "cvimpstenginecchhandler.h"
       
    28 #include "cvimpstengineservicetablefetcher.h"
       
    29 
       
    30 #include "s_cch.h"
       
    31 
       
    32 extern MyCchService* myService;
       
    33 extern TBool createService ;
       
    34 extern TBool tryConnParamWithSuccess ;
       
    35 extern TBool gConversationExist;
       
    36 extern TBool gConversationUnreadCount;
       
    37 
       
    38 
       
    39 const TInt KTestServiceId = 5;
       
    40 
       
    41 _LIT( KTestBuddyId,"TEST_BUDDY_ID");
       
    42 //_LIT( KTestRequesterId,"TEST_REQUESTER_ID");
       
    43 
       
    44 T_VimpstEngineImSubService* T_VimpstEngineImSubService::NewLC()
       
    45     {
       
    46     T_VimpstEngineImSubService* self = new( ELeave ) T_VimpstEngineImSubService;
       
    47     CleanupStack::PushL( self );
       
    48     self->ConstructL();
       
    49     return self;
       
    50     }
       
    51 
       
    52 T_VimpstEngineImSubService::~T_VimpstEngineImSubService()
       
    53     {
       
    54     }
       
    55 
       
    56 void T_VimpstEngineImSubService::ConstructL()
       
    57     {
       
    58     CEUnitTestSuiteClass::ConstructL();
       
    59     }
       
    60 
       
    61 
       
    62 //  FROM OBSERVER INTERFACES
       
    63 void T_VimpstEngineImSubService::HandleChatMessageEventL( TVIMPSTEnums::TIMEventType aEventType ,
       
    64     const TDesC& /*aSender*/)
       
    65     {
       
    66     iChatMsgReceived = ETrue;
       
    67     }
       
    68 
       
    69 void T_VimpstEngineImSubService::HandleServceConnectionEventL()
       
    70     {
       
    71     }
       
    72 
       
    73 
       
    74 void T_VimpstEngineImSubService::SetupL()
       
    75     {    
       
    76     createService = ETrue;
       
    77     tryConnParamWithSuccess = ETrue;
       
    78     iTestServiceId = CreateSpEntryL( KTestServiceId );
       
    79     
       
    80     iCchHandler = CVIMPSTEngineCchHandler::NewL( iTestServiceId ,*iCchUiEventObserver );
       
    81     
       
    82     iServiceTableFetcher = CVIMPSTEngineServiceTableFetcher::NewL(); 
       
    83     
       
    84     
       
    85     iImSubService = CVIMPSTEngineIMSubService::NewL( 
       
    86         iTestServiceId,
       
    87         *iCchHandler,
       
    88         *iServiceTableFetcher,
       
    89         *this );
       
    90     }
       
    91 
       
    92 void T_VimpstEngineImSubService::Teardown()
       
    93     {
       
    94     if ( iCchHandler )
       
    95         {
       
    96         delete iCchHandler;
       
    97         iCchHandler = NULL;
       
    98         }
       
    99     if ( iServiceTableFetcher )
       
   100         {
       
   101         delete iServiceTableFetcher;
       
   102         iServiceTableFetcher = NULL;
       
   103         }
       
   104     
       
   105     if ( iImSubService )
       
   106         {
       
   107         delete iImSubService;
       
   108         iImSubService = NULL;
       
   109         }
       
   110     
       
   111     if ( myService )
       
   112         {
       
   113         delete myService;
       
   114         myService = NULL;
       
   115         }  
       
   116     gConversationExist = EFalse;
       
   117     gConversationUnreadCount = EFalse;
       
   118     
       
   119     }
       
   120 
       
   121 TInt T_VimpstEngineImSubService::CreateSpEntryL( TInt aServiceId )
       
   122     {
       
   123     CSPSettings* settings = CSPSettings::NewLC();
       
   124     
       
   125     CSPEntry* entry = CSPEntry::NewLC();
       
   126     entry->SetServiceId( aServiceId );
       
   127     
       
   128     CSPEntry* testEntry = CSPEntry::NewLC();
       
   129     TInt result = settings->FindEntryL( entry->GetServiceId(), *testEntry );
       
   130     
       
   131     if( result == KErrNone )
       
   132         {
       
   133         settings->UpdateEntryL( *entry );
       
   134         }
       
   135     else
       
   136         {
       
   137         settings->AddEntryL( *entry );
       
   138         }
       
   139     
       
   140     TInt createdServiceId = entry->GetServiceId();
       
   141     
       
   142     CleanupStack::PopAndDestroy( testEntry );
       
   143     CleanupStack::PopAndDestroy( entry );
       
   144     CleanupStack::PopAndDestroy( settings );
       
   145     
       
   146     return createdServiceId;
       
   147     }   
       
   148 
       
   149 void T_VimpstEngineImSubService::T_NewLL()
       
   150     {
       
   151     CVIMPSTEngineIMSubService* imSubService = NULL;
       
   152     imSubService = CVIMPSTEngineIMSubService::NewLC(
       
   153         iTestServiceId,
       
   154         *iCchHandler,
       
   155         *iServiceTableFetcher,
       
   156         *this);
       
   157        
       
   158     EUNIT_ASSERT( imSubService != NULL );      
       
   159     CleanupStack::PopAndDestroy( imSubService );
       
   160     }
       
   161 
       
   162 void T_VimpstEngineImSubService::T_RegisterChatObserverL()
       
   163     {
       
   164     iImSubService->RegisterChatObserver( this );
       
   165     EUNIT_ASSERT( 1 == iImSubService->iChatObserver.Count() );
       
   166     }
       
   167 
       
   168 void T_VimpstEngineImSubService::T_UnRegisterChatObserverL()
       
   169     {
       
   170     iImSubService->RegisterChatObserver( this );
       
   171     iImSubService->UnRegisterChatObserver( this );
       
   172     EUNIT_ASSERT( 0 == iImSubService->iChatObserver.Count() );
       
   173     }
       
   174 
       
   175 void T_VimpstEngineImSubService::T_HandleIMCacheEventLL()
       
   176     {
       
   177     TInt error( KErrNone );
       
   178         
       
   179     RArray<TIMCacheEventType> cacheEventTypes;
       
   180     CleanupClosePushL( cacheEventTypes );
       
   181         
       
   182     // Add all cache events to array
       
   183     cacheEventTypes.AppendL( EIMCacheRequestCompleted );
       
   184     cacheEventTypes.AppendL( EIMCacheNewMessage );
       
   185     cacheEventTypes.AppendL( EIMCacheUnreadMessage );
       
   186     cacheEventTypes.AppendL( EIMCacheUnreadChange );
       
   187     cacheEventTypes.AppendL( EIMCacheChatStarted );
       
   188     cacheEventTypes.AppendL( EIMCacheAllChatClosed );
       
   189     cacheEventTypes.AppendL( EIMCacheNewChat );
       
   190     cacheEventTypes.AppendL( EIMCacheChatClosed );
       
   191     
       
   192 
       
   193     // go through all cache events with NULL pointer
       
   194     for ( TInt i( 0 ) ; i < cacheEventTypes.Count() ; i++ )
       
   195         {
       
   196         TRAP( error, iImSubService->HandleIMCacheEventL( 
       
   197             cacheEventTypes[ i ], NULL ) );
       
   198             
       
   199         if ( KErrNoMemory == error )
       
   200             {
       
   201             User::Leave( error );
       
   202             }
       
   203         EUNIT_ASSERT( KErrNone == error );
       
   204         }
       
   205         
       
   206     // go through all cache events with chatData
       
   207     SIMCacheMessageData chatData = 
       
   208         {
       
   209         TIMCacheMessageType(0),
       
   210         };
       
   211           
       
   212     chatData.iBuddyId = HBufC::NewLC( KTestBuddyId().Length() );
       
   213     chatData.iBuddyId->Des().Copy( KTestBuddyId );
       
   214 
       
   215 	//for add request
       
   216 	/*SIMCacheContactData contactData = {0};
       
   217 	
       
   218 	contactData.iServiceId = iTestServiceId;
       
   219 	contactData.iRequesterId = HBufC::NewLC( KTestBuddyId().Length() );
       
   220     contactData.iRequesterId->Des().Copy( KTestBuddyId );    
       
   221 	*/
       
   222     for ( TInt i( 0 ) ; i < cacheEventTypes.Count() ; i++ )
       
   223         {
       
   224         
       
   225         if (cacheEventTypes[ i ] == EIMCacheChatStarted || 
       
   226         			cacheEventTypes[ i ] == EIMCacheAllChatClosed)
       
   227 	        {
       
   228 	        TRAP( error, iImSubService->HandleIMCacheEventL( 
       
   229 	            cacheEventTypes[ i ]) );	
       
   230 	        }
       
   231         else
       
   232 	        {	        	
       
   233 	        TRAP( error, iImSubService->HandleIMCacheEventL( 
       
   234 	            cacheEventTypes[ i ], &chatData ) );
       
   235 	        }
       
   236         if ( KErrNoMemory == error )
       
   237             {
       
   238             User::Leave( error );
       
   239             }
       
   240         EUNIT_ASSERT( KErrNone == error );
       
   241         }
       
   242     
       
   243   //  CleanupStack::PopAndDestroy(contactData.iRequesterId);
       
   244     CleanupStack::PopAndDestroy(chatData.iBuddyId);
       
   245     
       
   246     EUNIT_ASSERT( EFalse == iChatMsgReceived );
       
   247     
       
   248     CleanupStack::PopAndDestroy( &cacheEventTypes );
       
   249     }
       
   250 
       
   251 void T_VimpstEngineImSubService::T_SubServiceStateL()
       
   252     {
       
   253     RArray<TVIMPSTEnums::TVIMPSTRegistrationState> states;
       
   254     CleanupClosePushL( states );
       
   255     states.AppendL( TVIMPSTEnums::ESVCENotRegistered );
       
   256     states.AppendL( TVIMPSTEnums::ESVCERegistered );
       
   257     states.AppendL( TVIMPSTEnums::ESVCENetworkConnecting );
       
   258     states.AppendL( TVIMPSTEnums::ESVCEWaitingForNetwork );
       
   259     states.AppendL( TVIMPSTEnums::ESVCENetworkDisConnecting );
       
   260     states.AppendL( TVIMPSTEnums::ESVCEUpdatingContacts );
       
   261        
       
   262     for ( TInt i( 0 ) ; i < states.Count() ; i++ )
       
   263         {
       
   264         iImSubService->iServiceState = states[ i ];
       
   265         EUNIT_ASSERT( states[ i ] == iImSubService->SubServiceState() );
       
   266         }
       
   267        
       
   268     CleanupStack::PopAndDestroy( &states );
       
   269     }
       
   270 
       
   271 void T_VimpstEngineImSubService::T_IsConversationExistLL()
       
   272     {
       
   273     gConversationExist = ETrue;
       
   274     iImSubService->CreateIMCacheAccessorL();
       
   275     EUNIT_ASSERT( ETrue == iImSubService->IsConversationExistL(KTestBuddyId()) );
       
   276     iImSubService->ReleaseIMCacheAccessor();    
       
   277     }
       
   278 
       
   279 
       
   280 void T_VimpstEngineImSubService::T_IsConversationDoesntExistLL()
       
   281     {
       
   282     iImSubService->CreateIMCacheAccessorL();    
       
   283     EUNIT_ASSERT( EFalse == iImSubService->IsConversationExistL(KTestBuddyId()) );
       
   284     iImSubService->ReleaseIMCacheAccessor();
       
   285     }
       
   286 
       
   287 
       
   288     
       
   289 void T_VimpstEngineImSubService::T_CloseConversationExisitingConversationLL()
       
   290     {
       
   291     gConversationExist = ETrue;
       
   292     iImSubService->CreateIMCacheAccessorL();
       
   293     
       
   294     TRAPD( err, iImSubService->CloseConversationL( KTestBuddyId() ) );
       
   295         
       
   296     EUNIT_ASSERT( KErrNone == err );
       
   297     iImSubService->ReleaseIMCacheAccessor();
       
   298     }
       
   299     
       
   300 void T_VimpstEngineImSubService::T_CloseConversationNonExisitingConversationLL()
       
   301     {
       
   302     iImSubService->CreateIMCacheAccessorL();
       
   303     TRAPD( err, iImSubService->CloseConversationL( KTestBuddyId() ) );
       
   304         
       
   305     EUNIT_ASSERT( KErrNone == err );
       
   306     iImSubService->ReleaseIMCacheAccessor();
       
   307     }  
       
   308     
       
   309 void T_VimpstEngineImSubService::T_IsConversationExistNoIMCacheAccessorL()
       
   310     {
       
   311     
       
   312     iImSubService->ReleaseIMCacheAccessor();
       
   313     EUNIT_ASSERT( EFalse == iImSubService->IsConversationExistL(KTestBuddyId()) );
       
   314     
       
   315     }
       
   316          
       
   317 
       
   318 void T_VimpstEngineImSubService::T_CloseConversationNoIMCacheAccessorL()
       
   319     {
       
   320     iImSubService->ReleaseIMCacheAccessor();
       
   321     
       
   322     TRAPD( err, iImSubService->CloseConversationL( KTestBuddyId() ) );
       
   323         
       
   324     EUNIT_ASSERT( KErrNone == err );
       
   325     }
       
   326 
       
   327 
       
   328 void T_VimpstEngineImSubService::T_GetUnreadCountL()
       
   329     {
       
   330     gConversationUnreadCount = ETrue;
       
   331     iImSubService->CreateIMCacheAccessorL();
       
   332     TInt count = -1;
       
   333     
       
   334     TRAPD( err, count = iImSubService->GetUnreadCountL( KTestBuddyId() ) );
       
   335     
       
   336     EUNIT_ASSERT( 1 == count ); 
       
   337 	        
       
   338     EUNIT_ASSERT( KErrNone == err );
       
   339     iImSubService->ReleaseIMCacheAccessor();
       
   340     }
       
   341     
       
   342     
       
   343 void T_VimpstEngineImSubService::T_GetUnreadCountNoIMCacheAccessorL()
       
   344     {    
       
   345     TInt count = -1;
       
   346     
       
   347     TRAPD( err, count = iImSubService->GetUnreadCountL( KTestBuddyId() ) );
       
   348     
       
   349     EUNIT_ASSERT( 0 == count ); 
       
   350         
       
   351     EUNIT_ASSERT( KErrNone == err );
       
   352     }
       
   353    
       
   354     
       
   355 void T_VimpstEngineImSubService::T_ResolveServiceStateLL()
       
   356     {
       
   357     TInt error( KErrNone );
       
   358         
       
   359     RArray<TCCHSubserviceState> subServiceStates;   
       
   360     CleanupClosePushL( subServiceStates );
       
   361     subServiceStates.AppendL( ECCHUninitialized );
       
   362     subServiceStates.AppendL( ECCHDisabled );
       
   363     subServiceStates.AppendL( ECCHConnecting );
       
   364     subServiceStates.AppendL( ECCHEnabled );
       
   365     subServiceStates.AppendL( ECCHDisconnecting );
       
   366     
       
   367     // Test with service error: KErrNone and all subservice states.
       
   368     TInt serviceError( KErrNone );
       
   369             
       
   370     for ( TInt i( 0 ) ; i < subServiceStates.Count() ; i++ )
       
   371         {
       
   372         TRAP( error, iImSubService->ResolveServiceStateL( 
       
   373             subServiceStates[ i ], serviceError ) );
       
   374                 
       
   375         if ( KErrNoMemory == error )
       
   376             {
       
   377             User::Leave( error );
       
   378             }
       
   379                 
       
   380         EUNIT_ASSERT( KErrNone == error );
       
   381         }
       
   382               
       
   383     // Test with service error: KErrNotFound and all subservice states.
       
   384     serviceError = KErrNotFound;
       
   385     for ( TInt j( 0 ) ; j < subServiceStates.Count() ; j++ )
       
   386         {
       
   387         TRAP( error, iImSubService->ResolveServiceStateL( 
       
   388             subServiceStates[ j ], serviceError ) );
       
   389                 
       
   390         if ( KErrNoMemory == error )
       
   391             {
       
   392             User::Leave( error );
       
   393             }
       
   394                        
       
   395         EUNIT_ASSERT( KErrNone == error );
       
   396         }
       
   397         
       
   398     CleanupStack::PopAndDestroy( &subServiceStates );
       
   399     }
       
   400 
       
   401 void T_VimpstEngineImSubService::T_TypeL()
       
   402     {
       
   403     EUNIT_ASSERT( TVIMPSTEnums::EIM == iImSubService->Type() );
       
   404     }
       
   405 
       
   406 void T_VimpstEngineImSubService::T_CchEventOccuredLL()
       
   407     {
       
   408     TInt error( KErrNone );
       
   409         
       
   410     RArray<TCCHSubserviceState> subServiceStates;   
       
   411     CleanupClosePushL( subServiceStates );
       
   412     subServiceStates.AppendL( ECCHUninitialized );
       
   413     subServiceStates.AppendL( ECCHDisabled );
       
   414     subServiceStates.AppendL( ECCHConnecting );
       
   415     subServiceStates.AppendL( ECCHEnabled );
       
   416     subServiceStates.AppendL( ECCHDisconnecting );
       
   417 
       
   418     // Test with service error: KErrNone and all subservice states.
       
   419     TInt serviceError( KErrNone );
       
   420         
       
   421     for ( TInt i( 0 ) ; i < subServiceStates.Count() ; i++ )
       
   422         {
       
   423         TRAP( error, iImSubService->CchEventOccuredL( 
       
   424             iTestServiceId, subServiceStates[ i ], serviceError ) );
       
   425             
       
   426         if ( KErrNoMemory == error )
       
   427             {
       
   428             User::Leave( error );
       
   429             }
       
   430             
       
   431         EUNIT_ASSERT( KErrNone == error );
       
   432         }
       
   433           
       
   434     // Test with service error: KErrNotFound and all subservice states.
       
   435     serviceError = KErrNotFound;
       
   436     for ( TInt j( 0 ) ; j < subServiceStates.Count() ; j++ )
       
   437         {
       
   438         TRAP( error, iImSubService->CchEventOccuredL( 
       
   439             iTestServiceId, subServiceStates[ j ], serviceError ) );
       
   440             
       
   441         if ( KErrNoMemory == error )
       
   442             {
       
   443             User::Leave( error );
       
   444             }
       
   445                    
       
   446         EUNIT_ASSERT( KErrNone == error );
       
   447         }
       
   448         
       
   449     CleanupStack::PopAndDestroy( &subServiceStates );
       
   450     }
       
   451 
       
   452 void T_VimpstEngineImSubService::T_DoHandleCchErrorLL()
       
   453     {
       
   454     RArray<TInt> serviceErrors;
       
   455     CleanupClosePushL( serviceErrors );
       
   456     
       
   457     serviceErrors.AppendL( KErrGeneral ); // Tests default case
       
   458     serviceErrors.AppendL( KCCHErrorBandwidthInsufficient );
       
   459     serviceErrors.AppendL( KCCHErrorInvalidIap );
       
   460     serviceErrors.AppendL( KCCHErrorAuthenticationFailed );
       
   461     serviceErrors.AppendL( KCCHErrorNetworkLost );
       
   462     serviceErrors.AppendL( KCCHErrorLoginFailed );
       
   463     serviceErrors.AppendL( KCCHErrorServiceNotResponding );
       
   464     serviceErrors.AppendL( KCCHErrorInvalidSettings );
       
   465     serviceErrors.AppendL( KCCHErrorAccessPointNotDefined );
       
   466     
       
   467     for ( TInt i( 0 ) ; i < serviceErrors.Count() ; i++ )
       
   468         {
       
   469         TRAPD( err, iImSubService->DoHandleCchErrorL( 
       
   470             serviceErrors[ i ] ) );
       
   471         
       
   472         if ( KErrNoMemory == err )
       
   473             {
       
   474             User::Leave( err );
       
   475             }
       
   476                       
       
   477         EUNIT_ASSERT( KErrNone == err );
       
   478         }
       
   479     
       
   480     CleanupStack::PopAndDestroy( &serviceErrors );
       
   481     }
       
   482 
       
   483 void T_VimpstEngineImSubService::T_CreateIMCacheAccessorLL()
       
   484     {
       
   485     
       
   486     iImSubService->CreateIMCacheAccessorL();
       
   487     EUNIT_ASSERT(iImSubService->iIMCacheFactory);
       
   488     EUNIT_ASSERT(iImSubService->iIMCacheAccessor)
       
   489     
       
   490     }
       
   491 
       
   492 void T_VimpstEngineImSubService::T_ReleaseIMCacheAccessorL()
       
   493     {
       
   494     iImSubService->CreateIMCacheAccessorL();    
       
   495     iImSubService->ReleaseIMCacheAccessor();
       
   496     
       
   497     EUNIT_ASSERT(NULL == iImSubService->iIMCacheFactory);
       
   498     EUNIT_ASSERT(NULL == iImSubService->iIMCacheAccessor);
       
   499     
       
   500     }
       
   501 
       
   502 
       
   503 void T_VimpstEngineImSubService::T_RegisterNULLChatObserverL()
       
   504     {
       
   505     iImSubService->RegisterChatObserver( NULL );
       
   506     EUNIT_ASSERT( 0 == iImSubService->iChatObserver.Count() );
       
   507     }
       
   508 
       
   509 void T_VimpstEngineImSubService::T_UnRegisterNULLChatObserverL()
       
   510     {
       
   511     iImSubService->RegisterChatObserver( NULL );
       
   512     iImSubService->UnRegisterChatObserver( NULL );
       
   513     EUNIT_ASSERT( 0 == iImSubService->iChatObserver.Count() );
       
   514     }
       
   515 
       
   516 void T_VimpstEngineImSubService::T_RegisterChatObserverTwiceL()
       
   517     {
       
   518     iImSubService->RegisterChatObserver( this );
       
   519     iImSubService->RegisterChatObserver( this );
       
   520     EUNIT_ASSERT( 1 == iImSubService->iChatObserver.Count() );
       
   521     }
       
   522 
       
   523 void T_VimpstEngineImSubService::T_UnRegisterChatObserverTwiceL()
       
   524     {
       
   525     iImSubService->RegisterChatObserver( this );
       
   526     iImSubService->UnRegisterChatObserver( this );
       
   527     iImSubService->UnRegisterChatObserver( this );
       
   528     EUNIT_ASSERT( 0 == iImSubService->iChatObserver.Count() );
       
   529     }    
       
   530 
       
   531 
       
   532 void T_VimpstEngineImSubService::T_HandleIMCacheEventWithRegisteredObserverL()
       
   533     {
       
   534     TInt error( KErrNone );
       
   535         
       
   536     RArray<TIMCacheEventType> cacheEventTypes;
       
   537     CleanupClosePushL( cacheEventTypes );
       
   538 	
       
   539 	iImSubService->RegisterChatObserver( this );    
       
   540             
       
   541     // Add all cache events to array
       
   542 	   cacheEventTypes.AppendL( EIMCacheRequestCompleted );
       
   543 	    cacheEventTypes.AppendL( EIMCacheNewMessage );
       
   544 	    cacheEventTypes.AppendL( EIMCacheUnreadMessage );
       
   545 	    cacheEventTypes.AppendL( EIMCacheUnreadChange );
       
   546 	    cacheEventTypes.AppendL( EIMCacheChatStarted );
       
   547 	    cacheEventTypes.AppendL( EIMCacheAllChatClosed );
       
   548 	    cacheEventTypes.AppendL( EIMCacheNewChat );
       
   549 	    cacheEventTypes.AppendL( EIMCacheChatClosed );
       
   550         
       
   551     // go through all cache events with NULL pointer
       
   552     for ( TInt i( 0 ) ; i < cacheEventTypes.Count() ; i++ )
       
   553         {
       
   554         TRAP( error, iImSubService->HandleIMCacheEventL( 
       
   555             cacheEventTypes[ i ], NULL ) );
       
   556             
       
   557         if ( KErrNoMemory == error )
       
   558             {
       
   559             User::Leave( error );
       
   560             }
       
   561         EUNIT_ASSERT( KErrNone == error );
       
   562         }
       
   563         
       
   564     // go through all cache events with chatData
       
   565     SIMCacheMessageData chatData = 
       
   566         {
       
   567         TIMCacheMessageType(0),
       
   568         };
       
   569           
       
   570     chatData.iBuddyId = HBufC::NewLC( KTestBuddyId().Length() );
       
   571     chatData.iBuddyId->Des().Copy( KTestBuddyId );
       
   572 
       
   573 	//for add request
       
   574 	/*SIMCacheContactData contactData = {0,};
       
   575 	
       
   576 	contactData.iServiceId = iTestServiceId;
       
   577 	contactData.iRequesterId = HBufC::NewLC( KTestBuddyId().Length() );
       
   578     contactData.iRequesterId->Des().Copy( KTestBuddyId );   
       
   579     */ 
       
   580 	
       
   581     for ( TInt i( 0 ) ; i < cacheEventTypes.Count() ; i++ )
       
   582         {
       
   583         if (cacheEventTypes[ i ] == EIMCacheChatStarted || 
       
   584         			cacheEventTypes[ i ] == EIMCacheAllChatClosed)
       
   585 	        {
       
   586 	        TRAP( error, iImSubService->HandleIMCacheEventL( 
       
   587 	            cacheEventTypes[ i ] ) );	
       
   588 	        }
       
   589         else
       
   590 	        {	        	
       
   591 	        TRAP( error, iImSubService->HandleIMCacheEventL( 
       
   592 	            cacheEventTypes[ i ], &chatData ) );
       
   593 	        }
       
   594         if ( KErrNoMemory == error )
       
   595             {
       
   596             User::Leave( error );
       
   597             }
       
   598         EUNIT_ASSERT( KErrNone == error );
       
   599         }
       
   600     
       
   601     //CleanupStack::PopAndDestroy(contactData.iRequesterId);
       
   602     CleanupStack::PopAndDestroy(chatData.iBuddyId);
       
   603     
       
   604     iImSubService->UnRegisterChatObserver( this );
       
   605     
       
   606     EUNIT_ASSERT( ETrue == iChatMsgReceived );
       
   607     
       
   608     CleanupStack::PopAndDestroy( &cacheEventTypes );
       
   609     }
       
   610         
       
   611 
       
   612 EUNIT_BEGIN_TEST_TABLE( T_VimpstEngineImSubService, "T_VimpstEngineImSubService", "" )
       
   613 
       
   614 EUNIT_TEST(
       
   615     "NewL - test ",
       
   616     "T_VimpstEngineImSubService",
       
   617     "NewL",
       
   618     "FUNCTIONALITY",
       
   619     SetupL, T_NewLL, Teardown)
       
   620     
       
   621 EUNIT_TEST(
       
   622     "RegisterChatObserver - test ",
       
   623     "T_VimpstEngineImSubService",
       
   624     "RegisterChatObserver",
       
   625     "FUNCTIONALITY",
       
   626     SetupL, T_RegisterChatObserverL, Teardown)
       
   627     
       
   628 EUNIT_TEST(
       
   629     "UnRegisterChatObserver - test ",
       
   630     "T_VimpstEngineImSubService",
       
   631     "UnRegisterChatObserver",
       
   632     "FUNCTIONALITY",
       
   633     SetupL, T_UnRegisterChatObserverL, Teardown)
       
   634     
       
   635 EUNIT_TEST(
       
   636     "HandleIMCacheEventL - without RegisteredObservers ",
       
   637     "T_VimpstEngineImSubService",
       
   638     "HandleIMCacheEventL without RegisteredObservers",
       
   639     "FUNCTIONALITY",
       
   640     SetupL, T_HandleIMCacheEventLL, Teardown)
       
   641     
       
   642 EUNIT_TEST(
       
   643     "GetUnreadCountL - test ",
       
   644     "T_VimpstEngineImSubService",
       
   645     "GetUnreadCountL",
       
   646     "FUNCTIONALITY",
       
   647     SetupL, T_GetUnreadCountL, Teardown)
       
   648 
       
   649 EUNIT_TEST(
       
   650     "GetUnreadCountL - IMCacheAccessor Not Created ",
       
   651     "T_VimpstEngineImSubService",
       
   652     "GetUnreadCountL - IMCacheAccessor Not Created",
       
   653     "FUNCTIONALITY",
       
   654     SetupL, T_GetUnreadCountNoIMCacheAccessorL, Teardown)
       
   655     
       
   656 
       
   657     
       
   658 EUNIT_TEST(
       
   659     "SubServiceState - test ",
       
   660     "T_VimpstEngineImSubService",
       
   661     "SubServiceState",
       
   662     "FUNCTIONALITY",
       
   663     SetupL, T_SubServiceStateL, Teardown)
       
   664     
       
   665 EUNIT_TEST(
       
   666     "IsConversationExistL - test ",
       
   667     "T_VimpstEngineImSubService",
       
   668     "IsConversationExistL",
       
   669     "FUNCTIONALITY",
       
   670     SetupL, T_IsConversationExistLL, Teardown)
       
   671 
       
   672 EUNIT_TEST(
       
   673     "IsConversationDoesntExistL - test ",
       
   674     "T_VimpstEngineImSubService",
       
   675     "T_IsConversationDoesntExistLL",
       
   676     "FUNCTIONALITY",
       
   677     SetupL, T_IsConversationDoesntExistLL, Teardown)
       
   678 
       
   679 
       
   680 EUNIT_TEST(
       
   681     "CloseExisitingConversationL - test ",
       
   682     "T_VimpstEngineImSubService",
       
   683     "CloseExisitingConversationL",
       
   684     "FUNCTIONALITY",
       
   685     SetupL, T_CloseConversationExisitingConversationLL, Teardown)
       
   686         
       
   687 EUNIT_TEST(
       
   688     "CloseNonExisitingConversationL - test ",
       
   689     "T_VimpstEngineImSubService",
       
   690     "CloseNonExisitingConversationL",
       
   691     "FUNCTIONALITY",
       
   692     SetupL, T_CloseConversationNonExisitingConversationLL, Teardown)
       
   693 
       
   694 EUNIT_TEST(
       
   695     "IsConversationExistL - IMCacheAccessor Not Created",
       
   696     "T_VimpstEngineImSubService",
       
   697     "IsConversationExistL - IMCacheAccessor Not Created",
       
   698     "FUNCTIONALITY",
       
   699     SetupL, T_IsConversationExistNoIMCacheAccessorL, Teardown)
       
   700 
       
   701 
       
   702 EUNIT_TEST(
       
   703     "CloseConversationL - IMCacheAccessor Not Created ",
       
   704     "T_VimpstEngineImSubService",
       
   705     "CloseConversationL - - IMCacheAccessor Not Created",
       
   706     "FUNCTIONALITY",
       
   707     SetupL, T_CloseConversationNoIMCacheAccessorL, Teardown)
       
   708 
       
   709 
       
   710     
       
   711 EUNIT_TEST(
       
   712     "ResolveServiceStateL - test ",
       
   713     "T_VimpstEngineImSubService",
       
   714     "ResolveServiceStateL",
       
   715     "FUNCTIONALITY",
       
   716     SetupL, T_ResolveServiceStateLL, Teardown)
       
   717     
       
   718 EUNIT_TEST(
       
   719     "Type - test ",
       
   720     "T_VimpstEngineImSubService",
       
   721     "Type",
       
   722     "FUNCTIONALITY",
       
   723     SetupL, T_TypeL, Teardown)
       
   724     
       
   725 EUNIT_TEST(
       
   726     "CchEventOccuredL - test ",
       
   727     "T_VimpstEngineImSubService",
       
   728     "CchEventOccuredL",
       
   729     "FUNCTIONALITY",
       
   730     SetupL, T_CchEventOccuredLL, Teardown)
       
   731     
       
   732 EUNIT_TEST(
       
   733     "DoHandleCchErrorL - test ",
       
   734     "T_VimpstEngineImSubService",
       
   735     "DoHandleCchErrorL",
       
   736     "FUNCTIONALITY",
       
   737     SetupL, T_DoHandleCchErrorLL, Teardown)
       
   738     
       
   739 EUNIT_TEST(
       
   740     "CreateIMCacheAccessorL - test ",
       
   741     "T_VimpstEngineImSubService",
       
   742     "CreateIMCacheAccessorL",
       
   743     "FUNCTIONALITY",
       
   744     SetupL, T_CreateIMCacheAccessorLL, Teardown)
       
   745     
       
   746 EUNIT_TEST(
       
   747     "ReleaseIMCacheAccessor - test ",
       
   748     "T_VimpstEngineImSubService",
       
   749     "ReleaseIMCacheAccessor",
       
   750     "FUNCTIONALITY",
       
   751     SetupL, T_ReleaseIMCacheAccessorL, Teardown)
       
   752     
       
   753 
       
   754 EUNIT_TEST(
       
   755     "RegisterChatObserver - NULL Observer ",
       
   756     "T_VimpstEngineImSubService",
       
   757     "RegisterChatObserver - NULL Observer",
       
   758     "FUNCTIONALITY",
       
   759     SetupL, T_RegisterNULLChatObserverL, Teardown)
       
   760     
       
   761 EUNIT_TEST(
       
   762     "UnRegisterChatObserver - NULL Observer",
       
   763     "T_VimpstEngineImSubService",
       
   764     "UnRegisterChatObserver - NULL Observer",
       
   765     "FUNCTIONALITY",
       
   766     SetupL, T_UnRegisterNULLChatObserverL, Teardown)  
       
   767 
       
   768 EUNIT_TEST(
       
   769     "RegisterChatObserver - Twice Same Observer",
       
   770     "T_VimpstEngineImSubService",
       
   771     "RegisterChatObserver - Twice Same Observer",
       
   772     "FUNCTIONALITY",
       
   773     SetupL, T_RegisterChatObserverTwiceL, Teardown)  
       
   774 
       
   775 
       
   776 EUNIT_TEST(
       
   777     "UnRegisterChatObserver - Twice Same Observer",
       
   778     "T_VimpstEngineImSubService",
       
   779     "UnRegisterChatObserver - Twice Same Observer",
       
   780     "FUNCTIONALITY",
       
   781     SetupL, T_UnRegisterChatObserverTwiceL, Teardown)  
       
   782 
       
   783 
       
   784 EUNIT_TEST(
       
   785     "HandleIMCacheEventL - with RegisteredObserver ",
       
   786     "T_VimpstEngineImSubService",
       
   787     "HandleIMCacheEventL with RegisteredObserver",
       
   788     "FUNCTIONALITY",
       
   789     SetupL, T_HandleIMCacheEventWithRegisteredObserverL, Teardown)
       
   790         
       
   791     
       
   792     
       
   793 EUNIT_END_TESTCASE_TABLE
       
   794 
       
   795 //  END OF FILE