mmshplugins/mmshaoplugin/tsrc/ut_aoplugin/src/ut_muscallmonitorbase.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
parent 0 f0cf47e981f9
child 23 bc78a40cd63c
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 "e32property.h"
#include "ut_muscallmonitorbase.h"
#include "mussesseioninformationapi.h"

//  SYSTEM INCLUDES
#include <digia/eunit/eunitmacros.h>

// Test configurations
_LIT(KEmptyProvider,"");
_LIT(KTestTelNumber,"+3585050");



CMusCallMonitorMock::CMusCallMonitorMock( const RMobileCall& aCall,
										MMusTsyPropertyObserver& aObserver,
										MMusCallStateObserver& aCallStateObserver ) 
        : CMusCallMonitorBase( aCall, aObserver, aCallStateObserver )
    {
    }


void CMusCallMonitorMock::RunL()
    {
    }

void CMusCallMonitorMock::DoCancel()
    {
    }

CMusCallMonitorMock::~CMusCallMonitorMock()
    {
    Cancel();        
    }


// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
UT_CMusCallMonitorBase* UT_CMusCallMonitorBase::NewL()
    {
    UT_CMusCallMonitorBase* self = UT_CMusCallMonitorBase::NewLC();
    CleanupStack::Pop( self );
    return self;
    }


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


// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
UT_CMusCallMonitorBase::~UT_CMusCallMonitorBase()
    {
    // None
    }


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


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

// -----------------------------------------------------------------------------
// UT_CMusCallMonitorBase::NotifyCallStateChanged() 
// -----------------------------------------------------------------------------
//
void UT_CMusCallMonitorBase::NotifyCallStateChanged(
									NMusSessionInformationApi::TMusCallEvent /*aVal*/,
									TName& /*aCallName*/ )
    {          
    }



// -----------------------------------------------------------------------------
//  MusCallStateChanged from the MusCallStateObserver 
// -----------------------------------------------------------------------------
//
void UT_CMusCallMonitorBase::MusCallStateChanged()
    {
    iCallStateObserverInvoked = ETrue;
    }   



// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void UT_CMusCallMonitorBase::SetupL()
    {
    RProperty::Set( NMusSessionInformationApi::KCategoryUid,
                     NMusSessionInformationApi::KMusCallEvent,
                     0 );
    RTelHelper::SetCallDirection( RMobileCall::EDirectionUnknown );
    iCallMonitorBase = new CMusCallMonitorMock( iCall, *this, *this );
    iCallStateObserverInvoked = EFalse;
    }


void UT_CMusCallMonitorBase::Setup2L()
    {
    iCallStateObserverInvoked = EFalse;
    iCallMonitorBase = new CMusCallMonitorMock( iCall, *this, *this );    
    }

// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void UT_CMusCallMonitorBase::Teardown()
    {    
    delete iCallMonitorBase;
    PropertyHelper::Close();
    iCall.Close();
    }



// TEST CASES


// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void UT_CMusCallMonitorBase::UT_SetStateLL()
    {
    TInt tmp;
    EUNIT_ASSERT ( RProperty::Get( NMusSessionInformationApi::KCategoryUid,
                     NMusSessionInformationApi::KMusCallEvent, tmp ) != KErrNone );
    
    EUNIT_ASSERT_LEAVE( iCallMonitorBase->SetStateL( NMusSessionInformationApi::ECallHold ) );
    
    if ( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
                     NMusSessionInformationApi::KMusCallEvent,
                     0 ) != KErrNone )
        {
        User::Leave( KErrNoMemory );
        }
	if ( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
                     NMusSessionInformationApi::KMusCallCount,
                     1 ) != KErrNone )
        {
        User::Leave( KErrNoMemory );
        }
	
	EUNIT_ASSERT (!iCallStateObserverInvoked )
	
    iCallMonitorBase->SetStateL( NMusSessionInformationApi::ECallHold );
	
	EUNIT_ASSERT ( iCallStateObserverInvoked )

    RProperty::Get( NMusSessionInformationApi::KCategoryUid,
                     NMusSessionInformationApi::KMusCallEvent,
                     tmp );
    EUNIT_ASSERT( tmp==NMusSessionInformationApi::ECallHold);
    
    iCallMonitorBase->SetStateL( NMusSessionInformationApi::ECallHold );
    RProperty::Get( NMusSessionInformationApi::KCategoryUid,
                     NMusSessionInformationApi::KMusCallEvent,
                     tmp );
    EUNIT_ASSERT( tmp==NMusSessionInformationApi::ECallHold);

    iCallMonitorBase->SetStateL( NMusSessionInformationApi::ECallConnected );
    RProperty::Get( NMusSessionInformationApi::KCategoryUid,
                     NMusSessionInformationApi::KMusCallEvent,
                     tmp );
    EUNIT_ASSERT( tmp==NMusSessionInformationApi::ECallConnected );
    
    }


// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void UT_CMusCallMonitorBase::UT_SetCallInfoLL()
    {
    _LIT( KTelnro, "1234" );
    TName telnro;
    TInt direction;
    
    iCallMonitorBase->SetCallInfoL();
    
    RProperty::Get( NMusSessionInformationApi::KCategoryUid,
                     NMusSessionInformationApi::KMusTelNumber,
                     telnro );
    
    EUNIT_ASSERT( telnro == KTelnro );
    
    RProperty::Get( NMusSessionInformationApi::KCategoryUid,
                     NMusSessionInformationApi::KMusCallDirection,
                     direction );
    
    EUNIT_ASSERT( direction == NMusSessionInformationApi::ENoDirection );
    
    RTelHelper::SetCallDirection( RMobileCall::EMobileOriginated );
    
    iCallMonitorBase->SetCallInfoL();
    
    RProperty::Get( NMusSessionInformationApi::KCategoryUid,
                     NMusSessionInformationApi::KMusTelNumber,
                     telnro );
    
    EUNIT_ASSERT( telnro == KTelnro );

    RProperty::Get( NMusSessionInformationApi::KCategoryUid,
                     NMusSessionInformationApi::KMusCallDirection,
                     direction );
    
    EUNIT_ASSERT( direction == NMusSessionInformationApi::ECallOrginated );
    
    RTelHelper::SetCallDirection( RMobileCall::EMobileTerminated );
    iCallMonitorBase->SetCallInfoL();
    
    RProperty::Get( NMusSessionInformationApi::KCategoryUid,
                     NMusSessionInformationApi::KMusTelNumber,
                     telnro );
    
    EUNIT_ASSERT( telnro == KTelnro );

    RProperty::Get( NMusSessionInformationApi::KCategoryUid,
                     NMusSessionInformationApi::KMusCallDirection,
                     direction );
    
    EUNIT_ASSERT( direction == NMusSessionInformationApi::ECallTerminated );
    
    /* Test for call provider */
    // Call Provider info is only Set for VoIP Calls
    iCallMonitorBase->SetCallInfoL();  
    TBuf<RProperty::KMaxPropertySize> provider;
    RProperty::Get( NMusSessionInformationApi::KCategoryUid,
                    NMusSessionInformationApi::KMUSCallProvider,
                    provider );
    
    
    EUNIT_ASSERT( provider == KEmptyProvider );
    }


// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
void UT_CMusCallMonitorBase::UT_RunErrorL()
    {
    EUNIT_ASSERT( iCallMonitorBase->RunError( KErrNotFound ) == KErrNone );
    }


// -----------------------------------------------------------------------------
// UT_CMusCallMonitorBase::UT_CMusCallMonitorBase_IsDataReadyLL()
// Test if required Data is ready for CS calls
// -----------------------------------------------------------------------------
//
void UT_CMusCallMonitorBase::UT_CMusCallMonitorBase_IsDataReadyLL()
    {
    TBool dataReady = EFalse;
    
    //Test-1: Date Ready:
    User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
                                            NMusSessionInformationApi::KMusTelNumber,
                                            KTestTelNumber ));

    User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
                                            NMusSessionInformationApi::KMusCallDirection,
                                            NMusSessionInformationApi::ECallOrginated ));
            
    dataReady = iCallMonitorBase->IsDataReadyL();
    EUNIT_ASSERT_EQUALS( dataReady, ETrue )
    
    //Test-2: Partial Data is Ready
    User::LeaveIfError( RProperty::Set( NMusSessionInformationApi::KCategoryUid,
                                            NMusSessionInformationApi::KMusTelNumber,
                                            KNullDesC ));
    dataReady = iCallMonitorBase->IsDataReadyL();
    EUNIT_ASSERT_EQUALS( dataReady, EFalse )


    //Test-3: Data Not Ready.
    User::LeaveIfError(RProperty::Set( NMusSessionInformationApi::KCategoryUid,
                 NMusSessionInformationApi::KMusCallEvent,
                 ( TInt ) NMusSessionInformationApi::ENoCall ));

    dataReady = iCallMonitorBase->IsDataReadyL();
    EUNIT_ASSERT_EQUALS( dataReady, EFalse )
    }


//  TEST TABLE

EUNIT_BEGIN_TEST_TABLE(
    UT_CMusCallMonitorBase,
    "UT_CMusCallMonitorBase",
    "UNIT" )

EUNIT_TEST(
    "SetStateL - test",
    "CMusCallMonitorBase",
    "SetStateL",
    "FUNCTIONALITY",
    Setup2L, UT_SetStateLL, Teardown)

EUNIT_TEST(
    "SetCallInfoL - test",
    "CMusCallMonitorBase",
    "SetCallInfoL",
    "FUNCTIONALITY",
    SetupL, UT_SetCallInfoLL, Teardown)

EUNIT_TEST(
    "RunError - test",
    "CMusCallMonitorBase",
    "RunError",
    "FUNCTIONALITY",
    SetupL, UT_RunErrorL, Teardown)
    
    
EUNIT_TEST(
    "IsDataReadyL - test",
    "CMusCallMonitorBase",
    "IsDataReadyL",
    "FUNCTIONALITY",
    SetupL, UT_CMusCallMonitorBase_IsDataReadyLL, Teardown)    
    

EUNIT_END_TEST_TABLE

//  END OF FILE