multimediacommsengine/mmcesrv/mmceserver/tsrc/ut_server/src/UT_CMceNatStateWait.cpp
changeset 0 1bce908db942
child 14 5bf83dc720b3
--- /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 <digia/eunit/eunitmacros.h>
+
+
+//  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 <user2@host>") );
+	params->AppendL( _L8("User <user@host>") );
+    
+    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<CMceSipSession*>
+	   	((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
+
+