diff -r 73a1feb507fb -r bc78a40cd63c mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengsession.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengsession.cpp Wed Sep 01 12:31:01 2010 +0100 @@ -0,0 +1,637 @@ +/* +* 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 "telephonyaudiorouting.h" +#include "ut_musengsession.h" +#include "musengstubs.h" +#include "musengtestdefs.h" + +#include "musenglivesession.h" +#include "musengtelephoneutils.h" +#include "musengmceutils.h" + +// SYSTEM INCLUDES +#include +#include +#include +#include +#include + + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +UT_CMusEngSession* UT_CMusEngSession::NewL() + { + UT_CMusEngSession* self = UT_CMusEngSession::NewLC(); + CleanupStack::Pop( self ); + return self; + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +UT_CMusEngSession* UT_CMusEngSession::NewLC() + { + UT_CMusEngSession* self = new( ELeave ) UT_CMusEngSession(); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +UT_CMusEngSession::~UT_CMusEngSession() + { + // NOP + } + + +// ----------------------------------------------------------------------------- +// Default constructor +// ----------------------------------------------------------------------------- +// +UT_CMusEngSession::UT_CMusEngSession() + :iLiveSession( NULL ), + iObserver( NULL ) + { + // NOP + } + + +// ----------------------------------------------------------------------------- +// Second phase construct +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSession::ConstructL() + { + // The ConstructL from the base class CEUnitTestSuiteClass must be called. + // It generates the test case table. + CEUnitTestSuiteClass::ConstructL(); + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSession::SetupL() + { + iObserver = new( ELeave ) CMusEngObserverStub; + iLiveSession = CMusEngLiveSession::NewL( KNullDesC(), + TRect(0,0, 100,100), + *iObserver, + *iObserver, + *iObserver ); + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSession::Teardown() + { + delete iLiveSession; + delete iObserver; + } + + + +// TEST CASES + + + + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSession::UT_RectL() + { + TRect rect = iLiveSession->Rect(); + + // Initial values + EUNIT_ASSERT( rect.iTl.iX == 0 ); + EUNIT_ASSERT( rect.iTl.iY == 0 ); + EUNIT_ASSERT( rect.iBr.iX == 100 ); + EUNIT_ASSERT( rect.iBr.iY == 100 ); + + iLiveSession->iRect.iTl.iX = 100; + iLiveSession->iRect.iTl.iY = 200; + iLiveSession->iRect.iBr.iX = 300; + iLiveSession->iRect.iBr.iY = 400; + + rect = iLiveSession->Rect(); + + EUNIT_ASSERT( rect.iTl.iX == 100 ); + EUNIT_ASSERT( rect.iTl.iY == 200 ); + EUNIT_ASSERT( rect.iBr.iX == 300 ); + EUNIT_ASSERT( rect.iBr.iY == 400 ); + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSession::UT_SetRectLL() + { + TRect rect; + + rect.iTl.iX = 100; + rect.iTl.iY = 200; + rect.iBr.iX = 300; + rect.iBr.iY = 400; + + iLiveSession->SetRectL( rect ); + + EUNIT_ASSERT( iLiveSession->iRect.iTl.iX == 100 ); + EUNIT_ASSERT( iLiveSession->iRect.iTl.iY == 200 ); + EUNIT_ASSERT( iLiveSession->iRect.iBr.iX == 300 ); + EUNIT_ASSERT( iLiveSession->iRect.iBr.iY == 400 ); + + ESTABLISH_OUT_SESSION( iLiveSession ); + + CMceDisplaySink* display = + MusEngMceUtils::GetDisplayL( *( iLiveSession->iSession ) ); + + TRect displayRect = display->DisplayRectL(); + + EUNIT_ASSERT( displayRect.iTl.iX == 100 ); + EUNIT_ASSERT( displayRect.iTl.iY == 200 ); + EUNIT_ASSERT( displayRect.iBr.iX == 300 ); + EUNIT_ASSERT( displayRect.iBr.iY == 400 ); + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSession::UT_AudioRoutingCanBeChangedL() + { + iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput = + CTelephonyAudioRouting::ELoudspeaker; + EUNIT_ASSERT( iLiveSession->AudioRoutingCanBeChanged() ); + + iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput = + CTelephonyAudioRouting::EWiredAudioAccessory; + EUNIT_ASSERT( !iLiveSession->AudioRoutingCanBeChanged() ); + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSession::UT_IsAudioRoutingHeadsetL() + { + iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput = + CTelephonyAudioRouting::EBTAudioAccessory; + EUNIT_ASSERT( iLiveSession->IsAudioRoutingHeadset() ); + + iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput = + CTelephonyAudioRouting::ENotActive; + EUNIT_ASSERT( !iLiveSession->IsAudioRoutingHeadset()); + + iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput = + CTelephonyAudioRouting::ENone; + EUNIT_ASSERT( !iLiveSession->IsAudioRoutingHeadset()); + + iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput = + CTelephonyAudioRouting::EHandset; + EUNIT_ASSERT( !iLiveSession->IsAudioRoutingHeadset()); + + iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput = + CTelephonyAudioRouting::ELoudspeaker; + EUNIT_ASSERT( !iLiveSession->IsAudioRoutingHeadset()); + + iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput = + CTelephonyAudioRouting::EWiredAudioAccessory; + EUNIT_ASSERT( iLiveSession->IsAudioRoutingHeadset()); + + iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput = + CTelephonyAudioRouting::ETTY; + EUNIT_ASSERT( !iLiveSession->IsAudioRoutingHeadset()); + + } + +void UT_CMusEngSession::UT_IsAudioRoutingLoudSpeakerL() + { + iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput = + CTelephonyAudioRouting::ELoudspeaker; + iLiveSession->iTelephoneUtils->iAudioOutputAtStartup = + CTelephonyAudioRouting::ELoudspeaker; + EUNIT_ASSERT( !iLiveSession->IsAudioRoutingLoudSpeaker()); + + iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput = + CTelephonyAudioRouting::ELoudspeaker; + iLiveSession->iTelephoneUtils->iAudioOutputAtStartup = + CTelephonyAudioRouting::EHandset; + EUNIT_ASSERT( iLiveSession->IsAudioRoutingLoudSpeaker() ); + + iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput = + CTelephonyAudioRouting::ELoudspeaker; + iLiveSession->iTelephoneUtils->iAudioOutputAtStartup = + CTelephonyAudioRouting::EBTAudioAccessory; + EUNIT_ASSERT( iLiveSession->IsAudioRoutingLoudSpeaker() ); + + iLiveSession->iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput = + CTelephonyAudioRouting::ELoudspeaker; + iLiveSession->iTelephoneUtils->iAudioOutputAtStartup = + CTelephonyAudioRouting::EWiredAudioAccessory; + EUNIT_ASSERT( iLiveSession->IsAudioRoutingLoudSpeaker() ); + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSession::UT_EnableLoudspeakerLL() + { + // Almost dummy case is enough, because IsLoudSpeakerEnabled forwards + // requests to CMusEngTelephonyUtils and is tested there. So test only + // fail handling + iLiveSession->EnableLoudspeakerL( EFalse, EFalse ); + + CMusEngTelephoneUtils* telephone = iLiveSession->iTelephoneUtils; + + EUNIT_ASSERT( telephone->iTelephonyAudioRouting->iShowNoteMode == EFalse ); + EUNIT_ASSERT( telephone->iTelephonyAudioRouting->iCurrentOutput != + CTelephonyAudioRouting::ELoudspeaker ); + + telephone->iTelephonyAudioRouting->iForceFailWithCode = KErrNotSupported; + + //Must fail in HW, but not in emulator + TRAPD( error, iLiveSession->EnableLoudspeakerL( ETrue, ETrue ) ); + MUS_TEST_FORWARD_ALLOC_FAILURE( error ); + + #if (!defined (__WINS__) && !defined(__WINSCW__)) + EUNIT_ASSERT( error == KErrNotSupported ); + #else + EUNIT_ASSERT( error == KErrNone ); + #endif + + EUNIT_ASSERT( telephone->iTelephonyAudioRouting->iCurrentOutput != + CTelephonyAudioRouting::ELoudspeaker ); + + telephone->iTelephonyAudioRouting->iForceFailWithCode = KErrGeneral; + + // Must fail in all cases + TRAP( error, iLiveSession->EnableLoudspeakerL( EFalse, ETrue ) ); + MUS_TEST_FORWARD_ALLOC_FAILURE( error ); + EUNIT_ASSERT( error == KErrGeneral ); + + EUNIT_ASSERT( telephone->iTelephonyAudioRouting->iCurrentOutput != + CTelephonyAudioRouting::ELoudspeaker ); + + + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSession::UT_IsLoudSpeakerEnabledL() + { + // Dummy case is enough, because IsLoudSpeakerEnabled forwards requests + // to CMusEngTelephonyUtils and is tested there. + + // By default loudspeaker is not enabled. + EUNIT_ASSERT( !iLiveSession->IsLoudSpeakerEnabled() ); + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSession::UT_VolumeLL() + { + // Dummy case is enough, because VolumeL forwards requests + // to CMusEngTelephonyUtils and is tested there. + + iLiveSession->IsLoudSpeakerEnabled(); + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSession::UT_MuteMicLL() + { + // Cannot test since EUnit notices some error leak if + // the state of the mute is actually changed. Still, from MusEngine + // point of view everything is done identically despite the fact if + // real state changes or not. => Problem is in EUnit or leak happens + // elsewhere. + } + + +// ----------------------------------------------------------------------------- +// Almost a dummy test since we cannot write +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSession::UT_IsMicMutedLL() + { + // Ignore error (KErrAlreadyExists etc), just make sure this property exists + RProperty::Define( KPSUidTelMicrophoneMuteStatus, + KTelMicrophoneMuteState, + RProperty::EInt, + 0 ); + + User::LeaveIfError( RProperty::Set( KPSUidTelMicrophoneMuteStatus, + KTelMicrophoneMuteState, + EPSTelMicMuteStateUninitialized ) ); + + EUNIT_ASSERT( !iLiveSession->IsMicMutedL() ) + + User::LeaveIfError( RProperty::Set( KPSUidTelMicrophoneMuteStatus, + KTelMicrophoneMuteState, + EPSTelMicMuteOn ) ); + + EUNIT_ASSERT( iLiveSession->IsMicMutedL() ) + + User::LeaveIfError( RProperty::Set( KPSUidTelMicrophoneMuteStatus, + KTelMicrophoneMuteState, + EPSTelMicMuteOff ) ); + + EUNIT_ASSERT( !iLiveSession->IsMicMutedL() ) + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSession::UT_SetAudioRoutingObserverL() + { + EUNIT_ASSERT( !iLiveSession->iTelephoneUtils->iAudioRoutingObserver ) + + iLiveSession->SetAudioRoutingObserver( iObserver ); + + EUNIT_ASSERT_EQUALS( iLiveSession->iTelephoneUtils->iAudioRoutingObserver, + iObserver ) + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSession::UT_VolumeUpLL() + { + CMusEngTelephoneUtils* telephone = iLiveSession->iTelephoneUtils; + + // Next ones must leave if runs out of memory, so that test + // does not fail when executed with alloc fail simulation + User::LeaveIfError( telephone->iRepository->Set( + KTelIncallEarVolume, + KTelephonyVolumeDefaultValue ) ); + User::LeaveIfError( telephone->iRepository->Set( + KTelIncallLoudspeakerVolume, + KTelephonyVolumeDefaultValue ) ); + + + TInt earVolume = 0; + TInt speakerVolume = 0; + + iLiveSession->CMusEngSession::VolumeUpL(); + + telephone->iRepository->Get( KTelIncallEarVolume, + earVolume ); + telephone->iRepository->Get( KTelIncallLoudspeakerVolume, + speakerVolume ); + + EUNIT_ASSERT( earVolume == KTelephonyVolumeDefaultValue + 1 ); + EUNIT_ASSERT( speakerVolume == KTelephonyVolumeDefaultValue ); + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSession::UT_VolumeDownLL() + { + CMusEngTelephoneUtils* telephone = iLiveSession->iTelephoneUtils; + + // Next ones must leave if runs out of memory, so that test + // does not fail when executed with alloc fail simulation + User::LeaveIfError( telephone->iRepository->Set( + KTelIncallEarVolume, + KTelephonyVolumeDefaultValue ) ); + User::LeaveIfError( telephone->iRepository->Set( + KTelIncallLoudspeakerVolume, + KTelephonyVolumeDefaultValue ) ); + + + TInt earVolume = 0; + TInt speakerVolume = 0; + + iLiveSession->CMusEngSession::VolumeDownL(); + + telephone->iRepository->Get( KTelIncallEarVolume, + earVolume ); + telephone->iRepository->Get( KTelIncallLoudspeakerVolume, + speakerVolume ); + + EUNIT_ASSERT( earVolume == KTelephonyVolumeDefaultValue - 1 ); + EUNIT_ASSERT( speakerVolume == KTelephonyVolumeDefaultValue ); + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSession::UT_SetVolumeLL() + { + CMusEngTelephoneUtils* telephone = iLiveSession->iTelephoneUtils; + + // Next ones must leave if runs out of memory, so that test + // does not fail when executed with alloc fail simulation + User::LeaveIfError( telephone->iRepository->Set( + KTelIncallEarVolume, + KTelephonyVolumeDefaultValue ) ); + User::LeaveIfError( telephone->iRepository->Set( + KTelIncallLoudspeakerVolume, + KTelephonyVolumeDefaultValue ) ); + + + TInt earVolume = 0; + TInt speakerVolume = 0; + TInt newVolume = KTelephonyVolumeDefaultValue + 1; + + iLiveSession->CMusEngSession::SetVolumeL( newVolume ); + + telephone->iRepository->Get( KTelIncallEarVolume, + earVolume ); + telephone->iRepository->Get( KTelIncallLoudspeakerVolume, + speakerVolume ); + + EUNIT_ASSERT( earVolume == newVolume ); + EUNIT_ASSERT( speakerVolume == KTelephonyVolumeDefaultValue ); + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSession::UT_SetVolumeChangeObserverL() + { + EUNIT_ASSERT( !iLiveSession->iVolumeObserver ) + + iLiveSession->SetVolumeChangeObserver( iObserver ); + + EUNIT_ASSERT_EQUALS( iLiveSession->iVolumeObserver, iObserver ) + + iObserver->VolumeChanged( 2, EFalse ); + EUNIT_ASSERT( iObserver->iVolume == 2 ); + } + + +// TEST TABLE + +EUNIT_BEGIN_TEST_TABLE( + UT_CMusEngSession, + "UT_CMusEngSesssion", + "UNIT" ) + +EUNIT_TEST( + "Rect - test ", + "CMusEngSession", + "Rect", + "FUNCTIONALITY", + SetupL, UT_RectL, Teardown) + +EUNIT_TEST( + "SetRectL - test ", + "CMusEngSession", + "SetRectL", + "FUNCTIONALITY", + SetupL, UT_SetRectLL, Teardown) + +EUNIT_TEST( + "AudioRoutingCanBeChanged - test ", + "CMusEngSession", + "AudioRoutingCanBeChanged", + "FUNCTIONALITY", + SetupL, UT_AudioRoutingCanBeChangedL, Teardown) + +EUNIT_TEST( + "IsAudioRoutingHeadsetL - test ", + "CMusEngSession", + "IsAudioRoutingHeadsetL", + "FUNCTIONALITY", + SetupL, UT_IsAudioRoutingHeadsetL, Teardown) + +EUNIT_TEST( + "IsAudioRoutingLoudSpeakerL - test ", + "CMusEngSession", + "IsAudioRoutingLoudSpeakerL", + "FUNCTIONALITY", + SetupL, UT_IsAudioRoutingLoudSpeakerL, Teardown) + +EUNIT_TEST( + "EnableLoudspeakerL - test ", + "CMusEngSession", + "EnableLoudspeakerL", + "FUNCTIONALITY", + SetupL, UT_EnableLoudspeakerLL, Teardown) + +EUNIT_TEST( + "IsLoudSpeakerEnabled - test ", + "CMusEngSession", + "IsLoudSpeakerEnabled", + "FUNCTIONALITY", + SetupL, UT_IsLoudSpeakerEnabledL, Teardown) + +EUNIT_TEST( + "VolumeL - test ", + "CMusEngSession", + "VolumeL", + "FUNCTIONALITY", + SetupL, UT_VolumeLL, Teardown) + +EUNIT_TEST( + "MuteMicL - test ", + "CMusEngSession", + "MuteMicL", + "FUNCTIONALITY", + SetupL, UT_MuteMicLL, Teardown) + +EUNIT_TEST( + "IsMicMutedL - test ", + "CMusEngSession", + "IsMicMutedL", + "FUNCTIONALITY", + SetupL, UT_IsMicMutedLL, Teardown) + +EUNIT_TEST( + "SetAudioRoutingObserverL - test ", + "CMusEngSession", + "SetAudioRoutingObserverL", + "FUNCTIONALITY", + SetupL, UT_SetAudioRoutingObserverL, Teardown) + +EUNIT_TEST( + "VolumeUpL - test ", + "CMusEngSession", + "VolumeUpL", + "FUNCTIONALITY", + SetupL, UT_VolumeUpLL, Teardown) + +EUNIT_TEST( + "VolumeDownL - test ", + "CMusEngSession", + "VolumeDownL", + "FUNCTIONALITY", + SetupL, UT_VolumeDownLL, Teardown) + +EUNIT_TEST( + "SetVolumeL - test ", + "CMusEngSession", + "SetVolumeL", + "FUNCTIONALITY", + SetupL, UT_SetVolumeLL, Teardown) + +EUNIT_TEST( + "SetVolumeChangeObserver - test ", + "CMusEngSession", + "SetVolumeChangeObserver", + "FUNCTIONALITY", + SetupL, UT_SetVolumeChangeObserverL, Teardown) + + +EUNIT_END_TEST_TABLE + +// END OF FILE