--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaOptionHandler.cpp Thu Dec 17 08:44:37 2009 +0200
@@ -0,0 +1,401 @@
+/*
+* 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 "sipprofile.h"
+#include "UT_CMusAvaOptionHandler.h"
+
+// EXTERNAL INCLUDES
+#include <digia/eunit/eunitmacros.h>
+#include <digia/eunit/eunitdecorators.h>
+#include <EscapeUtils.h>
+#include <sipstrings.h>
+#include <sipstrconsts.h>
+#include <stringpool.h>
+#include <sipservertransaction.h>
+#include <siptransactionbase.h>
+// INTERNAL INCLUDES
+#include "musavaoptionhandler.h"
+#include "musavaavailabilityobserver.h"
+#include "musavaavailabilityobserverimp.h"
+#include "musavasettingsimp.h"
+#include "musavaobserverimp.h"
+#include "muslogger.h"
+#include "musavasharedobject.h"
+#include "mussettingskeys.h"
+#include "mussettings.h"
+#include "musavasip.h"
+#include "CSipSseTestTls.h"
+#include "musavacapabilitytesthelper.h"
+
+
+// CONSTRUCTION
+UT_CMusAvaOptionHandler* UT_CMusAvaOptionHandler::NewL()
+ {
+ UT_CMusAvaOptionHandler* self = UT_CMusAvaOptionHandler::NewLC();
+ CleanupStack::Pop();
+
+ return self;
+ }
+
+UT_CMusAvaOptionHandler* UT_CMusAvaOptionHandler::NewLC()
+ {
+ UT_CMusAvaOptionHandler* self = new( ELeave ) UT_CMusAvaOptionHandler();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+
+ return self;
+ }
+
+// Destructor (virtual by CBase)
+UT_CMusAvaOptionHandler::~UT_CMusAvaOptionHandler()
+ {
+ }
+
+// Default constructor
+UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler()
+ {
+ }
+
+// Second phase construct
+void UT_CMusAvaOptionHandler::ConstructL()
+ {
+ // The ConstructL from the base class CEUnitTestSuiteClass must be called.
+ // It generates the test case table.
+ CEUnitTestSuiteClass::ConstructL();
+ }
+
+// METHODS
+
+void UT_CMusAvaOptionHandler::SetupL( )
+ {
+ iSharedObject = CMusAvaSharedObject::GetSingletonL();
+ iAvailabilityObserver = CMusAvaAvailabilityObserverImp::NewL();
+ iConcreteSettings = CMusAvaSettingsImp::NewL();
+ iOptionHandler = CMusAvaOptionHandler::NewL( *iAvailabilityObserver,
+ *iConcreteSettings );
+
+ MSIPConnectionObserver& connectionObserver =
+ iSharedObject->MusAvaSip().ConnectionObserver();
+ CSIP& sip = iSharedObject->MusAvaSip().Sip();
+ CSipSseTestTls::OpenL();
+ iStorage = CSipSseTestTls::Storage();
+ iSharedObject->MusAvaSip().CreateProfileL();
+ iProfile = iSharedObject->MusAvaSip().Profile();
+ iSharedObject->MusAvaSip().ConnectionL( );
+
+ if ( !iProfile->iArray )
+ {
+ iProfile->iArray = new ( ELeave ) CDesC8ArrayFlat( 1 );
+ iProfile->iArray->AppendL( _L8("sip:user@domain.com") );
+ }
+ if ( !iProfile->iRegisteredContact )
+ {
+ iProfile->iRegisteredContact = KRegisteredContact().AllocL();
+ }
+
+ MultimediaSharingSettings::SetCapabilityQuerySettingL(
+ MusSettingsKeys::ESequential );
+ }
+
+void UT_CMusAvaOptionHandler::Teardown( )
+ {
+ CMusAvaSharedObject::DeleteSingleton();
+ delete iAvailabilityObserver;
+ delete iConcreteSettings;
+ if ( iStorage )
+ {
+ iStorage->Clear();
+ CSipSseTestTls::Close();
+ iStorage = NULL;
+ }
+ delete iOptionHandler;
+ }
+
+void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_NewLL( )
+ {
+ EUNIT_ASSERT( iOptionHandler );
+ EUNIT_ASSERT( iOptionHandler->State() ==
+ MMusAvaObserver::EMusAvaStatusNotExecuted );
+ }
+
+void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_DoExecuteLL()
+ {
+ // test for B-party && Cingular variant
+ iOptionHandler->iSettings.SetCallDirection( 2 );
+ MultimediaSharingSettings::SetOperatorVariantSettingL(
+ MusSettingsKeys::EOperatorSpecific );
+ iOptionHandler->DoExecuteL();
+ EUNIT_ASSERT( iOptionHandler->State() ==
+ MMusAvaObserver::EMusAvaStatusOptionsNotSent );
+ iOptionHandler->iSettings.SetCallDirection( 1 );
+ MultimediaSharingSettings::SetOperatorVariantSettingL(
+ MusSettingsKeys::EStandard );
+
+ // usual case
+ TBufC16<16> str(KCapabilityTestSIPAddressUri_B);
+ HBufC16* ptr;
+ ptr = str.AllocLC();
+ CDesCArrayFlat* sipAddress = new( ELeave ) CDesCArrayFlat( 1 );
+ CleanupStack::PushL( sipAddress );
+ sipAddress->AppendL( *ptr );
+ iOptionHandler->iSettings.SetSipAddressesL( *sipAddress );
+ sipAddress->Reset();
+ CleanupStack::PopAndDestroy( sipAddress );
+ CleanupStack::PopAndDestroy(); //ptr
+
+ MultimediaSharingSettings::SetCapabilityQuerySettingL(
+ MusSettingsKeys::ESequential );
+ EUNIT_ASSERT( iSharedObject->MusAvaSip().CreateProfileL() == ETrue );
+ MultimediaSharingSettings::SetSipProfileSettingL( 1 );
+ TRAPD( error, iOptionHandler->DoExecuteL() );
+ TInt count = 0;
+ EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+ EUNIT_ASSERT( error == KErrNoMemory || error == KErrNone );
+ if ( error == KErrNoMemory ) User::Leave( error );
+
+ if ( count > 0 )
+ {
+ EUNIT_ASSERT( iOptionHandler->State() ==
+ MMusAvaObserver::EMusAvaOptionNotAvailable );
+ }
+ else
+ {
+ EUNIT_ASSERT( iOptionHandler->State() ==
+ MMusAvaObserver::EMusAvaStatusOptionsSent );
+
+ EUNIT_ASSERT( iStorage->iClientRequest->Method() ==
+ SIPStrings::StringF( SipStrConsts::EOptions ) );
+
+ EUNIT_ASSERT(
+ iStorage->iClientRequest->MessageElements().Content().Length() > 0 );
+ EUNIT_ASSERT( iStorage->iClientRequest->MessageElements().ContentType() );
+ EUNIT_ASSERT( iStorage->iClientRequest->RemoteUri().Uri().UriDes().Compare(
+ KCapabilityTestSIPAddressUri8_B ) == 0);
+ EUNIT_ASSERT( iStorage->iClientRequest->MessageElements().UserHeaders().
+ Count() == 6 );
+ MUS_HEADER_ASSERT( iStorage->iClientRequest,
+ 0,
+ KCapabilityTestAcceptContactHeader );
+ MUS_HEADER_ASSERT( iStorage->iClientRequest,
+ 5,
+ KCapabilityTestContactHeader_A1Updated );
+ }
+
+ // when needed sip profile and not registered yet. means sip connection is still
+ // null
+ MultimediaSharingSettings::SetCapabilityQuerySettingL(
+ MusSettingsKeys::ESequential );
+ EUNIT_ASSERT( iSharedObject->MusAvaSip().CreateProfileL() == ETrue );
+ MultimediaSharingSettings::SetSipProfileSettingL( 1 );
+ iSharedObject->MusAvaSip().ConnectionL(EFalse);
+
+ delete iSharedObject->MusAvaSip().iSipConnection;
+ iSharedObject->MusAvaSip().iSipConnection = NULL;
+
+ iOptionHandler->SetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent );
+
+ iOptionHandler->DoExecuteL();
+ EUNIT_ASSERT( iOptionHandler->State() ==
+ MMusAvaObserver::EMusAvaStatusNotExecuted );
+ }
+
+void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_NameL()
+ {
+ EUNIT_ASSERT( iOptionHandler->Name() ==
+ MMusAvaObserver::EMusAvaOptionHandler );
+ }
+
+
+void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_StatusL()
+ {
+ EUNIT_ASSERT( iOptionHandler->State() ==
+ MMusAvaObserver::EMusAvaStatusNotExecuted );
+ }
+
+void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_StopL()
+ {
+ iOptionHandler->Stop();
+ }
+
+void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_CapabilitiesResolvedL()
+ {
+ _LIT( KSipAddress , "b@foobar.com" );
+ _LIT( KSipAddressA , "a@foobar.com" );
+ _LIT( KEmpty, "" );
+
+ EUNIT_ASSERT( iOptionHandler->State() ==
+ MMusAvaObserver::EMusAvaStatusNotExecuted );
+ iOptionHandler->CapabilitiesResolvedL( KEmpty );
+ EUNIT_ASSERT( iOptionHandler->iSettings.SipAddresses().MdcaCount() == 0 );
+ EUNIT_ASSERT( iOptionHandler->State() ==
+ MMusAvaObserver::EMusAvaStatusNotExecuted );
+
+ iOptionHandler->iState = MMusAvaObserver::EMusAvaStatusNotExecuted;
+ iOptionHandler->CapabilitiesResolvedL( KSipAddress );
+ EUNIT_ASSERT( iOptionHandler->iSettings.SipAddresses().MdcaPoint( 0 ).
+ Compare( KSipAddress() ) == KErrNone );
+ EUNIT_ASSERT( iOptionHandler->State() ==
+ MMusAvaObserver::EMusAvaStatusNotExecuted );
+
+ iOptionHandler->CapabilitiesResolvedL( KSipAddressA );
+ EUNIT_ASSERT( iOptionHandler->iSettings.SipAddresses().MdcaPoint( 0 ).
+ Compare( KSipAddressA() ) == KErrNone );
+
+ EUNIT_ASSERT( iOptionHandler->State() ==
+ MMusAvaObserver::EMusAvaStatusNotExecuted );
+ }
+
+void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_CapabilitiesResolvedForCingularL()
+ {
+ EUNIT_ASSERT( iOptionHandler->CapabilitiesResolvedForCingular() == EFalse );
+ iOptionHandler->SetCapabilitiesResolvedForCingular();
+ EUNIT_ASSERT( iOptionHandler->CapabilitiesResolvedForCingular() == ETrue );
+ }
+
+void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_SipHeadersL()
+ {
+ CDesCArrayFlat* headers = new( ELeave ) CDesCArrayFlat( 1 );
+ CleanupStack::PushL(headers);
+ headers->AppendL(_L("sip:test1@10.21.32.51"));
+ iOptionHandler->SipHeadersL(*headers,SipStrConsts::EToHeader);
+ EUNIT_ASSERT( iOptionHandler->iSettings.SipAddresses().MdcaCount()==1 );
+
+ _LIT( KPAssertedIdentityTelNumber, "+4455667788");
+ headers->Reset();
+ headers->AppendL(KPAssertedIdentity_B_16);
+ headers->AppendL(KPAssertedIdentity_B1_16);
+ iOptionHandler->SipHeadersL(*headers,SipStrConsts::EToHeader);
+ EUNIT_ASSERT( iOptionHandler->iSettings.SipAddresses().MdcaCount()==1 );
+ EUNIT_ASSERT( iOptionHandler->iSettings.SipAddresses().MdcaPoint( 0 ).Compare(
+ KPAssertedIdentity_B_16() ) == KErrNone );
+ EUNIT_ASSERT( iOptionHandler->iSettings.TelNumber().Compare(
+ KPAssertedIdentityTelNumber ) == 0 );
+
+ headers->Reset();
+ iOptionHandler->SipHeadersL(*headers,SipStrConsts::EToHeader);
+ EUNIT_ASSERT( iOptionHandler->iSettings.SipAddresses().MdcaCount()==0 );
+
+ headers->Reset();
+ headers->AppendL(_L("sip:test1@10.21.32.51"));
+ iOptionHandler->SipHeadersL(*headers,SipStrConsts::EFromHeader);
+ EUNIT_ASSERT( iOptionHandler->iSettings.SipAddresses().MdcaCount()==0 );
+
+ CleanupStack::PopAndDestroy(headers);
+
+
+ }
+
+void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_VideoCodecsResolvedLL()
+ {
+ _LIT16( KVideoCodec , "H.264" );
+ TBufC16<16> str(KVideoCodec);
+ HBufC16* ptr;
+ ptr = str.AllocLC();
+
+ CDesCArrayFlat* videoCodecs = new( ELeave ) CDesCArrayFlat( 1 );
+ CleanupStack::PushL( videoCodecs );
+
+ videoCodecs->AppendL( *ptr );
+ iOptionHandler->VideoCodecsResolvedL( *videoCodecs );
+ EUNIT_ASSERT ( iOptionHandler->iSettings.iVideoCodecs->MdcaCount() > KErrNone );
+ EUNIT_ASSERT ( iOptionHandler->iSettings.iVideoCodecs->MdcaPoint(0).Compare ( *ptr ) == 0 );
+
+ videoCodecs->Reset();
+ CleanupStack::PopAndDestroy( videoCodecs );
+ CleanupStack::PopAndDestroy();
+
+ }
+
+// TEST TABLE
+
+EUNIT_BEGIN_TEST_TABLE(
+ UT_CMusAvaOptionHandler,
+ "CMusAvaOptionHandler",
+ "UNIT" )
+
+EUNIT_TEST(
+ "NewL - test ",
+ "CMusAvaOptionHandler",
+ "NewL",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaOptionHandler_NewLL, Teardown)
+
+EUNIT_TEST(
+ "DoExecuteL - test ",
+ "CMusAvaOptionHandler",
+ "DoExecuteL",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaOptionHandler_DoExecuteLL, Teardown)
+
+EUNIT_TEST(
+ "Name - test ",
+ "CMusAvaOptionHandler",
+ "Name",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaOptionHandler_NameL, Teardown)
+
+
+EUNIT_TEST(
+ "Status - test ",
+ "CMusAvaOptionHandler",
+ "Status",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaOptionHandler_StatusL, Teardown)
+
+EUNIT_TEST(
+ "Stop - test ",
+ "CMusAvaOptionHandler",
+ "Stop",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaOptionHandler_StopL, Teardown)
+
+EUNIT_TEST(
+ "CapabilitiesResolved - test ",
+ "CMusAvaOptionHandler",
+ "CapabilitiesResolved",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaOptionHandler_CapabilitiesResolvedL, Teardown)
+
+EUNIT_TEST(
+ "CapabilitiesResolvedForCingular - test ",
+ "CMusAvaOptionHandler",
+ "CapabilitiesResolvedForCingular",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaOptionHandler_CapabilitiesResolvedForCingularL,
+ Teardown)
+
+EUNIT_TEST(
+ "SipHeadersL - test ",
+ "CMusAvaOptionHandler",
+ "SipHeadersL",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaOptionHandler_SipHeadersL,
+ Teardown)
+
+EUNIT_TEST(
+ "VideoCodecsResolvedL - test ",
+ "CMusAvaOptionHandler",
+ "VideoCodecsResolvedL",
+ "FUNCTIONALITY",
+ SetupL,UT_CMusAvaOptionHandler_VideoCodecsResolvedLL,
+ Teardown)
+
+EUNIT_END_TEST_TABLE
+
+// END OF FILE