diff -r 3f7c7e6eea8a -r 4da1f672912e 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 =