multimediacommsengine/mmcesrv/mmceserver/tsrc/ut_server/src/UT_CMCEStateOffering.cpp
--- 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 =