phoneapp/phoneuicontrol/tsrc/ut_cphoneaccessorybthandler/Src/ut_cphoneaccessorybthandler.cpp
author hgs
Mon, 04 Oct 2010 16:06:10 +0300
changeset 76 cfea66083b62
parent 74 d1c62c765e48
permissions -rw-r--r--
201039

/*
* 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:
*
*/

#include "UT_CPhoneAccessoryBTHandler.h"
#include "FeatMgr.h"
#include <EUnitMacros.h>
#include <EUnitDecorators.h>
#include <btengdomainpskeys.h>
#include <e32property.h>

#include <csmcmockcontext.h>
#include <smcdefaultvalue.h>
#include <msmcmockspecbuilder.h>
#include <smcobjecttotypemapper.h>

#include <coemain.h>

#include "cpeengineinfo.h"
#include "cpeengineinfoimpl.h"
#include "cphonemainresourceresolver.h"
#include "tphonecmdparamnote.h"

#include "cphonestatemachinegsm.h"
#include "mock_cphoneviewcommandhandle.h"
#include "cphoneaccessorybthandler.h"


// needed for mocking CPhoneMainResourceResolver::Instance()
class CPhoneMainResourceResolverMock : public CPhoneMainResourceResolver
    {
    };

// - Construction -----------------------------------------------------------

UT_CPhoneAccessoryBTHandler* UT_CPhoneAccessoryBTHandler::NewL()
    {
    UT_CPhoneAccessoryBTHandler* self = UT_CPhoneAccessoryBTHandler::NewLC();
    CleanupStack::Pop();
    return self;
    }

UT_CPhoneAccessoryBTHandler* UT_CPhoneAccessoryBTHandler::NewLC()
    {
    UT_CPhoneAccessoryBTHandler* self = new( ELeave ) UT_CPhoneAccessoryBTHandler();
    CleanupStack::PushL( self );
    self->ConstructL();
    return self;
    }

UT_CPhoneAccessoryBTHandler::~UT_CPhoneAccessoryBTHandler()
    {
    CSmcMockContext::Release();
    }

UT_CPhoneAccessoryBTHandler::UT_CPhoneAccessoryBTHandler()
    {
    }

void UT_CPhoneAccessoryBTHandler::ConstructL()
    {
    CEUnitTestSuiteClass::ConstructL();
    iMockContext = CSmcMockContext::InstanceL();
    } 

// - Test methods -----------------------------------------------------------
void UT_CPhoneAccessoryBTHandler::SetupL(  )
    {
    iEntryCleared = EFalse;
    iMockContext->InitializeL();
    
    iCPhoneMainResourceResolverMock = new ( ELeave ) CPhoneMainResourceResolverMock();
           SmcDefaultValue<CPhoneMainResourceResolver*>::SetL( iCPhoneMainResourceResolverMock );
           
    SmcDefaultValue<const TPEAudioOutput&>::SetL( EPENotActive );
    
    iViewCmdHandleMock = new CPhoneViewCommandHandleMock();
    iStateMachineMock = CPhoneStateMachineGSM::NewL( iViewCmdHandleMock );
    
    iCoeEnvMock = new (ELeave ) CCoeEnv();
    SmcDefaultValue<CCoeEnv*>::SetL( iCoeEnvMock );

    iEngineInfoMock = CPEEngineInfo::NewL();
            SmcDefaultValue<MPEEngineInfo*>::SetL( iEngineInfoMock );
    
    iCPhoneAccessoryBTHandler = 
        CPhoneAccessoryBTHandler::NewLC( 
        iViewCmdHandleMock,
        iStateMachineMock );

    }

void UT_CPhoneAccessoryBTHandler::Teardown(  )
    {
    delete iCPhoneMainResourceResolverMock;
    iCPhoneMainResourceResolverMock = NULL;
            
    CleanupStack::PopAndDestroy( iCPhoneAccessoryBTHandler ); 
    iCPhoneAccessoryBTHandler = NULL;
    
    delete iViewCmdHandleMock;
    iViewCmdHandleMock = NULL;
    
    delete iStateMachineMock;
    iStateMachineMock = NULL;
    
    delete iCoeEnvMock;
    iCoeEnvMock = NULL;
    SmcDefaultValue<CCoeEnv*>::Reset();
    
    delete iEngineInfoMock;
    iEngineInfoMock = NULL;
    
    SmcDefaultValue<const TPEAudioOutput&>::Reset();
    
    iMockContext->Reset();
    }
    
void UT_CPhoneAccessoryBTHandler::HandleNumberEntryClearedL()
    {
    iEntryCleared = ETrue;
    }
  
void UT_CPhoneAccessoryBTHandler::UT_SetBTHandsfreeModeL_ONL(  )
    {
    iMockContext->ExpectCallL( "CPEEngineInfoImpl::AudioOutput" );
    iMockContext->ExpectCallL( "CPEEngineInfoImpl::SetAudioOutputCommand" ).
            WithL<TPEAudioOutput, TInt>(EPEBTAudioAccessory, ETrue);
    iCPhoneAccessoryBTHandler->SetBTHandsfreeModeL(ETrue );
    
    EUNIT_ASSERT_EQUALS( ETrue, iCPhoneAccessoryBTHandler->SetBTHandsfreeModeL( ETrue ) );
    EUNIT_ASSERT_EQUALS( KErrNone, iMockContext->VerifyExpectations() ); 
    }

void UT_CPhoneAccessoryBTHandler::UT_SetBTHandsfreeModeL_OFFL(  )
    {
    iMockContext->ExpectCallL( "CPEEngineInfoImpl::AudioOutput" );
    iMockContext->ExpectCallL( "CPEEngineInfoImpl::SetAudioOutputCommand" ).
            WithL<TPEAudioOutput, TInt>(EPEHandset, EFalse);
    
    EUNIT_ASSERT_EQUALS( ETrue, iCPhoneAccessoryBTHandler->SetBTHandsfreeModeL( EFalse ) );
    EUNIT_ASSERT_EQUALS( KErrNone, iMockContext->VerifyExpectations() ); 
    }

void UT_CPhoneAccessoryBTHandler::UT_SetBTHandsfreeModeL_ON_AudioRoutedToWiredAudioAccessoryL(  )
    {
    SmcDefaultValue<const TPEAudioOutput&>::SetL( EPEWiredAudioAccessory );
    iMockContext->ExpectCallL( "CPEEngineInfoImpl::AudioOutput" ).TimesL(1);
    iMockContext->ExpectCallL( "CPEEngineInfoImpl::SetAudioOutputCommand" ).TimesL(0);
    
    EUNIT_ASSERT_EQUALS( EFalse, iCPhoneAccessoryBTHandler->SetBTHandsfreeModeL( ETrue ) );
    EUNIT_ASSERT_EQUALS( KErrNone, iMockContext->VerifyExpectations() ); 
    }
    
void UT_CPhoneAccessoryBTHandler::UT_SetHandsfreeModeL_ONL(  )
    {
    iMockContext->ExpectCallL( "CPEEngineInfoImpl::AudioOutput" ).
            ReturnsL( EPENotActive );
    iMockContext->ExpectCallL( "CPEEngineInfoImpl::SetAudioOutputCommand" ).
            WithL<TPEAudioOutput, TInt>(EPELoudspeaker, ETrue);
    iCPhoneAccessoryBTHandler->SetBTHandsfreeModeL( ETrue );
    
    EUNIT_ASSERT_EQUALS( ETrue, iCPhoneAccessoryBTHandler->SetHandsfreeModeL( ETrue ) );
    EUNIT_ASSERT_EQUALS( KErrNone, iMockContext->VerifyExpectations() ); 
    }

void UT_CPhoneAccessoryBTHandler::UT_SetHandsfreeModeL_OFFL(  )
    {
    iMockContext->ExpectCallL( "CPEEngineInfoImpl::AudioOutput" ).
            ReturnsL( EPENotActive );
    iMockContext->ExpectCallL( "CPEEngineInfoImpl::SetAudioOutputCommand" ).
            WithL<TPEAudioOutput, TInt>(EPEHandset, EFalse);
    
    EUNIT_ASSERT_EQUALS( ETrue, iCPhoneAccessoryBTHandler->SetHandsfreeModeL( EFalse ) );
    EUNIT_ASSERT_EQUALS( KErrNone, iMockContext->VerifyExpectations() ); 
    }

void UT_CPhoneAccessoryBTHandler::UT_SetHandsfreeModeL_ON_AudioRoutedToWiredAudioAccessoryL(  )
    {
    SmcDefaultValue<const TPEAudioOutput&>::SetL( EPEWiredAudioAccessory );
    iMockContext->ExpectCallL( "CPEEngineInfoImpl::AudioOutput" ).TimesL(1);
    iMockContext->ExpectCallL( "CPEEngineInfoImpl::SetAudioOutputCommand" ).TimesL(0);
    
    EUNIT_ASSERT_EQUALS( EFalse, iCPhoneAccessoryBTHandler->SetHandsfreeModeL( ETrue ) );
    EUNIT_ASSERT_EQUALS( KErrNone, iMockContext->VerifyExpectations() ); 
    }
    
void UT_CPhoneAccessoryBTHandler::UT_ShowBTAddressLL(  )
    {
    // dummy test.
    iMockContext->ExpectCallL( "CPhoneViewCommandHandleMock::ExecuteCommandL" ).
            WithL( EPhoneViewClearNumberEntryContent );
    
    TPhoneCmdParamNote noteParam;
    noteParam.SetType( EPhoneNoteCustom );
    iMockContext->ExpectCallL( "CPhoneViewCommandHandleMock::ExecuteCommandL" ).
            WithL<TPhoneViewCommandId, TPhoneCommandParam&> ( EPhoneViewShowNote, noteParam );
    
    iCPhoneAccessoryBTHandler->ShowBTAddressL();
    EUNIT_ASSERT_EQUALS( KErrNone, iMockContext->VerifyExpectations() ); 
    }
    
void UT_CPhoneAccessoryBTHandler::UT_ShowBTLoopbackL(  )
    {
    // dummy test.
    iMockContext->ExpectCallL( "CPhoneViewCommandHandleMock::ExecuteCommandL" ).
            WithL( EPhoneViewClearNumberEntryContent );
    
    TPhoneCmdParamNote noteParam;
    noteParam.SetType( EPhoneNoteCustom );
    iMockContext->ExpectCallL( "CPhoneViewCommandHandleMock::ExecuteCommandL" ).
            WithL<TPhoneViewCommandId, TPhoneCommandParam&> ( EPhoneViewShowNote, noteParam );
    
    iCPhoneAccessoryBTHandler->ShowBTLoopbackL();
    EUNIT_ASSERT_EQUALS( KErrNone, iMockContext->VerifyExpectations() ); 
    }
    
void UT_CPhoneAccessoryBTHandler::UT_ShowBTActivatedL(  )
    {
    // dummy test.
    TPhoneCmdParamNote noteParam;
    noteParam.SetType( EPhoneNoteConfirmation );
    iMockContext->ExpectCallL( "CPhoneViewCommandHandleMock::ExecuteCommandL" ).
            WithL<TPhoneViewCommandId, TPhoneCommandParam&> ( EPhoneViewShowNote, noteParam );
    
    iCPhoneAccessoryBTHandler->ShowBTActivatedL();
    EUNIT_ASSERT_EQUALS( KErrNone, iMockContext->VerifyExpectations() ); 
    }

// - EUnit test table -------------------------------------------------------

EUNIT_BEGIN_TEST_TABLE(
    UT_CPhoneAccessoryBTHandler,
    "Add test suite description here.",
    "UNIT" )
    
EUNIT_TEST(
    "SetBTHandsfreeModeL_ONL - test1",
    "CPhoneAccessoryBTHandler",
    "SetBTHandsfreeModeL_ONL - test1",
    "FUNCTIONALITY",
    SetupL, UT_SetBTHandsfreeModeL_ONL, Teardown)
    
EUNIT_TEST(
    "SetBTHandsfreeModeL_OFFL - test2",
    "CPhoneAccessoryBTHandler",
    "SetBTHandsfreeModeL_OFFL - test2",
    "FUNCTIONALITY",
    SetupL, UT_SetBTHandsfreeModeL_OFFL, Teardown)
    
EUNIT_TEST(
    "SetBTHandsfreeModeL_ON_AudioRoutedToWiredAudioAccessoryL - test3",
    "CPhoneAccessoryBTHandler",
    "SetBTHandsfreeModeL_ON_AudioRoutedToWiredAudioAccessoryL - test3",
    "FUNCTIONALITY",
    SetupL, UT_SetBTHandsfreeModeL_ON_AudioRoutedToWiredAudioAccessoryL, Teardown)
    
EUNIT_TEST(
    "SetHandsfreeModeL_ONL - test4",
    "CPhoneAccessoryBTHandler",
    "SetHandsfreeModeL_ONL - test4",
    "FUNCTIONALITY",
    SetupL, UT_SetHandsfreeModeL_ONL, Teardown)
    
EUNIT_TEST(
    "SetHandsfreeModeL_OFFL - test5",
    "CPhoneAccessoryBTHandler",
    "SetHandsfreeModeL_OFFL - test5",
    "FUNCTIONALITY",
    SetupL, UT_SetHandsfreeModeL_OFFL, Teardown)
    
EUNIT_TEST(
    "SetHandsfreeModeL_ON_AudioRoutedToWiredAudioAccessoryL - test6",
    "CPhoneAccessoryBTHandler",
    "SetHandsfreeModeL_ON_AudioRoutedToWiredAudioAccessoryL - test6",
    "FUNCTIONALITY",
    SetupL, UT_SetHandsfreeModeL_ON_AudioRoutedToWiredAudioAccessoryL, Teardown)
    
EUNIT_TEST(
    "ShowBTAddressLL - test7",
    "CPhoneAccessoryBTHandler",
    "ShowBTAddressLL - test7",
    "FUNCTIONALITY",
    SetupL, UT_ShowBTAddressLL, Teardown)
    
EUNIT_TEST(
    "ShowBTLoopbackL - test8",
    "CPhoneAccessoryBTHandler",
    "ShowBTLoopbackL - test8",
    "FUNCTIONALITY",
    SetupL, UT_ShowBTLoopbackL, Teardown)
    
EUNIT_TEST(
    "ShowBTActivatedL - test9",
    "CPhoneAccessoryBTHandler",
    "ShowBTActivatedL - test9",
    "FUNCTIONALITY",
    SetupL, UT_ShowBTActivatedL, Teardown)

EUNIT_END_TEST_TABLE