cellular/telephonysettings/tsrc/public/basic/PhoneSettingsTest/src/PhoneSettingsTestNetwork.cpp
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:15:03 +0100
branchRCL_3
changeset 20 987c9837762f
parent 19 7d48bed6ce0c
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* Copyright (c) 2002 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: Implementation of CPhoneSettingsTestNetwork class.
*
*/



// INCLUDE FILES
#include <StifTestModule.h>
#include <nwdefs.h>             
#include <etelmm.h> 
#include <BADESCA.H>            
#include <PsetContainer.h>
#include <PsetConstants.h>
#include <PsetNetwork.h>
#include "PhoneSettingsTest.hrh"
#include "MPhoneSettingsTestMessageHandler.h"
#include "PhoneSettingsTestUtilities.h" 
#include "PhoneSettingsTestDefs.h"
#include "PhoneSettingsTestPsetRequestObserver.h" 
#include "PhoneSettingsTestNetworkInfoObserver.h" 
#include "PhoneSettingsTestNetworkModeObserver.h" 
#include "PsetSAObserver.h" 
#include "PhoneSettingsTestNetwork.h"

// ============================ MEMBER FUNCTIONS ===============================

// -----------------------------------------------------------------------------
// CPhoneSettingsTestNetwork::CPhoneSettingsTestNetwork
// C++ default constructor can NOT contain any code, that
// might leave.
// -----------------------------------------------------------------------------
//
CPhoneSettingsTestNetwork::CPhoneSettingsTestNetwork(
    CPhoneSettingsTestParser& aPhoneSettingsTestParser,
    MPhoneSettingsTestMessageHandler& aPhoneSettingsTestMessageHandler ):
    iTestParser(aPhoneSettingsTestParser),
    iTestMessageHandler(aPhoneSettingsTestMessageHandler)
    {	
    }

// -----------------------------------------------------------------------------
// CPhoneSettingsTestNetwork::ConstructL
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void CPhoneSettingsTestNetwork::ConstructL()
    {
    } 

// -----------------------------------------------------------------------------
// CPhoneSettingsTestNetwork::NewL
// Two-phased constructor.
// -----------------------------------------------------------------------------
//
CPhoneSettingsTestNetwork* CPhoneSettingsTestNetwork::NewL(
    CPhoneSettingsTestParser& aPhoneSettingsTestParser,
    MPhoneSettingsTestMessageHandler& aPhoneSettingsTestMessageHandler)
    {
    CPhoneSettingsTestNetwork* self = new (ELeave) CPhoneSettingsTestNetwork(
        aPhoneSettingsTestParser, aPhoneSettingsTestMessageHandler );     
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop();
    return self;
    }

// Destructor
CPhoneSettingsTestNetwork::~CPhoneSettingsTestNetwork()
    {          		
    delete iPsetNetwork;             
    delete iPsetContainer; 
    delete iPhoneSettingsTestNetworkModeObserver; 
    delete iPhoneSettingsTestNetworkInfoObserver;  
    }

// ----------------------------------------------------------------------------
// CPhoneSettingsTestNetwork::WaitTimer
// ----------------------------------------------------------------------------
//
void CPhoneSettingsTestNetwork::WaitTimer(TInt aWaitTime)
    {
    CPeriodic* timer = CPeriodic::NewL( CActive::EPriorityStandard );
    timer->Start( aWaitTime, aWaitTime, TCallBack( DoCallBackL, this ) );
    iWaitTimer.Start();
    delete timer;
    }

// ----------------------------------------------------------------------------
// CPhoneSettingsTestNetwork::DoCallBackL
// ----------------------------------------------------------------------------
//
TInt CPhoneSettingsTestNetwork::DoCallBackL(TAny* aAny)
    {
    // Can't call iWaitAny.AsyncStop() in static function
    REINTERPRET_CAST( CPhoneSettingsTestNetwork*, aAny )->Stop();
    return KErrNone;
    }

// ----------------------------------------------------------------------------
// CPhoneSettingsTestNetwork::Stop
// ----------------------------------------------------------------------------
//
void CPhoneSettingsTestNetwork::Stop()
    {
    iWaitTimer.AsyncStop();  
    }

// ----------------------------------------------------------------------------
// CPhoneSettingsTestNetwork::SetupL
// ----------------------------------------------------------------------------
//
void CPhoneSettingsTestNetwork::SetupL()
    {
    iPsetContainer = CPsetContainer::NewL();        
	iPhoneSettingsTestNetworkInfoObserver = 
	    CPhoneSettingsTestNetworkInfoObserver::NewL(); 
	iPhoneSettingsTestNetworkModeObserver = 
	    CPhoneSettingsTestNetworkModeObserver::NewL();    
	iPsetNetwork  = iPsetContainer->CreateNetworkObjectL(
	    *iPhoneSettingsTestNetworkInfoObserver );
    iPsetNetwork->SetNetworkModeObserver( 
        *iPhoneSettingsTestNetworkModeObserver ); 
    }

// ----------------------------------------------------------------------------
// CPhoneSettingsTestNetwork::TearDownL
// ----------------------------------------------------------------------------
//
void CPhoneSettingsTestNetwork::TearDownL()
    {
    delete iPsetNetwork;             
    iPsetNetwork = NULL; 
    delete iPsetContainer; 
    iPsetContainer = NULL; 
    delete iPhoneSettingsTestNetworkModeObserver; 
    iPhoneSettingsTestNetworkModeObserver = NULL; 
    delete iPhoneSettingsTestNetworkInfoObserver; 
    iPhoneSettingsTestNetworkInfoObserver = NULL;     
    }
    
// -----------------------------------------------------------------------------
// CPhoneSettingsTestNetwork::TestCPsetNetworkConstructAndDestructL
// 
// -----------------------------------------------------------------------------
//
TInt CPhoneSettingsTestNetwork::TestCPsetNetworkConstructAndDestructL(
    TTestResult& aResult)
	{
	iTestMessageHandler.PrintMessage( KStartingTestCase() );
	iTestMessageHandler.PrintMessage( KNetworkConstructAndDestruct() );
	
	// Initialize test 
    RMobilePhone phone; 
	RTelServer telServer; 
	RMobileLine line; 
    CPhoneSettingsTestUtilities::OpenPhoneL( telServer, phone, line ); 	    
	
	CPhoneSettingsTestNetworkInfoObserver* phoneSettingsTestNetworkInfoObserver = 
	    CPhoneSettingsTestNetworkInfoObserver::NewL(); 
	CleanupStack::PushL( phoneSettingsTestNetworkInfoObserver ); 
	
	CPhoneSettingsTestNetworkModeObserver* phoneSettingsTestNetworkModeObserver = 
	    CPhoneSettingsTestNetworkModeObserver::NewL(); 
	CleanupStack::PushL( phoneSettingsTestNetworkModeObserver ); 
	
	CPsetNetwork* psetNetwork; 
	
	// Do tests here 
	// 1.) Test construction with Network Info observer 
	iTestMessageHandler.PrintMessage( 
	    KNetworkConstructAndDestructUsingNetworkInfoObserver() );	     
	psetNetwork = CPsetNetwork::NewL( phone, *phoneSettingsTestNetworkInfoObserver );
	CleanupStack::PushL( psetNetwork ); 
	ASSERT( psetNetwork != NULL ); 
    CleanupStack::PopAndDestroy( psetNetwork ); 
    psetNetwork = NULL; 

	// 2.) Test construction with Network Mode observer 
    iTestMessageHandler.PrintMessage( 
        KNetworkConstructAndDestructUsingNetworkModeObserver() );     
	psetNetwork = CPsetNetwork::NewL( phone, *phoneSettingsTestNetworkModeObserver );
	CleanupStack::PushL( psetNetwork ); 
	ASSERT( psetNetwork != NULL ); 
    CleanupStack::PopAndDestroy( psetNetwork ); 
	psetNetwork = NULL; 	
		
    CleanupStack::PopAndDestroy( 2 );     
    CPhoneSettingsTestUtilities::ClosePhoneL( telServer, phone, line ); 	    
        
	// Set result for STIF framework
	aResult.SetResult( KErrNone, KNetworkConstructAndDestruct );		    
    iTestMessageHandler.PrintMessage( KExitingTestCase() );    
    
	return KErrNone; 
	}

// -----------------------------------------------------------------------------
// CPhoneSettingsTestNetwork::TestGetCurrentNetworkInfo
// 
// -----------------------------------------------------------------------------
//
TInt CPhoneSettingsTestNetwork::TestGetCurrentNetworkInfo(TTestResult& aResult)
    {
	iTestMessageHandler.PrintMessage( KStartingTestCase() );
	iTestMessageHandler.PrintMessage( KNetworkGetCurrentNetworkInfo() );
	
	// Initialize test 
    SetupL(); 
	
    MPsetNetworkSelect::TCurrentNetworkInfo networkInfo; 
    
	// Do tests here 
	TInt err = iPsetNetwork->GetCurrentNetworkInfo( networkInfo ); 	
    WaitTimer( KPhoneSettingsTestAsyncTimeout );    
    
	// GetCurrentNetworkInfo is deprecated and should return KErrNotSupported 		
	ASSERT( err == KErrNotSupported ); 
			
	// Uninitialize test 
	TearDownL(); 
	
	// Set result for STIF framework
	aResult.SetResult( KErrNone, KNetworkGetCurrentNetworkInfo );	
    iTestMessageHandler.PrintMessage( KExitingTestCase() );    
    
	return KErrNone;     
    }

// -----------------------------------------------------------------------------
// CPhoneSettingsTestNetwork::TestGetNetworkSelectMode
// 
// -----------------------------------------------------------------------------
//
TInt CPhoneSettingsTestNetwork::TestGetNetworkSelectMode(TTestResult& aResult)
    {
	iTestMessageHandler.PrintMessage( KStartingTestCase() );
	iTestMessageHandler.PrintMessage( KNetworkGetNetworkSelectMode() );
	
	// Initialize test 
    SetupL(); 
	
    MPsetNetworkSelect::TSelectMode selectMode; 
    
	// Do tests here 
	TInt err = iPsetNetwork->GetNetworkSelectMode( selectMode ); 
	WaitTimer( KPhoneSettingsTestAsyncTimeout );    

	// Parse result data 
	iTestParser.ParseTSelectMode( selectMode ); 
	
	// Uninitialize test 
	TearDownL(); 
	
	// Set result for STIF framework
	aResult.SetResult( err, KNetworkGetNetworkSelectMode );	
    iTestMessageHandler.PrintMessage( KExitingTestCase() );    
    
	return KErrNone;         
    }

// -----------------------------------------------------------------------------
// CPhoneSettingsTestNetwork::TestIsCallActive
// 
// -----------------------------------------------------------------------------
//
TInt CPhoneSettingsTestNetwork::TestIsCallActive(TTestResult& aResult)
    {
	iTestMessageHandler.PrintMessage( KStartingTestCase() );
	iTestMessageHandler.PrintMessage( KNetworkIsCallActive() );
	
	// Initialize test 
    SetupL(); 
    
	// Do tests here 
	TInt retValue = iPsetNetwork->IsCallActive(); 
	WaitTimer( KPhoneSettingsTestAsyncTimeout );    
	
	ASSERT( retValue>= 0 ); 
	
	// Print result data
	if( retValue > 0 )
	    {
	    iTestMessageHandler.PrintMessage( KCallIsActive() );
	    }
	else 
	    {
	    iTestMessageHandler.PrintMessage( KCallIsNotActive() );
	    }
	
	// Uninitialize test 
	TearDownL(); 
	
	// Set result for STIF framework
	aResult.SetResult( KErrNone, KNetworkIsCallActive );	
    iTestMessageHandler.PrintMessage( KExitingTestCase() );    
    
	return KErrNone;             
    }

// -----------------------------------------------------------------------------
// CPhoneSettingsTestNetwork::TestIsGPRSConnected
// 
// -----------------------------------------------------------------------------
//
TInt CPhoneSettingsTestNetwork::TestIsGPRSConnected(TTestResult& aResult)
    {
 	iTestMessageHandler.PrintMessage( KStartingTestCase() );
	iTestMessageHandler.PrintMessage( KNetworkIsGPRSConnected() );
	
	// Initialize test 
    SetupL(); 
    
	// Do tests here 
	TInt retValue = iPsetNetwork->IsGPRSConnected(); 
	WaitTimer( KPhoneSettingsTestAsyncTimeout );    
	
	ASSERT( retValue >= 0 ); 
	
	// Print result data 
	switch( retValue )
	    {
	    case CPsetSAObserver::EPSetGPRSConnectionActive: 
	        iTestMessageHandler.PrintMessage( KEPSetGPRSConnectionActive() ); 
	        break; 
	    case CPsetSAObserver::EPSetGPRSNotConnected: 
	        iTestMessageHandler.PrintMessage( KEPSetGPRSNotConnected() ); 
	        break; 

        default: 
            break; 
        }
	
	// Uninitialize test 
	TearDownL(); 
	
	// Set result for STIF framework
	aResult.SetResult( KErrNone, KNetworkIsGPRSConnected );	
    iTestMessageHandler.PrintMessage( KExitingTestCase() );    
    
	return KErrNone;        
    }

// -----------------------------------------------------------------------------
// CPhoneSettingsTestNetwork::TestResetNetworkSearch
// 
// -----------------------------------------------------------------------------
//
TInt CPhoneSettingsTestNetwork::TestResetNetworkSearch(TTestResult& aResult)
    {
 	iTestMessageHandler.PrintMessage( KStartingTestCase() );
	iTestMessageHandler.PrintMessage( KNetworkResetNetworkSearch() );
	
	// Initialize test 
    SetupL(); 
    
	// Do tests here 
	TInt retValue = iPsetNetwork->ResetNetworkSearch(); 
	
	// Uninitialize test 
	TearDownL(); 
	
	// Set result for STIF framework
	aResult.SetResult( retValue, KNetworkResetNetworkSearch );		    
    iTestMessageHandler.PrintMessage( KExitingTestCase() );    
    
	return KErrNone;          
    }

// -----------------------------------------------------------------------------
// CPhoneSettingsTestNetwork::TestCancelProcess
// 
// -----------------------------------------------------------------------------
//
TInt CPhoneSettingsTestNetwork::TestCancelProcess(TTestResult& aResult)
    {
 	iTestMessageHandler.PrintMessage( KStartingTestCase() );
	iTestMessageHandler.PrintMessage( KNetworkCancelProcess() );
	
	// Initialize test 
    SetupL(); 
    
	// Do tests here 
	iPsetNetwork->CancelProcess(); 
	
	// Uninitialize test 
	TearDownL(); 
	
	// Set result for STIF framework
	aResult.SetResult( KErrNone, KNetworkCancelProcess );		    
    iTestMessageHandler.PrintMessage( KExitingTestCase() );    
    
	return KErrNone;             
    }

// -----------------------------------------------------------------------------
// CPhoneSettingsTestNetwork::TestGetAvailableNetworksL
// 
// -----------------------------------------------------------------------------
//
TInt CPhoneSettingsTestNetwork::TestGetAvailableNetworksL(TTestResult& aResult)
    {
 	iTestMessageHandler.PrintMessage( KStartingTestCase() );
	iTestMessageHandler.PrintMessage( KNetworkGetAvailableNetworksL() );
	
	// Initialize test 
    SetupL(); 
    
	// Do tests here 
	iPsetNetwork->GetAvailableNetworksL(); 
	
	// Uninitialize test 
	TearDownL(); 
	
	// Set result for STIF framework
	aResult.SetResult( KErrNone, KNetworkGetAvailableNetworksL );		    
    iTestMessageHandler.PrintMessage( KExitingTestCase() );    
    
	return KErrNone;       
    }

// -----------------------------------------------------------------------------
// CPhoneSettingsTestNetwork::TestGetCurrentNetworkModeSelectionL
// 
// -----------------------------------------------------------------------------
//
TInt CPhoneSettingsTestNetwork::TestGetCurrentNetworkModeSelectionL(TTestResult& aResult)
    {
	iTestMessageHandler.PrintMessage( KStartingTestCase() );
	iTestMessageHandler.PrintMessage( KNetworkGetCurrentNetworkModeSelectionL() );
	
	// Initialize test 
    SetupL(); 
    
	// Do tests here 
	iPsetNetwork->GetCurrentNetworkModeSelectionL(); 	
		
	// Uninitialize test     
	TearDownL(); 
	
	// Set result for STIF framework
	aResult.SetResult( KErrNone, KNetworkGetCurrentNetworkModeSelectionL );		    
    iTestMessageHandler.PrintMessage( KExitingTestCase() );    
    
	return KErrNone;        
    }

// -----------------------------------------------------------------------------
// CPhoneSettingsTestNetwork::TestSelectNetworkL
// 
// -----------------------------------------------------------------------------
//
TInt CPhoneSettingsTestNetwork::TestSelectNetworkL(TTestResult& aResult)
    {
	iTestMessageHandler.PrintMessage( KStartingTestCase() );
	iTestMessageHandler.PrintMessage( KNetworkSelectNetworkL() );
	
	// Initialize test 
    SetupL(); 
	
    MPsetNetworkSelect::TNetworkInfo networkInfo; 
        networkInfo.iId.iCountryCode = KTestCountryCode; 
        networkInfo.iId.iNetworkCode = KTestNetworkCode; 
        networkInfo.iStatus = MPsetNetworkSelect::ENetStatAvailable;
        networkInfo.iMode = MPsetNetworkSelect::ENetSelectModeAutomatic;
        networkInfo.iAccess = MPsetNetworkSelect::ENetNetworkWCDMA; 
        networkInfo.iShortName = KNetworkShortName; 
        networkInfo.iLongName = KNetworkLongName;     
    
	// Do tests here 	
	iPsetNetwork->SelectNetworkL( networkInfo ); 
	
	// Parse result data	
	iTestParser.ParseTNetworkInfo( networkInfo ); 
	
	// Uninitialize test     
	TearDownL(); 
	
	// Set result for STIF framework
	aResult.SetResult( KErrNone, KNetworkSelectNetworkL );		    
    iTestMessageHandler.PrintMessage( KExitingTestCase() );    
    
	return KErrNone;          
    }

// -----------------------------------------------------------------------------
// CPhoneSettingsTestNetwork::TestSetNetSAObserver
// 
// -----------------------------------------------------------------------------
//
TInt CPhoneSettingsTestNetwork::TestSetNetSAObserver(TTestResult& aResult)
    {
 	iTestMessageHandler.PrintMessage( KStartingTestCase() );
	iTestMessageHandler.PrintMessage( KNetworkSetNetSAObserver() );
	
	// Initialize test 
    CPsetContainer* psetContainer = CPsetContainer::NewL();        
    CleanupStack::PushL( psetContainer ); 
	
    CPhoneSettingsTestNetworkInfoObserver* phoneSettingsTestNetworkInfoObserver = 
        CPhoneSettingsTestNetworkInfoObserver::NewL();   
    CleanupStack::PushL( phoneSettingsTestNetworkInfoObserver );      

    CPsetNetwork* psetNetwork  = psetContainer->CreateNetworkObjectL(
	    *phoneSettingsTestNetworkInfoObserver );
    CleanupStack::PushL( psetNetwork );   
        
	// Do tests here 
	psetNetwork->SetNetSAObserver( *phoneSettingsTestNetworkInfoObserver ); 
	
	// Uninitialize test 	
	CleanupStack::PopAndDestroy( 3 );   
	
	// Set result for STIF framework
	aResult.SetResult( KErrNone, KNetworkSetNetSAObserver );		    
    iTestMessageHandler.PrintMessage( KExitingTestCase() );    
    
	return KErrNone;           
    }

// -----------------------------------------------------------------------------
// CPhoneSettingsTestNetwork::TestSetNetworkModeObserver
// 
// -----------------------------------------------------------------------------
//
TInt CPhoneSettingsTestNetwork::TestSetNetworkModeObserver(TTestResult& aResult)
    {
 	iTestMessageHandler.PrintMessage( KStartingTestCase() );
	iTestMessageHandler.PrintMessage( KNetworkSetNetworkModeObserver() );
	
	// Initialize test 
    CPsetContainer* psetContainer = CPsetContainer::NewL();        
    CleanupStack::PushL( psetContainer ); 
	
    CPhoneSettingsTestNetworkModeObserver* phoneSettingsTestNetworkModeObserver = 
        CPhoneSettingsTestNetworkModeObserver::NewL();   
    CleanupStack::PushL( phoneSettingsTestNetworkModeObserver );      

    CPhoneSettingsTestNetworkInfoObserver* phoneSettingsTestNetworkInfoObserver = 
        CPhoneSettingsTestNetworkInfoObserver::NewL();   
    CleanupStack::PushL( phoneSettingsTestNetworkInfoObserver );      

    CPsetNetwork* psetNetwork  = psetContainer->CreateNetworkObjectL(
	    *phoneSettingsTestNetworkInfoObserver );
    CleanupStack::PushL( psetNetwork );   
    
	// Do tests here 
	psetNetwork->SetNetworkModeObserver( *phoneSettingsTestNetworkModeObserver ); 
	
	// Uninitialize test 	
	CleanupStack::PopAndDestroy( 4 );   
	
	// Set result for STIF framework
	aResult.SetResult( KErrNone, KNetworkSetNetworkModeObserver );		    
    iTestMessageHandler.PrintMessage( KExitingTestCase() );    
    
	return KErrNone;       
    }

// -----------------------------------------------------------------------------
// CPhoneSettingsTestNetwork::TestSetNetworkModeSelectionL
// 
// -----------------------------------------------------------------------------
//
TInt CPhoneSettingsTestNetwork::TestSetNetworkModeSelectionL(TTestResult& aResult)
    {
 	iTestMessageHandler.PrintMessage( KStartingTestCase() );
	iTestMessageHandler.PrintMessage( KNetworkSetNetworkModeSelectionL() );
	
	// Initialize test     
    SetupL(); 
	
    TUint32 networkModeCapsUint = RMmCustomAPI::KCapsNetworkModeDual;      
    
	// Do tests here 
	iPsetNetwork->SetNetworkModeSelectionL( networkModeCapsUint ); 
		
	// Parse result data
	RMmCustomAPI::TNetworkModeCaps networkModeCaps = 
	    static_cast<RMmCustomAPI::TNetworkModeCaps>(networkModeCapsUint); 
	iTestParser.ParseTNetworkModeCaps( networkModeCaps ); 

	// Uninitialize test     
	TearDownL(); 
    
	// Set result for STIF framework
	aResult.SetResult( KErrNone, KNetworkSetNetworkModeSelectionL );		    
    iTestMessageHandler.PrintMessage( KExitingTestCase() );    
    
	return KErrNone;           
    }

		    					
//  End of File