diff -r ccd8e69b5392 -r 496ad160a278 mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaSipConnectionObserver.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaSipConnectionObserver.cpp Fri Jun 11 13:36:18 2010 +0300 @@ -0,0 +1,500 @@ +/* +* 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_CMusAvaSipConnectionObserver.h" +#include "muslogger.h" +#include "mussettings.inl" +#include "CSipSseTestTls.h" +#include "mussettingskeys.h" +#include "musavasipdefaulthandler.h" +#include "sipconnectionobserver.h" +#include "musavasipdefaulthandler.h" +#include "musavasipconnectionadapter.h" +#include "musavasettingsimp.h" +#include "musavaregisteravailability.h" +#include "musavasipprofileregistryobserver.h" +#include "musavasipadapterimp.h" +#include "musavasipconnectionobserver.h" +#include "musavacapabilitytesthelper.h" //remove compilation warning + +// EXTERNAL INCLUDES +#include +#include +//#include +#include +#include +#include + +// INTERNAL INCLUDES +#include "musavasipobserver.h" + + + +// CONSTRUCTION +UT_CMusAvaSipConnectionObserver* UT_CMusAvaSipConnectionObserver::NewL() + { + UT_CMusAvaSipConnectionObserver* self = UT_CMusAvaSipConnectionObserver::NewLC(); + CleanupStack::Pop(); + + return self; + } + +UT_CMusAvaSipConnectionObserver* UT_CMusAvaSipConnectionObserver::NewLC() + { + UT_CMusAvaSipConnectionObserver* self = new( ELeave ) UT_CMusAvaSipConnectionObserver(); + CleanupStack::PushL( self ); + + self->ConstructL(); + + return self; + } + +// Destructor (virtual by CBase) +UT_CMusAvaSipConnectionObserver::~UT_CMusAvaSipConnectionObserver() + { + } + +// Default constructor +UT_CMusAvaSipConnectionObserver::UT_CMusAvaSipConnectionObserver() + { + } + +// Second phase construct +void UT_CMusAvaSipConnectionObserver::ConstructL() + { + // The ConstructL from the base class CEUnitTestSuiteClass must be called. + // It generates the test case table. + CEUnitTestSuiteClass::ConstructL(); + } + +// METHODS + + + +void UT_CMusAvaSipConnectionObserver::SetupL( ) + { + SIPStrings::OpenL(); + iAdapterImp = CMusAvaSipAdapterImp::NewL(); + iAdapterImp2 = CMusAvaSipAdapterImp::NewL(); + iAdapterImp3 = CMusAvaSipAdapterImp::NewL(); + iMusAvaSipConnectionObserver = CMusAvaSipConnectionObserver::NewL(); + } + +void UT_CMusAvaSipConnectionObserver::Teardown( ) + { + delete iMusAvaSipConnectionObserver; + iMusAvaSipConnectionObserver = NULL; + delete iAdapterImp; + iAdapterImp = NULL; + delete iAdapterImp2; + iAdapterImp2 = NULL; + delete iAdapterImp3; + iAdapterImp3 = NULL; + SIPStrings::Close(); + } + +void UT_CMusAvaSipConnectionObserver::RemoveDefaultHandler() + { + TInt defaultHandlerIndex( iMusAvaSipConnectionObserver->iObservers.Count() - 1 ); + MMusAvaSipConnectionAdapter* defaultHandler = + iMusAvaSipConnectionObserver->iObservers[ defaultHandlerIndex ]; + iMusAvaSipConnectionObserver->iObservers.Remove( defaultHandlerIndex ); + delete iMusAvaSipConnectionObserver->iDefaultHandler; + iMusAvaSipConnectionObserver->iDefaultHandler = NULL; + } + +void UT_CMusAvaSipConnectionObserver::AddObserversL() + { + EUNIT_ASSERT( iMusAvaSipConnectionObserver->iObservers.Count() == 1 ); // default observer + iMusAvaSipConnectionObserver->AddObserverL( *iAdapterImp, KErrNotFound ); + EUNIT_ASSERT( iMusAvaSipConnectionObserver->iObservers.Count() == 2 ); + + } + +void UT_CMusAvaSipConnectionObserver::UT_CMusAvaSipConnectionObserver_AddObserverL() + { + EUNIT_ASSERT( iMusAvaSipConnectionObserver->iObservers.Count() == 1 ); // default observer + iMusAvaSipConnectionObserver->AddObserverL( *iAdapterImp, KErrNotFound ); + EUNIT_ASSERT( iMusAvaSipConnectionObserver->iObservers.Count() == 2 ); + + iMusAvaSipConnectionObserver->AddObserverL( *iAdapterImp, KErrNotFound ); + EUNIT_ASSERT( iMusAvaSipConnectionObserver->iObservers.Count() == 2 ); + + iMusAvaSipConnectionObserver->AddObserverL( *iAdapterImp2, 0 ); + EUNIT_ASSERT( iMusAvaSipConnectionObserver->iObservers.Count() == 3 ); + EUNIT_ASSERT( iMusAvaSipConnectionObserver->iObservers[0] == iAdapterImp2 ); + EUNIT_ASSERT( iMusAvaSipConnectionObserver->iObservers[1] == iAdapterImp ); + EUNIT_ASSERT( iMusAvaSipConnectionObserver->iObservers[2] != NULL ); + + iMusAvaSipConnectionObserver->iObservers.Remove(1); + iMusAvaSipConnectionObserver->iObservers.Remove(0); + EUNIT_ASSERT( iMusAvaSipConnectionObserver->iObservers[0] != iAdapterImp ); + EUNIT_ASSERT( iMusAvaSipConnectionObserver->iObservers[0] != iAdapterImp2 ); + EUNIT_ASSERT( iMusAvaSipConnectionObserver->iObservers[0] != NULL ); + + iMusAvaSipConnectionObserver->AddObserverL( *iAdapterImp, KErrNotFound ); // invite handler + iMusAvaSipConnectionObserver->AddObserverL( *iAdapterImp2, KErrNotFound ); // default option handler + iMusAvaSipConnectionObserver->AddObserverL( *iAdapterImp3, 1 ); // option handler + EUNIT_ASSERT( iMusAvaSipConnectionObserver->iObservers[0] == iAdapterImp ); + EUNIT_ASSERT( iMusAvaSipConnectionObserver->iObservers[1] == iAdapterImp3 ); + EUNIT_ASSERT( iMusAvaSipConnectionObserver->iObservers[2] == iAdapterImp2 ); + EUNIT_ASSERT( iMusAvaSipConnectionObserver->iObservers[3] != NULL ); + + iMusAvaSipConnectionObserver->iObservers.Remove(2); + EUNIT_ASSERT( iMusAvaSipConnectionObserver->iObservers.Count() == 3 ); + + iMusAvaSipConnectionObserver->AddObserverL( *iAdapterImp2, 10 ); + EUNIT_ASSERT( iMusAvaSipConnectionObserver->iObservers.Count() == 4 ); + + } + +void UT_CMusAvaSipConnectionObserver::UT_CMusAvaSipConnectionObserver_RemoveObserverL() + { + AddObserversL(); + iMusAvaSipConnectionObserver->RemoveObserver( *iAdapterImp ); + EUNIT_ASSERT( iMusAvaSipConnectionObserver->iObservers.Count() == 1 ); + iMusAvaSipConnectionObserver->RemoveObserver( *iAdapterImp ); + EUNIT_ASSERT( iMusAvaSipConnectionObserver->iObservers.Count() == 1 ); + } + +void UT_CMusAvaSipConnectionObserver::UT_CMusAvaSipConnectionObserver_ConnectionStateChangedL() + { + AddObserversL(); + + RemoveDefaultHandler(); + + iMusAvaSipConnectionObserver->ConnectionStateChanged( CSIPConnection::EActive ); + EUNIT_ASSERT( iAdapterImp->iState == CSIPConnection::EActive ); + + iAdapterImp->Reset(); + iAdapterImp->iReturnCode = KErrGeneral; + iMusAvaSipConnectionObserver->ConnectionStateChanged( CSIPConnection::EActive ); + EUNIT_ASSERT( iAdapterImp->iState != CSIPConnection::EActive ); + } + +void UT_CMusAvaSipConnectionObserver::UT_CMusAvaSipConnectionObserver_ErrorOccuredL() + { + AddObserversL(); + + RemoveDefaultHandler(); + + // ErrorOccured variant 1 + // + CSIPClientTransaction* clientTransaction = + CSIPClientTransaction::NewL( SIPStrings::StringF( SipStrConsts::EOptions ) ); + CleanupStack::PushL( clientTransaction ); + TInt regBindingFake( 3 ); + CSIPRegistrationBinding* regBinding = reinterpret_cast( ®BindingFake ); + iMusAvaSipConnectionObserver->ErrorOccured( KErrNotFound, *clientTransaction, *regBinding ); + EUNIT_ASSERT( iAdapterImp->iError == KErrNotFound ); + EUNIT_ASSERT( iAdapterImp->iClientTransaction == clientTransaction ); + EUNIT_ASSERT( iAdapterImp->iRegBinding == regBinding ); + + iAdapterImp->Reset(); + iAdapterImp->iReturnCode = KErrGeneral; + iMusAvaSipConnectionObserver->ErrorOccured( KErrNotFound, *clientTransaction, *regBinding ); + EUNIT_ASSERT( iAdapterImp->iError == KErrNone ); + + // ErrorOccured variant 2 + // + iAdapterImp->Reset(); + CSIPServerTransaction* serverTransaction = + CSIPServerTransaction::NewL( SIPStrings::StringF( SipStrConsts::EOptions ) ); + CleanupStack::PushL( serverTransaction ); + TInt dialogAssocFake( 4 ); + CSIPInviteDialogAssoc* dialogAssoc = reinterpret_cast( &dialogAssocFake ); + iMusAvaSipConnectionObserver->ErrorOccured( KErrNotFound, *dialogAssoc ); + EUNIT_ASSERT( iAdapterImp->iError == KErrNotFound ); + EUNIT_ASSERT( iAdapterImp->iDialogAssoc == dialogAssoc ); + + iAdapterImp->Reset(); + iAdapterImp->iReturnCode = KErrGeneral; + iMusAvaSipConnectionObserver->ErrorOccured( KErrNotFound, *dialogAssoc ); + EUNIT_ASSERT( iAdapterImp->iError == KErrNone ); + + // ErrorOccured variant 3 + // + iAdapterImp->Reset(); + TInt refreshFake( 5 ); + CSIPRefresh* refresh = reinterpret_cast( &refreshFake ); + iMusAvaSipConnectionObserver->ErrorOccured( KErrNotFound, *refresh ); + EUNIT_ASSERT( iAdapterImp->iError == KErrNotFound ); + EUNIT_ASSERT( iAdapterImp->iRefresh == refresh ); + + iAdapterImp->Reset(); + iAdapterImp->iReturnCode = KErrGeneral; + iMusAvaSipConnectionObserver->ErrorOccured( KErrNotFound, *refresh ); + EUNIT_ASSERT( iAdapterImp->iError == KErrNone ); + + // ErrorOccured variant 4 + // + iAdapterImp->Reset(); + iMusAvaSipConnectionObserver->ErrorOccured( KErrNotFound, *regBinding ); + EUNIT_ASSERT( iAdapterImp->iError == KErrNotFound ); + EUNIT_ASSERT( iAdapterImp->iRegBinding == regBinding ); + + iAdapterImp->Reset(); + iAdapterImp->iReturnCode = KErrGeneral; + iMusAvaSipConnectionObserver->ErrorOccured( KErrNotFound, *regBinding ); + EUNIT_ASSERT( iAdapterImp->iError == KErrNone ); + + // ErrorOccured variant 5 + // + iAdapterImp->Reset(); + iMusAvaSipConnectionObserver->ErrorOccured( KErrNotFound, *clientTransaction ); + EUNIT_ASSERT( iAdapterImp->iError == KErrNotFound ); + EUNIT_ASSERT( iAdapterImp->iTransaction == clientTransaction ); + + iAdapterImp->Reset(); + iAdapterImp->iReturnCode = KErrGeneral; + iMusAvaSipConnectionObserver->ErrorOccured( KErrNotFound, *clientTransaction ); + EUNIT_ASSERT( iAdapterImp->iError == KErrNone ); + + // ErrorOccured variant 6 + // + iAdapterImp->Reset(); + iMusAvaSipConnectionObserver->ErrorOccured( KErrNotFound, *clientTransaction, *dialogAssoc ); + EUNIT_ASSERT( iAdapterImp->iError == KErrNotFound ); + EUNIT_ASSERT( iAdapterImp->iTransaction == clientTransaction ); + EUNIT_ASSERT( iAdapterImp->iDialogAssoc == dialogAssoc ); + + iAdapterImp->Reset(); + iAdapterImp->iReturnCode = KErrGeneral; + iMusAvaSipConnectionObserver->ErrorOccured( KErrNotFound, *clientTransaction, *dialogAssoc ); + EUNIT_ASSERT( iAdapterImp->iError == KErrNone ); + + CleanupStack::PopAndDestroy( serverTransaction ); + CleanupStack::PopAndDestroy( clientTransaction ); + } + +void UT_CMusAvaSipConnectionObserver::UT_CMusAvaSipConnectionObserver_IncomingRequestL() + { + AddObserversL(); + + RemoveDefaultHandler(); + + // Variant 1 + // + CSIPServerTransaction* serverTransaction = + CSIPServerTransaction::NewL( SIPStrings::StringF( SipStrConsts::EOptions ) ); + + iMusAvaSipConnectionObserver->IncomingRequest( serverTransaction ); + EUNIT_ASSERT( iAdapterImp->iServerTransaction == serverTransaction ); + + serverTransaction = NULL; + serverTransaction = + CSIPServerTransaction::NewL( SIPStrings::StringF( SipStrConsts::EOptions ) ); + iAdapterImp->Reset(); + iAdapterImp->iReturnCode = KErrGeneral; + iMusAvaSipConnectionObserver->IncomingRequest( serverTransaction ); + EUNIT_ASSERT( iAdapterImp->iServerTransaction == NULL ); + delete serverTransaction; + + // Variant 2 + // + serverTransaction = NULL; + serverTransaction = + CSIPServerTransaction::NewL( SIPStrings::StringF( SipStrConsts::EOptions ) ); + iAdapterImp->Reset(); + TInt dialogFake( 4 ); + CSIPDialog* dialog = reinterpret_cast( &dialogFake ); + iMusAvaSipConnectionObserver->IncomingRequest( serverTransaction, *dialog ); + EUNIT_ASSERT( iAdapterImp->iServerTransaction == serverTransaction ); + EUNIT_ASSERT( iAdapterImp->iDialog == dialog ); + + serverTransaction = NULL; + serverTransaction = + CSIPServerTransaction::NewL( SIPStrings::StringF( SipStrConsts::EOptions ) ); + iAdapterImp->Reset(); + iAdapterImp->iReturnCode = KErrGeneral; + iMusAvaSipConnectionObserver->IncomingRequest( serverTransaction, *dialog ); + EUNIT_ASSERT( iAdapterImp->iServerTransaction == NULL ); + delete serverTransaction; + } + +void UT_CMusAvaSipConnectionObserver::UT_CMusAvaSipConnectionObserver_IncomingResponseL() + { + AddObserversL(); + + RemoveDefaultHandler(); + + // Variant 1 + // + CSIPClientTransaction* clientTransaction = + CSIPClientTransaction::NewL( SIPStrings::StringF( SipStrConsts::EOptions ) ); + CleanupStack::PushL( clientTransaction ); + iMusAvaSipConnectionObserver->IncomingResponse( *clientTransaction ); + EUNIT_ASSERT( iAdapterImp->iClientTransaction == clientTransaction ); + + iAdapterImp->Reset(); + iAdapterImp->iReturnCode = KErrGeneral; + iMusAvaSipConnectionObserver->IncomingResponse( *clientTransaction ); + EUNIT_ASSERT( iAdapterImp->iClientTransaction == NULL ); + + // Variant 2 + // + iAdapterImp->Reset(); + TInt dialogAssocFake( 4 ); + CSIPInviteDialogAssoc* dialogAssoc = reinterpret_cast( &dialogAssocFake ); + iMusAvaSipConnectionObserver->IncomingResponse( *clientTransaction, *dialogAssoc ); + EUNIT_ASSERT( iAdapterImp->iClientTransaction == clientTransaction ); + EUNIT_ASSERT( iAdapterImp->iDialogAssoc == dialogAssoc ); + + iAdapterImp->Reset(); + iAdapterImp->iReturnCode = KErrGeneral; + iMusAvaSipConnectionObserver->IncomingResponse( *clientTransaction, *dialogAssoc ); + EUNIT_ASSERT( iAdapterImp->iClientTransaction == NULL ); + + // Variant 3 + // + iAdapterImp->Reset(); + iMusAvaSipConnectionObserver->IncomingResponse( *clientTransaction, NULL ); + EUNIT_ASSERT( iAdapterImp->iClientTransaction == clientTransaction ); + EUNIT_ASSERT( iAdapterImp->iInviteAssoc == NULL ); + + iAdapterImp->Reset(); + iAdapterImp->iReturnCode = KErrGeneral; + iMusAvaSipConnectionObserver->IncomingResponse( *clientTransaction, NULL ); + EUNIT_ASSERT( iAdapterImp->iClientTransaction == NULL ); + + // Variant 4 + // + iAdapterImp->Reset(); + TInt regBindingFake( 3 ); + CSIPRegistrationBinding* regBinding = reinterpret_cast( ®BindingFake ); + iMusAvaSipConnectionObserver->IncomingResponse( *clientTransaction, *regBinding ); + EUNIT_ASSERT( iAdapterImp->iClientTransaction == clientTransaction ); + EUNIT_ASSERT( iAdapterImp->iRegBinding == regBinding ); + + iAdapterImp->Reset(); + iAdapterImp->iReturnCode = KErrGeneral; + iMusAvaSipConnectionObserver->IncomingResponse( *clientTransaction, *regBinding ); + EUNIT_ASSERT( iAdapterImp->iClientTransaction == NULL ); + + CleanupStack::PopAndDestroy( clientTransaction ); + } + +void UT_CMusAvaSipConnectionObserver::UT_CMusAvaSipConnectionObserver_InviteCanceledL() + { + AddObserversL(); + + RemoveDefaultHandler(); + + CSIPServerTransaction* serverTransaction = + CSIPServerTransaction::NewL( SIPStrings::StringF( SipStrConsts::EOptions ) ); + CleanupStack::PushL( serverTransaction ); + + iMusAvaSipConnectionObserver->InviteCanceled( *serverTransaction ); + EUNIT_ASSERT( iAdapterImp->iServerTransaction == serverTransaction ); + + iAdapterImp->Reset(); + iAdapterImp->iReturnCode = KErrGeneral; + iMusAvaSipConnectionObserver->InviteCanceled( *serverTransaction ); + EUNIT_ASSERT( iAdapterImp->iServerTransaction == NULL ); + + CleanupStack::PopAndDestroy( serverTransaction ); + } + +void UT_CMusAvaSipConnectionObserver::UT_CMusAvaSipConnectionObserver_InviteCompletedL() + { + AddObserversL(); + + RemoveDefaultHandler(); + + CSIPClientTransaction* clientTransaction = + CSIPClientTransaction::NewL( SIPStrings::StringF( SipStrConsts::EOptions ) ); + CleanupStack::PushL( clientTransaction ); + + iMusAvaSipConnectionObserver->InviteCompleted( *clientTransaction ); + EUNIT_ASSERT( iAdapterImp->iClientTransaction == clientTransaction ); + + iAdapterImp->Reset(); + iAdapterImp->iReturnCode = KErrGeneral; + iMusAvaSipConnectionObserver->InviteCompleted( *clientTransaction ); + EUNIT_ASSERT( iAdapterImp->iClientTransaction == NULL ); + + CleanupStack::PopAndDestroy( clientTransaction ); + } + +// TEST TABLE + +EUNIT_BEGIN_TEST_TABLE( + UT_CMusAvaSipConnectionObserver, + "CMusAvaSipConnectionObserver", + "UNIT" ) + +EUNIT_TEST( + "AddObserverL - test ", + "CMusAvaSipConnectionObserver", + "AddObserverL", + "FUNCTIONALITY", + SetupL, UT_CMusAvaSipConnectionObserver_AddObserverL, Teardown) + +EUNIT_TEST( + "RemoveObserverL - test ", + "CMusAvaSipConnectionObserver", + "RemoveObserverL", + "FUNCTIONALITY", + SetupL, UT_CMusAvaSipConnectionObserver_RemoveObserverL, Teardown) + +EUNIT_TEST( + "ConnectionStateChangedL - test ", + "CMusAvaSipConnectionObserver", + "ConnectionStateChangedL", + "FUNCTIONALITY", + SetupL, UT_CMusAvaSipConnectionObserver_ConnectionStateChangedL, Teardown) + +EUNIT_TEST( + "ErrorOccuredL - test ", + "CMusAvaSipConnectionObserver", + "ErrorOccuredL", + "FUNCTIONALITY", + SetupL, UT_CMusAvaSipConnectionObserver_ErrorOccuredL, Teardown) + +EUNIT_TEST( + "IncomingRequestL - test ", + "CMusAvaSipConnectionObserver", + "IncomingRequestL", + "FUNCTIONALITY", + SetupL, UT_CMusAvaSipConnectionObserver_IncomingRequestL, Teardown) + +EUNIT_TEST( + "IncomingResponseL - test ", + "CMusAvaSipConnectionObserver", + "IncomingResponseL", + "FUNCTIONALITY", + SetupL, UT_CMusAvaSipConnectionObserver_IncomingResponseL, Teardown) + +EUNIT_TEST( + "InviteCanceledL - test ", + "CMusAvaSipConnectionObserver", + "InviteCanceledL", + "FUNCTIONALITY", + SetupL, UT_CMusAvaSipConnectionObserver_InviteCanceledL, Teardown) + +EUNIT_TEST( + "InviteCompletedL - test ", + "CMusAvaSipConnectionObserver", + "InviteCompletedL", + "FUNCTIONALITY", + SetupL, UT_CMusAvaSipConnectionObserver_InviteCompletedL, Teardown) + +EUNIT_END_TEST_TABLE + +// END OF FILE