diff -r 000000000000 -r 1bce908db942 multimediacommsengine/mmcesrv/mmceserver/tsrc/ut_server/src/UT_CMceNatStateWait.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommsengine/mmcesrv/mmceserver/tsrc/ut_server/src/UT_CMceNatStateWait.cpp Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,242 @@ +/* +* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + + + + +// CLASS HEADER +#include "UT_CMceNatStateWait.h" + +// EXTERNAL INCLUDES +#include + + +// INTERNAL INCLUDES +#include "mcetesthelper.h" +#include "mceservercore.h" +#include "cmcetls.h" +#include "mceactionset.h" +#include "mcecssession.h" +#include "mcecssessionimplementation.h" +#include "mcenatsipsession.h" +#include "mcenatsipstatemachine.h" +#include "mcemediamanager.h" +#include "../inc/mcenatpluginmanager.h" +#include "nspplugin.h" + + +// CONSTRUCTION +UT_CMceNatStateWait* UT_CMceNatStateWait::NewL() + { + UT_CMceNatStateWait* self = + UT_CMceNatStateWait::NewLC(); + CleanupStack::Pop(); + return self; + } + +UT_CMceNatStateWait* UT_CMceNatStateWait::NewLC() + { + UT_CMceNatStateWait* self = + new ( ELeave ) UT_CMceNatStateWait(); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// Destructor (virtual by CBase) +UT_CMceNatStateWait::~UT_CMceNatStateWait() + { + } + +// Default constructor +UT_CMceNatStateWait::UT_CMceNatStateWait() + { + } + +// Second phase construct +void UT_CMceNatStateWait::ConstructL() + { + // The ConstructL from the base class CEUnitTestSuiteClass must be called. + // It generates the test case table. + CEUnitTestSuiteClass::ConstructL(); + } + +// METHODS + +void UT_CMceNatStateWait::SetupL() + { + CMCETls::OpenL(); + SdpCodecStringPool::OpenL(); + + iIds.iAppUID = 10; + iIds.iProfileID = 1; + iIds.iManagerType = KMceCSSIPSession; + iIds.iDialogType = KMceDlgTypeInvite; + iServerCore = CMceServerCore::NewL(); + + iStorage = CMCETls::Storage(); + + iNatSessionId = 3; + iServerCore->Manager().MediaManager().NatPluginManager().iEnabled = ETrue; + + CDesC8ArrayFlat* params = new (ELeave) CDesC8ArrayFlat( KMceArrayGranularity ); + CleanupStack::PushL( params ); + params->AppendL( _L8("User ") ); + params->AppendL( _L8("User ") ); + + CMceMsgTextArray* msgParams = new (ELeave) CMceMsgTextArray( *params ); + CleanupStack::PushL( msgParams ); + iStorage->StoreL( iIds, *msgParams ); + CleanupStack::PopAndDestroy( msgParams ); + CleanupStack::PopAndDestroy( params ); + + iSession = CMceCsSession::NewL(*iServerCore); + iSession->CreateSubSessionL(iIds, RMessage2()); + iSipSession = static_cast + ((iSession->Implementation().SubSessions())[0]); + + CMceSipManager& manager = iServerCore->Manager(); + CSIPProfile& profile = manager.ProfileL( iIds.iProfileID ); + + iNatSession = CMceNatSipSession::NewL( *iSession, + iSipSession->SIPConnection(), + *iSipSession->iStateMachine, + profile, + NULL ); + iNatSession->iNatStateMachine->iCurrentState = KMceNatStateWait; + iState = iNatSession->iNatStateMachine->iStates[ + iNatSession->iNatStateMachine->iCurrentState ]; + + } + +void UT_CMceNatStateWait::Teardown() + { + CMCETls::Close(); + delete iSession; + iSession = NULL; + delete iNatSession; + iNatSession = NULL; + delete iServerCore; + iServerCore = NULL; + + SdpCodecStringPool::Close(); + } + +void UT_CMceNatStateWait:: + UT_CMceNatStateWait_AcceptLL() + { + + EUNIT_ASSERT( DoesAccept( EMceNatError ) ); + EUNIT_ASSERT( DoesAccept( EMceNatICMPError ) ); + + EUNIT_ASSERT( !DoesAccept( EMceNatHandleSIP ) ); + EUNIT_ASSERT( !DoesAccept( EMceNatInitialized ) ); + EUNIT_ASSERT( !DoesAccept( EMceNatOffer ) ); + EUNIT_ASSERT( !DoesAccept( EMceNatAnswer ) ); + EUNIT_ASSERT( !DoesAccept( EMceNatUpdateSdp ) ); + EUNIT_ASSERT( !DoesAccept( EMceNatUpdated ) ); + EUNIT_ASSERT( !DoesAccept( EMceNatSync ) ); + + } + +void UT_CMceNatStateWait:: + UT_CMceNatStateWait_EntryLL() + { + + // TBD + + } + + +void UT_CMceNatStateWait:: + UT_CMceNatStateWait_ExitLL() + { + // NAT Error Occured + iNatSession->iBody = CMceComSession::NewL( CMceComSession::EOutSession ); + TMceNatEventCode eventcode = EMceNatError; + iNatSession->iNatDisabled = EFalse; + iNatSession->iEntryPoint = CMceNatSipSession::ENatEntryUpdated; + + TMceNatStateTransitionEvent event( NULL,*iNatSession,eventcode, + *iNatSession, EMceInvite ); + + EUNIT_ASSERT_LEAVE( iState->TransitionHandler().ExitL( event )); + + + // NAT ICMP IGnored + iNatSession->iNatDisabled = EFalse; + eventcode = EMceNatICMPError; + TMceNatStateTransitionEvent event1( NULL, *iNatSession,eventcode, + *iNatSession, EMceInvite ); + EUNIT_ASSERT_NO_LEAVE( iState->TransitionHandler().ExitL( event1 )); + + + // NAT ICMP Handled i.e MCE State is Established + iNatSession->iNatDisabled = EFalse; + eventcode = EMceNatICMPError; + iNatSession->NextState( KMceStateEstablished ); + TMceNatStateTransitionEvent event2( NULL, *iNatSession,eventcode, + *iNatSession, EMceInvite ); + EUNIT_ASSERT_LEAVE( iState->TransitionHandler().ExitL( event2 )); + + } + +TBool +UT_CMceNatStateWait::DoesAccept( TMceNatEventCode aEventCode ) + { + TMceNatStateTransitionEvent event( NULL, + *iNatSession, + aEventCode, + *iNatSession, + EMceInvite ); + return iState->Accept( event ); + } + + +// TEST TABLE + +EUNIT_BEGIN_TEST_TABLE( + UT_CMceNatStateWait, + "UT_CMceNatStateWait", + "UNIT" ) + +EUNIT_TEST( + "DoAcceptL - test ", + "CMceNatStateWait", + "AcceptL", + "FUNCTIONALITY", + SetupL, UT_CMceNatStateWait_AcceptLL, Teardown) + +EUNIT_TEST( + "EntryL - test ", + "CMceNatStateWait", + "EntryL", + "FUNCTIONALITY", + SetupL, UT_CMceNatStateWait_EntryLL, Teardown) + +EUNIT_TEST( + "ExitL - test ", + "CMceNatStateWait", + "ExitL", + "FUNCTIONALITY", + SetupL, UT_CMceNatStateWait_ExitLL, Teardown) + +EUNIT_END_TEST_TABLE + +// END OF FILE + +