mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaConnectionAvailability.cpp
changeset 22 496ad160a278
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshavailability/tsrc/ut_availability/src/UT_CMusAvaConnectionAvailability.cpp	Fri Jun 11 13:36:18 2010 +0300
@@ -0,0 +1,951 @@
+/*
+* 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_CMusAvaConnectionAvailability.h"
+#include "musavaavailabilityobserver.h"
+#include "musavaavailabilityobserverimp.h"
+#include "musavaavailability.h"
+#include "muslogger.h"
+#include "musavaobserver.h"
+#include "musavaobserverimp.h"
+#include "musavadefaultimp.h"
+#include "musavaobserverimp.h"
+#include "musavasettingsimp.h"
+#include "musavaconnectionmonitor.h"
+#include "musavasharedobject.h"
+#include "musavasip.h"
+#include "mussettingskeys.h"
+#include "mussettings.h"
+#include "CSipSseTestTls.h"
+#include "musavanetworkregistrationstatus.h"
+#include "musavacapabilitytesthelper.h" //remove compilation warning
+
+
+//  EXTERNAL INCLUDES
+#include <digia/eunit/eunitmacros.h>
+#include <e32base.h>
+//#include <telephonyinternalpskeys.h>
+#include <etelmm.h>
+#include <rconnmon.h>
+#include <nifvar.h>
+#include <sipstrings.h>
+#include <sipstrconsts.h>
+#include <digia/eunit/eunitdecorators.h>
+
+
+//  INTERNAL INCLUDES
+#include "musavaconnectionavailability.h"
+
+
+
+// CONSTRUCTION
+UT_CMusAvaConnectionAvailability* UT_CMusAvaConnectionAvailability::NewL()
+    {
+    UT_CMusAvaConnectionAvailability* self = UT_CMusAvaConnectionAvailability::NewLC(); 
+    CleanupStack::Pop();
+
+    return self;
+    }
+
+UT_CMusAvaConnectionAvailability* UT_CMusAvaConnectionAvailability::NewLC()
+    {
+    UT_CMusAvaConnectionAvailability* self = new( ELeave ) UT_CMusAvaConnectionAvailability();
+    CleanupStack::PushL( self );
+
+	self->ConstructL(); 
+
+    return self;
+    }
+
+// Destructor (virtual by CBase)
+UT_CMusAvaConnectionAvailability::~UT_CMusAvaConnectionAvailability()
+    {
+    }
+
+// Default constructor
+UT_CMusAvaConnectionAvailability::UT_CMusAvaConnectionAvailability()
+    {
+    }
+
+// Second phase construct
+void UT_CMusAvaConnectionAvailability::ConstructL()
+    {
+    // The ConstructL from the base class CEUnitTestSuiteClass must be called.
+    // It generates the test case table.
+    CEUnitTestSuiteClass::ConstructL();
+    }
+
+//  METHODS
+
+
+
+void UT_CMusAvaConnectionAvailability::SetupL(  )
+    {
+    SIPStrings::OpenL();
+    CSipSseTestTls::OpenL();
+    iProfileId = MultimediaSharingSettings::SipProfileSettingL();    
+    iStorage = CSipSseTestTls::Storage();
+    iAvailabilityObserver = CMusAvaAvailabilityObserverImp::NewL();
+    iConcreteSettings = CMusAvaSettingsImp::NewL();
+    iConnectionAvailability  = 
+    CMusAvaConnectionAvailability::NewL( *iAvailabilityObserver, *iConcreteSettings );
+                                    
+    iSharedObject = CMusAvaSharedObject::GetSingletonL();	
+    } 
+
+void UT_CMusAvaConnectionAvailability::Teardown(  )
+    {
+    delete iAvailabilityObserver;
+    iAvailabilityObserver = NULL;
+    delete iConcreteSettings;
+    iConcreteSettings = NULL;
+    delete iConnectionAvailability;
+    iConnectionAvailability = NULL;
+  
+    if ( iStorage )
+        {
+        iStorage->Clear();
+        CSipSseTestTls::Close();
+        iStorage = NULL;
+        }
+    CMusAvaSharedObject::DeleteSingleton();
+    SIPStrings::Close();
+    } 
+
+void UT_CMusAvaConnectionAvailability::UT_CMusAvaConnectionAvailability_NewLL()
+    {
+    EUNIT_ASSERT( iConnectionAvailability );
+    }  
+
+void UT_CMusAvaConnectionAvailability::UT_CMusAvaConnectionAvailability_DoExecuteLL()
+    {
+	// Test: VS is allowed in All Netwoks by Default. 
+
+	// Test1: VS in 3G Always Allowed. 
+	TInt error = KErrArgument;
+	TInt count = KErrNone;
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
+    TRAP( error, iConnectionAvailability->DoExecuteL() );
+    if ( error == KErrNoMemory ) User::Leave( error );
+    EUNIT_ASSERT ( error == KErrNone );
+
+    EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+    if ( count > 0 && iConnectionAvailability->State() 
+        == MMusAvaObserver::EMusActivationError )
+        {
+        User::Leave( KErrNoMemory );
+        }
+    EUNIT_ASSERT( iConnectionAvailability->State() ==  MMusAvaObserver::EMusAvaStatusAvailable );
+
+
+	//Test2 : VS is even allowed when Network type is Unknown
+	iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeUnknown );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+    CMusAvaConnectionMonitor& avaConnectionMonitor = iSharedObject->ConnectionMonitor();
+    avaConnectionMonitor.iConnectionMonitor.iConnectionId = 1; 
+    avaConnectionMonitor.iConnectionMonitor.iConnectionCounter = 1;
+    avaConnectionMonitor.iConnectionMonitor.iUintAttributeValue = 1;
+    avaConnectionMonitor.iConnectionMonitor.iConnectionInfoError = KErrNone;    
+    
+    //EUNIT_DISABLE_ALLOC_DECORATOR;
+    
+    TRAP( error, iConnectionAvailability->DoExecuteL() );
+    if ( error == KErrNoMemory ) User::Leave( error );
+    
+    //EUNIT_DISABLE_ALLOC_DECORATOR;
+    
+    EUNIT_ASSERT ( error == KErrNone );
+    EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+    
+    //HKK Define own error condition in which it can fil. 
+    
+    
+    if ( count > 0 && ( iConnectionAvailability->State() 
+        == MMusAvaObserver::EMusActivationError) ||
+        (iConnectionAvailability->State() == MMusAvaObserver::EMusAvaNetworkType ))
+        {
+        User::Leave( KErrNoMemory );
+        }
+    EUNIT_ASSERT( iConnectionAvailability->State() ==  MMusAvaObserver::EMusAvaStatusAvailable );
+	
+	// Test3: VS in GSM Network is Allowed Ensure, PDP Context Need to be up to ensure network does 
+	// support data connection; Note DTM Flag is not needed anymore since VS is allowed in all network. 
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeGsm );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
+    
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+    avaConnectionMonitor.iConnectionMonitor.iConnectionId = 1; 
+    avaConnectionMonitor.iConnectionMonitor.iConnectionCounter = 1;
+    avaConnectionMonitor.iConnectionMonitor.iUintAttributeValue = 1;
+    avaConnectionMonitor.iConnectionMonitor.iConnectionInfoError = KErrNone;    
+    TRAP( error, iConnectionAvailability->DoExecuteL() );
+    if ( error == KErrNoMemory ) User::Leave( error );
+    EUNIT_ASSERT ( error == KErrNone );
+    EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+    if ( count > 0 && ( iConnectionAvailability->State() 
+        == MMusAvaObserver::EMusActivationError ) ||
+        (iConnectionAvailability->State() == MMusAvaObserver::EMusAvaNetworkType ))
+        
+        {
+        User::Leave( KErrNoMemory );
+        }
+    EUNIT_ASSERT( iConnectionAvailability->State() ==  MMusAvaObserver::EMusAvaStatusAvailable );
+	
+	
+	// Test4: VS in GSM Network is dis-allowed if PDP context is not up. 
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeGsm );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+    avaConnectionMonitor.iConnectionMonitor.iConnectionId = 1; 
+    avaConnectionMonitor.iConnectionMonitor.iConnectionCounter = 0;
+    avaConnectionMonitor.iConnectionMonitor.iUintAttributeValue = 1;
+    avaConnectionMonitor.iConnectionMonitor.iConnectionInfoError = KErrNone;    
+    TRAP( error, iConnectionAvailability->DoExecuteL() );
+    if ( error == KErrNoMemory ) User::Leave( error );
+    EUNIT_ASSERT ( error == KErrNone );
+    EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+    if ( count > 0 && ( iConnectionAvailability->State() 
+        == MMusAvaObserver::EMusActivationError ) ||
+        (iConnectionAvailability->State() == MMusAvaObserver::EMusAvaNetworkType ))
+        
+        {
+        User::Leave( KErrNoMemory );
+        }
+    EUNIT_ASSERT( iConnectionAvailability->State() ==  MMusAvaObserver::EMusAvaEdgeDtmStatusUnknown );
+    }
+
+
+void UT_CMusAvaConnectionAvailability::UT_CMusAvaConnectionAvailability_DoExecuteLL2()
+    {
+    // Restrict VS to be only Used in 3G mode, 
+    
+   	iStorage->Set ( MusSettingsKeys::KAllowOnlyIn3GNetwork,
+   	MusSettingsKeys::EAllowed3GOnly );       
+	
+	// Test: In GSM VS is not Allowed when its restricted to be only used in 3G
+    
+    TInt ret = 0;
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeGsm );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+    MultimediaSharingSettings::SetEdgeDtmSupportSettingL( MusSettingsKeys::EDtmModeNotAllowed );
+    TRAPD( error, iConnectionAvailability->DoExecuteL() );
+    if ( error == KErrNoMemory ) User::Leave( error );
+    EUNIT_ASSERT ( error == KErrNone );
+
+    TInt count = 0;
+    EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+    if ( count > 0 &&
+         iConnectionAvailability->State() !=  MMusAvaObserver::EMusAvaNetworkType )
+        {
+        User::Leave( KErrNoMemory );
+        }
+    EUNIT_ASSERT( iConnectionAvailability->State() ==  MMusAvaObserver::EMusAvaNetworkType );
+
+    // Test2: In 3G VS is allowed.
+    
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
+    TRAP( error, iConnectionAvailability->DoExecuteL() );
+    if ( error == KErrNoMemory ) User::Leave( error );
+    EUNIT_ASSERT ( error == KErrNone );
+
+    EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+    if ( count > 0 && iConnectionAvailability->State() 
+        == MMusAvaObserver::EMusActivationError )
+        {
+        User::Leave( KErrNoMemory );
+        }
+    EUNIT_ASSERT( iConnectionAvailability->State() ==  MMusAvaObserver::EMusAvaStatusAvailable );
+    
+    // Test3: Active in home networks
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
+    TRAP( error, iConnectionAvailability->DoExecuteL() );
+    if ( error == KErrNoMemory ) User::Leave( error );
+    EUNIT_ASSERT ( error == KErrNone );
+    EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+    if ( count > 0 && iConnectionAvailability->State() 
+        == MMusAvaObserver::EMusActivationError )
+        {
+        User::Leave( KErrNoMemory );
+        }
+    EUNIT_ASSERT( iConnectionAvailability->State() ==  MMusAvaObserver::EMusAvaStatusAvailable );
+    
+    //Test4: activation set off
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::ENever );
+    TRAP( error, iConnectionAvailability->DoExecuteL() );
+    if ( error == KErrNoMemory ) User::Leave( error );
+    EUNIT_ASSERT ( error == KErrNone );
+    EUNIT_ASSERT( iConnectionAvailability->State() ==  MMusAvaObserver::EMusActivationError ); 
+
+    // Test5: Edge/Dtm activation settings
+    // case 1 Dtm mode allowed and atleast one pdp context exist
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeGsm );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+    MultimediaSharingSettings::SetEdgeDtmSupportSettingL( MusSettingsKeys::EDtmModeAllowed );
+    CMusAvaConnectionMonitor& avaConnectionMonitor = iSharedObject->ConnectionMonitor();
+    avaConnectionMonitor.iConnectionMonitor.iConnectionId = 1; 
+    avaConnectionMonitor.iConnectionMonitor.iConnectionCounter = 1;
+    avaConnectionMonitor.iConnectionMonitor.iUintAttributeValue = 1;
+    avaConnectionMonitor.iConnectionMonitor.iConnectionInfoError = KErrNone;    
+    TRAP( error, iConnectionAvailability->DoExecuteL() );
+    if ( error == KErrNoMemory ) User::Leave( error );
+    EUNIT_ASSERT ( error == KErrNone );
+    EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+    if ( count > 0 && iConnectionAvailability->State() 
+        == MMusAvaObserver::EMusActivationError )
+        {
+        User::Leave( KErrNoMemory );
+        }
+    EUNIT_ASSERT( iConnectionAvailability->State() ==  MMusAvaObserver::EMusAvaStatusAvailable );
+    
+    // Test5: Edge DTM is allowed but no pdp context
+    // case 2 Dtm mode allowed and no pdp context exist
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeGsm );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+    MultimediaSharingSettings::SetEdgeDtmSupportSettingL( MusSettingsKeys::EDtmModeAllowed );    
+    avaConnectionMonitor.iConnectionMonitor.iConnectionId = 1; 
+    avaConnectionMonitor.iConnectionMonitor.iConnectionCounter = 0;
+    avaConnectionMonitor.iConnectionMonitor.iUintAttributeValue = 1;
+    avaConnectionMonitor.iConnectionMonitor.iConnectionInfoError = KErrNone;    
+    TRAP( error, iConnectionAvailability->DoExecuteL() );
+    if ( error == KErrNoMemory ) User::Leave( error );
+    EUNIT_ASSERT ( error == KErrNone );
+    EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+    if ( count > 0 && iConnectionAvailability->State() 
+        == MMusAvaObserver::EMusActivationError )
+        {
+        User::Leave( KErrNoMemory );
+        }
+    EUNIT_ASSERT( iConnectionAvailability->State() ==  MMusAvaObserver::EMusAvaEdgeDtmStatusUnknown );
+    
+    // Test6: case 2 Dtm mode not allowed
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeGsm );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+    MultimediaSharingSettings::SetEdgeDtmSupportSettingL( MusSettingsKeys::EDtmModeNotAllowed );
+    TRAP( error, iConnectionAvailability->DoExecuteL() );
+    if ( error == KErrNoMemory ) User::Leave( error );
+    EUNIT_ASSERT ( error == KErrNone );
+    EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+    if ( count > 0 && iConnectionAvailability->State() 
+        == MMusAvaObserver::EMusActivationError )
+        {
+        User::Leave( KErrNoMemory );
+        }
+    EUNIT_ASSERT( iConnectionAvailability->State() ==  MMusAvaObserver::EMusAvaNetworkType );
+    
+    // Reset the Central Reppository to the default value to avoid 
+    // poluting common storage.
+    
+   	iStorage->Set ( MusSettingsKeys::KAllowOnlyIn3GNetwork,
+   	MusSettingsKeys::EAllowedAllBearers );       
+    }
+ 		
+void UT_CMusAvaConnectionAvailability::UT_CMusAvaConnectionAvailability_NameL()
+    {
+    EUNIT_ASSERT( iConnectionAvailability->Name() == MMusAvaObserver::EMusAvaBearerStatus );
+    }
+  
+void UT_CMusAvaConnectionAvailability::UT_CMusAvaConnectionAvailability_StopL()
+    {
+    iConnectionAvailability->Stop();
+    EUNIT_ASSERT( iSharedObject->MusAvaTelephonyStatus().iObserver.Count() == 0 );
+    }
+
+void UT_CMusAvaConnectionAvailability::UT_CMusAvaConnectionAvailability_PhoneNetworkModeStatusL()
+    {
+    //Test1:  VS by default would allow all type of Networks. 
+    // Unknow Network Type : Allowed
+    iConnectionAvailability->PhoneNetworkModeStatus( RMobilePhone::ENetworkModeUnknown );
+    TInt count = 0;
+    EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+    if ( count > 0 && ( iConnectionAvailability->State() ==  MMusAvaObserver::EMusActivationError ) ||
+    					(iConnectionAvailability->State() == MMusAvaObserver::EMusAvaNetworkType ))
+        {
+        User::Leave( KErrNoMemory );
+        }
+    EUNIT_ASSERT( iConnectionAvailability->iState ==  MMusAvaObserver::EMusAvaStatusAvailable );
+    
+    //GSM Network is Allowed:
+    iConnectionAvailability->PhoneNetworkModeStatus( RMobilePhone::ENetworkModeGsm );
+    
+    count = 0;
+    EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+    if ( count > 0 && ( iConnectionAvailability->State() ==  MMusAvaObserver::EMusActivationError ) ||
+    					(iConnectionAvailability->State() == MMusAvaObserver::EMusAvaNetworkType ))
+        {
+        User::Leave( KErrNoMemory );
+        }
+    
+    EUNIT_ASSERT( iConnectionAvailability->iState ==  MMusAvaObserver::EMusAvaStatusAvailable );
+    
+    //WCDMA: 3G is Allowed
+    iConnectionAvailability->PhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    MMusAvaObserver::TAvailabilityStatus state = MMusAvaObserver::EMusAvaStatusNotExecuted;
+    state = iConnectionAvailability->State();
+    count = 0;
+    EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+    if ( count > 0 && (state == MMusAvaObserver::EMusActivationError ) ||
+    				    ( state == MMusAvaObserver::EMusAvaNetworkType ))
+        {
+        User::Leave( KErrNoMemory );
+        }
+    EUNIT_ASSERT( state ==  MMusAvaObserver::EMusAvaStatusAvailable );
+
+    //Test2:  Restrict VS to be only used in 3G
+	iStorage->Set ( MusSettingsKeys::KAllowOnlyIn3GNetwork,
+      	MusSettingsKeys::EAllowed3GOnly );       
+	
+	//Unknown Network DisAllowed
+    iConnectionAvailability->PhoneNetworkModeStatus( RMobilePhone::ENetworkModeUnknown );
+    EUNIT_ASSERT( iConnectionAvailability->iState ==  MMusAvaObserver::EMusAvaNetworkType );
+    
+    //GSM Network is Dis-Allowed:
+    iConnectionAvailability->PhoneNetworkModeStatus( RMobilePhone::ENetworkModeGsm );
+    EUNIT_ASSERT( iConnectionAvailability->iState ==  MMusAvaObserver::EMusAvaNetworkType );
+
+    
+    //3G is Allowed:
+    iConnectionAvailability->PhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    MMusAvaObserver::TAvailabilityStatus state1 = MMusAvaObserver::EMusAvaStatusNotExecuted;
+    state1 = iConnectionAvailability->State();
+    TInt count1 = 0;
+    EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+    if ( count1 > 0 && state1 == MMusAvaObserver::EMusActivationError )
+        {
+        User::Leave( KErrNoMemory );
+        }
+    EUNIT_ASSERT( state1 ==  MMusAvaObserver::EMusAvaStatusAvailable );
+    
+    //Reset the key to the default value.
+   	iStorage->Set ( MusSettingsKeys::KAllowOnlyIn3GNetwork,
+      	MusSettingsKeys::EAllowedAllBearers );       
+    }
+                          
+void UT_CMusAvaConnectionAvailability::UT_CMusAvaConnectionAvailability_NetworkRegistrationStatusL()
+    {
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
+    iConnectionAvailability->iState = MMusAvaObserver::EMusAvaStatusAvailable;
+    iConnectionAvailability->NetworkRegistrationStatus( RMobilePhone::ERegistrationUnknown );
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+    TInt count = 0;
+    EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+    if ( count > 0 && iConnectionAvailability->iState 
+        == MMusAvaObserver::EMusActivationError )
+        {
+        User::Leave( KErrNoMemory );
+        }
+    EUNIT_ASSERT( iConnectionAvailability->iState ==  MMusAvaObserver::EMusAvaRoamingError );
+    iConnectionAvailability->iState = MMusAvaObserver::EMusAvaStatusAvailable;
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
+    iConnectionAvailability->NetworkRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
+    EUNIT_GET_ALLOC_DECORATOR_FAILCOUNT( count );
+    if ( count > 0 && iConnectionAvailability->iState 
+        == MMusAvaObserver::EMusActivationError )
+        {
+        User::Leave( KErrNoMemory );
+        }
+    EUNIT_ASSERT( iConnectionAvailability->iState ==  MMusAvaObserver::EMusAvaStatusAvailable );
+    }
+    
+void UT_CMusAvaConnectionAvailability::UT_CMusAvaConnectionAvailability_EventLL()
+    {
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+    CMusAvaConnectionMonitor& avaConnectionMonitor = iSharedObject->ConnectionMonitor();
+    avaConnectionMonitor.iConnectionMonitor.iConnectionId = 1; 
+    avaConnectionMonitor.iConnectionMonitor.iConnectionCounter = 1;
+    avaConnectionMonitor.iConnectionMonitor.iUintAttributeValue = 1;
+    avaConnectionMonitor.iConnectionMonitor.iConnectionInfoError = KErrNone;
+    
+    //Test create connection
+    //Access point 
+    MultimediaSharingSettings::SetSipProfileSettingL( 1 );
+    //IAP 
+    avaConnectionMonitor.iConnectionID = 0;
+    CConnMonCreateConnection* createConnection = 
+        new( ELeave ) CConnMonCreateConnection( 1 );
+    CleanupStack::PushL( createConnection );
+    iConnectionAvailability->EventL( *createConnection );
+    CleanupStack::PopAndDestroy( createConnection );
+    EUNIT_ASSERT( avaConnectionMonitor.iConnectionMonitor.iConnectionId == 1 );
+    //Connection is created
+    avaConnectionMonitor.iConnectionMonitor.iConnectionId = 1;
+    createConnection = 
+        new( ELeave ) CConnMonCreateConnection( 2 );
+    CleanupStack::PushL( createConnection );
+    iConnectionAvailability->EventL( *createConnection );
+    CleanupStack::PopAndDestroy( createConnection );
+    EUNIT_ASSERT( avaConnectionMonitor.iConnectionMonitor.iConnectionId == 1 );
+    avaConnectionMonitor.iConnectionID = 0;
+    //PDP context deleted, before is created
+    createConnection = 
+        new( ELeave ) CConnMonCreateConnection( 1 );
+    CleanupStack::PushL( createConnection );
+    avaConnectionMonitor.iConnectionMonitor.iConnectionInfoError = KErrNotFound;
+    iConnectionAvailability->EventL( *createConnection );
+    EUNIT_ASSERT( iConnectionAvailability->State() ==
+        MMusAvaObserver::EMusAvaConnectionErr );
+    CleanupStack::PopAndDestroy( createConnection );
+    avaConnectionMonitor.iConnectionMonitor.iConnectionInfoError = KErrNone;
+    
+    //Test delete connection /////////////////////////////////////////////////////
+    CConnMonDeleteConnection* deleteConnection = 
+        new( ELeave ) CConnMonDeleteConnection( 1, 64, 64, ETrue );
+    CleanupStack::PushL( deleteConnection );
+    iConnectionAvailability->EventL( *deleteConnection );
+    EUNIT_ASSERT( iConnectionAvailability->State() ==
+        MMusAvaObserver::EMusAvaConnectionErr );
+    EUNIT_ASSERT( iAvailabilityObserver->iStatus ==
+        MMusAvaObserver::EMusAvaConnectionErr );
+    CleanupStack::PopAndDestroy( deleteConnection );
+    iAvailabilityObserver->iStatus =  MMusAvaObserver::EMusAvaStatusNotExecuted ;
+    iAvailabilityObserver->iName = MMusAvaObserver::EMusAvaNameNotDefined;
+    iConnectionAvailability->SetState( 
+                                MMusAvaObserver::EMusAvaStatusNotExecuted );
+        ;
+    //Connection ID not found
+    CConnMonDeleteConnection* deleteConnection2 = 
+        new( ELeave ) CConnMonDeleteConnection( 3 , 64, 64, ETrue );
+    CleanupStack::PushL( deleteConnection2 );
+    iConnectionAvailability->EventL( *deleteConnection2 );
+    //Initial value or previous values
+    EUNIT_ASSERT( iConnectionAvailability->State() ==
+        MMusAvaObserver::EMusAvaStatusNotExecuted );
+    EUNIT_ASSERT( iAvailabilityObserver->iStatus ==
+        MMusAvaObserver::EMusAvaStatusNotExecuted );
+    CleanupStack::PopAndDestroy( deleteConnection2 );
+    iAvailabilityObserver->iStatus = MMusAvaObserver::EMusAvaStatusNotExecuted;
+    iConnectionAvailability->SetState(
+                                MMusAvaObserver::EMusAvaStatusNotExecuted );
+        
+    // Connection Status Change ///////////////////////////////////////////////
+    
+    //Connection status found, but no connection  
+    CConnMonConnectionStatusChange* connectionStatusChange = 
+        new( ELeave ) CConnMonConnectionStatusChange( 2, 1, KConnectionFailure  );                                              
+    CleanupStack::PushL( connectionStatusChange );
+    iConnectionAvailability->EventL( *connectionStatusChange );   
+    CleanupStack::PopAndDestroy( connectionStatusChange ); 
+    EUNIT_ASSERT( iAvailabilityObserver->iStatus ==
+        MMusAvaObserver::EMusAvaStatusNotExecuted ); 
+
+    //Connection status and connection ID are found
+    avaConnectionMonitor.iConnectionID = 1;  
+    connectionStatusChange = 
+        new( ELeave ) CConnMonConnectionStatusChange( 1, 1, KConnectionFailure  );                                                 
+    CleanupStack::PushL( connectionStatusChange );
+    iConnectionAvailability->EventL( *connectionStatusChange );   
+    CleanupStack::PopAndDestroy( connectionStatusChange ); 
+    EUNIT_ASSERT( iAvailabilityObserver->iStatus ==
+        MMusAvaObserver::EMusAvaConnectionErr );  
+    iConnectionAvailability->SetState(
+                                MMusAvaObserver::EMusAvaStatusNotExecuted ); 
+    iAvailabilityObserver->iStatus =
+        MMusAvaObserver::EMusAvaStatusNotExecuted; 
+    //Connection status and connection ID are not found 
+    connectionStatusChange = new( ELeave ) CConnMonConnectionStatusChange( 
+                            2, 1, KConfigDaemonFinishedDeregistrationStop  );
+                                                     
+    CleanupStack::PushL( connectionStatusChange );
+    iConnectionAvailability->EventL( *connectionStatusChange );   
+    CleanupStack::PopAndDestroy( connectionStatusChange ); 
+    EUNIT_ASSERT( iAvailabilityObserver->iStatus ==
+        MMusAvaObserver::EMusAvaStatusNotExecuted );  
+        
+     //Connection status is not found, but connection ID is found   
+    connectionStatusChange = 
+        new( ELeave ) CConnMonConnectionStatusChange( 1, 1, KConfigDaemonFinishedDeregistrationStop  );                                               
+    CleanupStack::PushL( connectionStatusChange );
+    iConnectionAvailability->EventL( *connectionStatusChange );   
+    CleanupStack::PopAndDestroy( connectionStatusChange ); 
+    EUNIT_ASSERT( iAvailabilityObserver->iStatus ==
+        MMusAvaObserver::EMusAvaStatusNotExecuted );  
+        
+    //Connection created, but connection ID is not found
+    connectionStatusChange = 
+        new( ELeave ) CConnMonConnectionStatusChange( 2, 1, KConnectionOpen  );                                               
+    CleanupStack::PushL( connectionStatusChange );
+    iConnectionAvailability->EventL( *connectionStatusChange );   
+    CleanupStack::PopAndDestroy( connectionStatusChange ); 
+    EUNIT_ASSERT( iAvailabilityObserver->iStatus ==
+        MMusAvaObserver::EMusAvaStatusNotExecuted );  
+    //Connection created, but connection ID is found    
+    connectionStatusChange = 
+        new( ELeave ) CConnMonConnectionStatusChange( 1, 1, KConnectionOpen  );                                               
+    CleanupStack::PushL( connectionStatusChange );
+    iConnectionAvailability->EventL( *connectionStatusChange );   
+    CleanupStack::PopAndDestroy( connectionStatusChange ); 
+    EUNIT_ASSERT( iAvailabilityObserver->iStatus ==
+        MMusAvaObserver::EMusAvaStatusAvailable );  
+    //Test network status ////////////////////////////////////////////////////
+    CConnMonNetworkStatusChange* networkStatusChange = 
+        new( ELeave ) CConnMonNetworkStatusChange( EBearerIdWCDMA, EConnMonStatusActive );
+    CleanupStack::PushL( networkStatusChange );
+    iConnectionAvailability->EventL( *networkStatusChange );
+    EUNIT_ASSERT( iConnectionAvailability->State() ==
+        MMusAvaObserver::EMusAvaStatusAvailable );
+    CleanupStack::PopAndDestroy( networkStatusChange );    
+
+    networkStatusChange = 
+        new( ELeave ) CConnMonNetworkStatusChange( EBearerIdWCDMA, EConnMonStatusNotAvailable );
+    CleanupStack::PushL( networkStatusChange );
+    iConnectionAvailability->EventL( *networkStatusChange );
+    EUNIT_ASSERT( iAvailabilityObserver->iStatus ==
+        MMusAvaObserver::EMusAvaConnectionErr );
+    CleanupStack::PopAndDestroy( networkStatusChange );
+    iAvailabilityObserver->iStatus =
+                                MMusAvaObserver::EMusAvaStatusNotExecuted;
+    iAvailabilityObserver->iName = MMusAvaObserver::EMusAvaNameNotDefined;
+    iConnectionAvailability->SetState(
+                                MMusAvaObserver::EMusAvaStatusNotExecuted );
+        
+        
+   //Network status not available
+    CConnMonNetworkStatusChange* networkStatusChange4 = 
+        new( ELeave ) CConnMonNetworkStatusChange( 3, EConnMonStatusNotAvailable );
+    CleanupStack::PushL( networkStatusChange4 );
+    iConnectionAvailability->EventL( *networkStatusChange4 );
+    EUNIT_ASSERT( iConnectionAvailability->State() ==
+        MMusAvaObserver::EMusAvaStatusNotExecuted );
+    EUNIT_ASSERT( iAvailabilityObserver->iStatus ==
+        MMusAvaObserver::EMusAvaStatusNotExecuted );
+    CleanupStack::PopAndDestroy( networkStatusChange4 );
+    iAvailabilityObserver->iStatus =
+                                MMusAvaObserver::EMusAvaStatusNotExecuted;
+    iAvailabilityObserver->iName = MMusAvaObserver::EMusAvaNameNotDefined;
+        
+    //Test network Registration ///////////////////////////////////////////////
+    iConnectionAvailability->SetState(
+                                        MMusAvaObserver::EMusAvaStatusAvailable );
+    CConnMonNetworkRegistrationChange* registrationChange = 
+        new( ELeave ) CConnMonNetworkRegistrationChange( EBearerIdWCDMA, 
+        ENetworkRegistrationHomeNetwork );
+    CleanupStack::PushL( registrationChange );
+    iConnectionAvailability->EventL( *registrationChange );
+    EUNIT_ASSERT( iConnectionAvailability->State() ==
+        MMusAvaObserver::EMusAvaStatusAvailable );
+    CleanupStack::PopAndDestroy( registrationChange );
+    iAvailabilityObserver->iStatus =
+                                MMusAvaObserver::EMusAvaStatusNotExecuted;
+    iAvailabilityObserver->iName = MMusAvaObserver::EMusAvaNameNotDefined;
+    iConnectionAvailability->SetState(
+                                    MMusAvaObserver::EMusAvaStatusAvailable );
+        
+    registrationChange = new( ELeave ) CConnMonNetworkRegistrationChange(
+                        EBearerIdWCDMA, 
+                        ENetworkRegistrationRoaming );
+    CleanupStack::PushL( registrationChange );
+    iConnectionAvailability->EventL( *registrationChange );
+    EUNIT_ASSERT( iConnectionAvailability->State() ==
+    MMusAvaObserver::EMusAvaRoamingError );
+    CleanupStack::PopAndDestroy( registrationChange );
+    EUNIT_ASSERT( iAvailabilityObserver->iStatus ==
+                MMusAvaObserver::EMusAvaRoamingError );
+    iAvailabilityObserver->iStatus =
+                                MMusAvaObserver::EMusAvaStatusNotExecuted;
+    iAvailabilityObserver->iName = MMusAvaObserver::EMusAvaNameNotDefined;
+        
+    //Test bearer change///////////////////////////////////////////////////////
+                
+    CConnMonBearerChange* bearerChange = 
+        new( ELeave ) CConnMonBearerChange( EBearerIdWCDMA, EBearerWCDMA );
+    CleanupStack::PushL( bearerChange );
+    iConnectionAvailability->EventL( *bearerChange );
+    EUNIT_ASSERT( iConnectionAvailability->State() ==
+        MMusAvaObserver::EMusAvaStatusAvailable );
+    EUNIT_ASSERT( iAvailabilityObserver->iStatus ==
+        MMusAvaObserver::EMusAvaStatusAvailable );
+    CleanupStack::PopAndDestroy( bearerChange );
+    iAvailabilityObserver->iStatus =
+                                MMusAvaObserver::EMusAvaStatusNotExecuted;
+    iAvailabilityObserver->iName = MMusAvaObserver::EMusAvaNameNotDefined;
+        
+   //Unknown unknown bearer change
+    bearerChange = 
+        new( ELeave ) CConnMonBearerChange( EBearerIdGSM, EBearerGPRS );
+    CleanupStack::PushL( bearerChange );
+    iConnectionAvailability->EventL( *bearerChange );
+    EUNIT_ASSERT( iConnectionAvailability->State() ==
+        MMusAvaObserver::EMusAvaNetworkType );
+    EUNIT_ASSERT( iAvailabilityObserver->iStatus ==
+        MMusAvaObserver::EMusAvaNetworkType );
+    CleanupStack::PopAndDestroy( bearerChange );
+    iAvailabilityObserver->iStatus =
+                                MMusAvaObserver::EMusAvaStatusNotExecuted;
+    iAvailabilityObserver->iName = MMusAvaObserver::EMusAvaNameNotDefined;
+    }
+
+void UT_CMusAvaConnectionAvailability::UT_CMusAvaConnectionAvailability_NetworkRegistrationAndSettingsLL()
+    {
+    iStorage->Clear();
+     	MultimediaSharingSettings::SetOperatorVariantSettingL( MusSettingsKeys::EOperatorSpecific );
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys:: ENever  );
+    EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL() 
+    == MMusAvaObserver::EMusActivationError );
+    
+    iStorage->Clear();
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys:: ENever  );
+    EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
+    == MMusAvaObserver::EMusActivationError );
+    
+    iStorage->Clear();
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeUnknown );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegistrationUnknown );
+    EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL() 
+    == MMusAvaObserver::EMusActivationError );
+    
+    iStorage->Clear();
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::ENever );
+    EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
+    == MMusAvaObserver::EMusActivationError );
+    
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegistrationUnknown );
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+    EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
+    == MMusAvaObserver::EMusAvaStatusAvailable );
+    
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegistrationUnknown );
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
+    EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
+    == MMusAvaObserver::EMusActivationError );
+    
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::ENever );
+    EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
+    == MMusAvaObserver::EMusActivationError );
+    
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
+    EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
+    == MMusAvaObserver::EMusAvaStatusAvailable );
+    
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+    EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
+    == MMusAvaObserver::EMusAvaStatusAvailable );
+    
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredRoaming );
+     	iConcreteSettings->SetManualActivation( MMusAvaSettings::EActivationAllowed);
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+    EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
+    == MMusAvaObserver::EMusAvaStatusAvailable );
+    
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
+    iConcreteSettings->SetManualActivation( MMusAvaSettings::EActivationAllowed);
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+    EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
+    == MMusAvaObserver::EMusAvaStatusAvailable );
+    
+    
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredRoaming );
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+    EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
+    == MMusAvaObserver::EMusAvaStatusAvailable );
+    
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredOnHomeNetwork );
+    iConcreteSettings->SetManualActivation( MMusAvaSettings::EActivationAllowed);
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+    EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
+    == MMusAvaObserver::EMusAvaStatusAvailable );
+    
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredRoaming );
+    iConcreteSettings->SetManualActivation( MMusAvaSettings::EActivationExecuted);
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+    EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
+    == MMusAvaObserver::EMusAvaStatusAvailable );
+    
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredRoaming );
+    iConcreteSettings->SetManualActivation( MMusAvaSettings::EActivationExecuted);
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
+    EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
+    == MMusAvaObserver::EMusActivationError );
+    
+    MultimediaSharingSettings::SetOperatorVariantSettingL( MusSettingsKeys::EStandard );
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredRoaming );
+    iConcreteSettings->SetManualActivation( MMusAvaSettings::EActivationNotExecuted);
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
+    EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
+    == MMusAvaObserver::EMusAvaManualActivation );
+    
+    MultimediaSharingSettings::SetOperatorVariantSettingL( MusSettingsKeys::EStandard );
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredRoaming );
+    iConcreteSettings->SetManualActivation( MMusAvaSettings::EActivationAllowed);
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+    EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
+    == MMusAvaObserver::EMusAvaStatusAvailable );
+    
+    MultimediaSharingSettings::SetOperatorVariantSettingL( MusSettingsKeys::EStandard );
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredRoaming );
+    iConcreteSettings->SetManualActivation( MMusAvaSettings::EActivationNotAllowed);
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EAlwaysActive );
+    EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
+    == MMusAvaObserver::EMusAvaStatusAvailable );
+    
+    MultimediaSharingSettings::SetOperatorVariantSettingL( MusSettingsKeys::EStandard );
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredRoaming );
+    iConcreteSettings->SetManualActivation( MMusAvaSettings::EActivationNotAllowed);
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
+    EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
+    == MMusAvaObserver::EMusActivationError );
+    
+    MultimediaSharingSettings::SetOperatorVariantSettingL( MusSettingsKeys::EStandard );
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredRoaming );
+    iConcreteSettings->SetManualActivation( MMusAvaSettings::EActivationNotExecuted);
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
+    EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
+    == MMusAvaObserver::EMusAvaManualActivation );
+    
+    MultimediaSharingSettings::SetOperatorVariantSettingL( MusSettingsKeys::EStandard );
+    iStorage->SetPhoneNetworkModeStatus( RMobilePhone::ENetworkModeWcdma );
+    iStorage->SetRegistrationStatus( RMobilePhone::ERegisteredRoaming );
+    iConcreteSettings->SetManualActivation( MMusAvaSettings::EActivationAllowed);
+    MultimediaSharingSettings::SetActivationSettingL( MusSettingsKeys::EActiveInHomeNetworks );
+    EUNIT_ASSERT( iConnectionAvailability->NetworkRegistrationAndSettingsL()
+    == MMusAvaObserver::EMusAvaStatusAvailable );
+    }
+    
+    
+void UT_CMusAvaConnectionAvailability::UT_CMusAvaConnectionAvailability_ManualActivationLL()
+ 	{
+ 	MultimediaSharingSettings::SetOperatorVariantSettingL( MusSettingsKeys::EOperatorSpecific );
+ 	EUNIT_ASSERT( iConnectionAvailability->ManualActivationL() == MMusAvaObserver::EMusActivationError );	
+ 	
+ 	MultimediaSharingSettings::SetOperatorVariantSettingL( MusSettingsKeys::EStandard );
+ 	iConcreteSettings->SetManualActivation( MMusAvaSettings::EActivationAllowed);
+ 	EUNIT_ASSERT( iConnectionAvailability->ManualActivationL() == MMusAvaObserver::EMusAvaStatusAvailable );	
+ 	
+	iConcreteSettings->SetManualActivation( MMusAvaSettings::EActivationNotExecuted );
+ 	EUNIT_ASSERT( iConnectionAvailability->ManualActivationL() == MMusAvaObserver::EMusAvaManualActivation );	
+ 	
+ 	iConcreteSettings->SetManualActivation( MMusAvaSettings::EActivationExecuted );
+ 	EUNIT_ASSERT( iConnectionAvailability->ManualActivationL() == MMusAvaObserver::EMusActivationError );	
+ 	}
+ 	
+//  TEST TABLE
+
+EUNIT_BEGIN_TEST_TABLE( 
+    UT_CMusAvaConnectionAvailability,
+    "CMusAvaConnectionAvailability",
+    "UNIT" )
+
+EUNIT_TEST(
+    "NewL - test ",
+    "CMusAvaConnectionAvailability",
+    "NewL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusAvaConnectionAvailability_NewLL, Teardown)
+    
+EUNIT_TEST(
+    "DoExecuteL - test ",
+    "CMusAvaConnectionAvailability",
+    "DoExecuteL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusAvaConnectionAvailability_DoExecuteLL, Teardown)
+    
+EUNIT_TEST(
+    "DoExecuteL - test 3G Restricted",
+    "CMusAvaConnectionAvailability",
+    "DoExecuteL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusAvaConnectionAvailability_DoExecuteLL2, Teardown)
+    
+    
+EUNIT_TEST(
+    "Name - test ",
+    "CMusAvaConnectionAvailability",
+    "Name",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusAvaConnectionAvailability_NameL, Teardown)
+    
+EUNIT_TEST(
+    "Stop - test ",
+    "CMusAvaConnectionAvailability",
+    "Stop",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusAvaConnectionAvailability_StopL, Teardown)
+ 
+    
+ EUNIT_TEST(
+    "PhoneNetworkModeStatusL - test ",
+    "CMusAvaConnectionAvailability",
+    "PhoneNetworkModeStatusL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusAvaConnectionAvailability_PhoneNetworkModeStatusL, Teardown)
+    
+ EUNIT_TEST(
+    "NetworkRegistrationStatus - test ",
+    "CMusAvaConnectionAvailability",
+    "NetworkRegistrationStatus",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusAvaConnectionAvailability_NetworkRegistrationStatusL, Teardown)
+    
+ EUNIT_TEST(
+    "EventL - test ",
+    "CMusAvaConnectionAvailability",
+    "EventL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusAvaConnectionAvailability_EventLL, Teardown)
+
+  
+EUNIT_TEST(
+    "NetworkRegistrationAndSettingsL - test ",
+    "CMusAvaConnectionAvailability",
+    "NetworkRegistrationAndSettingsL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusAvaConnectionAvailability_NetworkRegistrationAndSettingsLL, Teardown)
+    
+EUNIT_TEST(
+    "ManualActivationL - test ",
+    "CMusAvaConnectionAvailability",
+    "ManualActivationL",
+    "FUNCTIONALITY",
+    SetupL, UT_CMusAvaConnectionAvailability_ManualActivationLL, Teardown)
+
+EUNIT_END_TEST_TABLE
+
+//  END OF FILE