multimediacommsengine/mmcesrv/mmceserver/tsrc/ut_server/src/UT_CMCEStateOffering.cpp
branchRCL_3
changeset 46 4da1f672912e
parent 45 3f7c7e6eea8a
--- a/multimediacommsengine/mmcesrv/mmceserver/tsrc/ut_server/src/UT_CMCEStateOffering.cpp	Tue Aug 31 15:35:13 2010 +0300
+++ b/multimediacommsengine/mmcesrv/mmceserver/tsrc/ut_server/src/UT_CMCEStateOffering.cpp	Wed Sep 01 12:20:28 2010 +0100
@@ -397,7 +397,7 @@
     EUNIT_ASSERT ( iSipSession->WaitingMediaCallback() );
     MCE_RESET_STUBS();
     
-    // 200 OK while waiting for media callback
+    // 200 OK while waiting for media callback non early media
     iSipSession->iSubState = CMceSipSession::EOffering;
     iStorage->iMediaManagerUpdateStatus = KMceAsync;
     
@@ -416,6 +416,31 @@
     EUNIT_ASSERT ( iSipSession->WaitingMediaCallback() );
     MCE_RESET_STUBS();
     
+    // 200 OK while waiting for media callback with early media
+    iSipSession->iSubState = CMceSipSession::EOffering;
+    iStorage->iMediaManagerUpdateStatus = KMceAsync;
+    iState->iLastResponse = KMceSipRinging;
+    MCETestHelper::SetResponseL( 
+            *iSipSession->iResponse, 
+            KMceSipOK, 
+            SipStrConsts::EPhraseOk, 
+            ETrue, ETrue, 1 );
+
+    TMceStateTransitionEvent event2_2( *iSipSession, EMceResponse );
+    iState->EntryL( event2_2 );
+    MCE_ENTRYL_POSTCONDITION
+        
+    MCE_ASSERT_STUBS( CMCETls::ENone /*mmaction*/, 
+                      CMCETls::ENone /*mmsdpaction*/, 
+                      SipStrConsts::EEmpty /*sentMethod*/, 
+                      KErrNotFound /*sentResponse*/);
+        
+    EUNIT_ASSERT ( iStorage->iAckSent == EFalse );
+    EUNIT_ASSERT ( event2_1.Code() == EMceResponse );
+    EUNIT_ASSERT ( iSipSession->PendingTransactions().Count() == 1 );
+    EUNIT_ASSERT ( iSipSession->WaitingMediaCallback() );
+    MCE_RESET_STUBS();
+    
     // 200 OK with wrong SDP
     iSipSession->iSubState = CMceSipSession::EOffering;
     iSipSession->SetWaitingMediaCallback( EFalse );
@@ -612,6 +637,26 @@
     EUNIT_ASSERT ( iSipSession->PendingTransactions().Count() == 4 );
     MCE_RESET_STUBS();
     
+    // KMceSipRequestPending updating
+    iSipSession->iSubState = CMceSipSession::EUpdating;
+    iStorage->iMediaManagerUpdateStatus = KMceAsync;
+    
+    MCETestHelper::ChangeResponseTypeL( 
+        *iSipSession->iResponse->ResponseElements(),
+        KMceSipRequestPending,
+        SipStrConsts:: EPhraseBusyHere);
+    
+    TMceStateTransitionEvent event3_4( *iSipSession, EMceErrorResponse );
+    iState->EntryL( event3_4 );
+    MCE_ENTRYL_POSTCONDITION_2
+    MCE_ASSERT_STUBS( CMCETls::ECloseSession /*mmaction*/, 
+                      CMCETls::ENone /*mmsdpaction*/, 
+                      SipStrConsts::EBye /*sentMethod*/, 
+                      KErrNotFound /*sentResponse*/);
+    
+    EUNIT_ASSERT ( event3_4.Code() == EMceErrorResponse );
+    MCE_RESET_STUBS();
+    
     // KMceSipSessionIntervalTooSmall && dialog state ETerminated
     iSipSession->Dialog()->Dialog().iState = CSIPDialog::ETerminated;
     iSipSession->iSubState = CMceSipSession::EOffering;
@@ -985,8 +1030,20 @@
 	
 	TMceStateTransitionEvent event15( *iSipSession, EMceResponse );
     iState->ExitL( event15 );
-    EUNIT_ASSERT ( iSipSession->CurrentState().Id() == KMceStateOffering );   
-
+    EUNIT_ASSERT ( iSipSession->CurrentState().Id() == KMceStateOffering );  
+    
+    // EMceResponse with early media & waiting media call back
+    CSIPClientTransaction* clitransaction1_1 = 
+    MCETestHelper::ClientTransactionLC( SipStrConsts::EInfo, KMceSipOK, 
+        								SipStrConsts::EPhraseOk, ETrue );
+    iSipSession->SetPendingTransactionL( clitransaction1_1 );
+    CleanupStack::Pop( clitransaction1_1 );
+    iSipSession->iResponse = clitransaction1_1;
+    	
+    TMceStateTransitionEvent event15_1( *iSipSession, EMceResponse );
+    iState->iReadyToSendACK = EFalse;
+    iState->ExitL( event15_1 );
+    EUNIT_ASSERT ( iSipSession->CurrentState().Id() == KMceStateOffering );  
 
 	//EMceRedirectionResponse
 	CSIPClientTransaction* clitransaction2 =