mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_musfactorysettings.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:12:07 +0300
branchRCL_3
changeset 22 73a1feb507fb
permissions -rw-r--r--
Revision: 201032 Kit: 201035

/*
* Copyright (c) 2009 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:  
*
*/


//  INTERNAL INCLUDES
#include <CTSYDomainPSKeys.h>
#include "etelmm.h"
#include "ut_musfactorysettings.h"
#include "musfactorysettings.h"
#include "centralrepository.h"
#include "e32property.h"


//  SYSTEM INCLUDES
#include <eunitmacros.h>

// -----------------------------------------------------------------------------
// Two phase symbian constructor
// -----------------------------------------------------------------------------
//
UT_CMusFactorySettings* UT_CMusFactorySettings::NewL()
    {
    UT_CMusFactorySettings* self = UT_CMusFactorySettings::NewLC();
    CleanupStack::Pop( self );
    return self;
    }


// -----------------------------------------------------------------------------
// Two phase symbian constructor
// -----------------------------------------------------------------------------
//
UT_CMusFactorySettings* UT_CMusFactorySettings::NewLC()
    {
    UT_CMusFactorySettings* self = new( ELeave ) UT_CMusFactorySettings();
    CleanupStack::PushL( self );
    self->ConstructL();
    return self;
    }


// -----------------------------------------------------------------------------
// Destructor
// -----------------------------------------------------------------------------
//
UT_CMusFactorySettings::~UT_CMusFactorySettings()
    {  
    
    }


// -----------------------------------------------------------------------------
// Default constructor
// -----------------------------------------------------------------------------
//
UT_CMusFactorySettings::UT_CMusFactorySettings()
    {
    // NOP
    }


// -----------------------------------------------------------------------------
// Second phase construct
// -----------------------------------------------------------------------------
//
void UT_CMusFactorySettings::ConstructL()
    {
    // The ConstructL from the base class CEUnitTestSuiteClass must be called.
    // It generates the test case table.
    CEUnitTestSuiteClass::ConstructL();
    
    }
    

// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void UT_CMusFactorySettings::SetupL()
    {
    iMusCentralRepository = CRepository::NewL( MusSettingsKeys::KRepositoryUid );    
    CRepository::ResetStubGlobal();
    }


// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void UT_CMusFactorySettings::Teardown()
    {  
    delete iMusCentralRepository;   
    iMusCentralRepository = NULL;    
    CRepository::ResetStubGlobal();
    PropertyHelper::Close(); // CRepository puts stuff to RProperty static
    }

// TEST CASES

// -----------------------------------------------------------------------------
// SetCallInfo test function
// -----------------------------------------------------------------------------
//
void UT_CMusFactorySettings::UT_CMusFactorySettings_IsSupportedLL()
    {    
    // call cases    
    // all call types allowed    
    TPSCTsyCallType callType = EPSCTsyCallTypeCSVoice;
    User::LeaveIfError( CRepository::SetStubGlobal(MusSettingsKeys::KAllowOnlyWithActiveCSCall,
                                                   MusSettingsKeys::EAllowedAllCalls) );
    EUNIT_ASSERT( MusFactorySettings::IsSupportedL( callType ));
   
    // allowed csonly and call type is voip
    callType = EPSCTsyCallTypeVoIP;
    User::LeaveIfError( CRepository::SetStubGlobal(MusSettingsKeys::KAllowOnlyWithActiveCSCall,
                              MusSettingsKeys::EAllowedCSOnly) );
    EUNIT_ASSERT( !MusFactorySettings::IsSupportedL( callType ));
    
    // allowed csonly and call type is cs
    callType = EPSCTsyCallTypeCSVoice;
    User::LeaveIfError( CRepository::SetStubGlobal(MusSettingsKeys::KAllowOnlyWithActiveCSCall,
                              MusSettingsKeys::EAllowedCSOnly) );
    EUNIT_ASSERT( MusFactorySettings::IsSupportedL( callType ));
               
    // allowed csonly and call type is EPSCTsyCallTypeNone
    callType = EPSCTsyCallTypeNone;
    User::LeaveIfError( CRepository::SetStubGlobal(MusSettingsKeys::KAllowOnlyWithActiveCSCall,
                              MusSettingsKeys::EAllowedCSOnly) );
    EUNIT_ASSERT( !MusFactorySettings::IsSupportedL( callType )); 
 
    // network cases
    // all bearer types allowed
    RMobilePhone::TMobilePhoneNetworkMode networkType = RMobilePhone::ENetworkModeGsm;
    User::LeaveIfError( CRepository::SetStubGlobal(MusSettingsKeys::KAllowOnlyIn3GNetwork,
                               MusSettingsKeys::EAllowedAllBearers) );
    EUNIT_ASSERT( MusFactorySettings::IsSupportedL( networkType ));
    
    // 3g only and network type is gsm
    networkType = RMobilePhone::ENetworkModeGsm;
    User::LeaveIfError( CRepository::SetStubGlobal(MusSettingsKeys::KAllowOnlyIn3GNetwork,
                                MusSettingsKeys::EAllowed3GOnly) );
    EUNIT_ASSERT( !MusFactorySettings::IsSupportedL( networkType ));  
    
    // 3g only and network type is 3g
    networkType = RMobilePhone::ENetworkModeWcdma;
    User::LeaveIfError( CRepository::SetStubGlobal(MusSettingsKeys::KAllowOnlyIn3GNetwork,
                                 MusSettingsKeys::EAllowed3GOnly) );
    EUNIT_ASSERT( MusFactorySettings::IsSupportedL( networkType ));   
    
    // if allowed3gonly setting cenrep key not found
    // then function should not leave and should behave like in default
    // case ie all bearer supported. so it should return ETrue
    networkType = RMobilePhone::ENetworkModeGsm;
    User::LeaveIfError( CRepository::SetStubGlobal(MusSettingsKeys::KAllowOnlyIn3GNetwork,
                                     MusSettingsKeys::EAllowed3GOnly) );
    CRepository::iForceFailWithCode = KErrNotFound;
    TBool supported = EFalse;
    EUNIT_ASSERT_NO_LEAVE( supported = MusFactorySettings::IsSupportedL( networkType ))
    EUNIT_ASSERT( supported );
    }

//  TEST TABLE

EUNIT_BEGIN_TEST_TABLE(
    UT_CMusFactorySettings,
    "UT_CMusFactorySettings",
    "UNIT" )

EUNIT_TEST(
    "IsSupportedL - test",
    "CMusFactorySettings",
    "IsSupportedL",
    "FUNCTIONALITY",
    SetupL, UT_CMusFactorySettings_IsSupportedLL, Teardown)

EUNIT_END_TEST_TABLE

//  END OF FILE