diff -r 33a5d2bbf6fc -r 73a1feb507fb mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengcamerahandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengcamerahandler.cpp Tue Aug 31 15:12:07 2010 +0300 @@ -0,0 +1,956 @@ +/* +* 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 "ut_musengcamerahandler.h" +#include "musengstubs.h" +#include "musengtestdefs.h" +#include "musenglivesession.h" +#include "mussipprofilehandler.h" +#include "musengmceutils.h" +#include "mussettings.h" +#include "mussessionproperties.h" + +// SYSTEM INCLUDES +#include +#include +#include +#include +#include +#include +#include +#include + +const TUint KSipProfileId( 1 ); + +//use step in different time period +const TInt KZoomBigStepCount = 15; +const TInt KZoomSmallStepCount = KZoomBigStepCount*2; +const TInt KZoomStepMinSize = 1; + +// 0.4 second +const TInt64 KZoomFasterTime = 400000;//must bigger than 1/3 second + +//insure that step is 1 +#define USER_SLEEP User::After(KZoomFasterTime) + + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +UT_TMusEngCameraHandler* UT_TMusEngCameraHandler::NewL() + { + UT_TMusEngCameraHandler* self = UT_TMusEngCameraHandler::NewLC(); + CleanupStack::Pop( self ); + return self; + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +UT_TMusEngCameraHandler* UT_TMusEngCameraHandler::NewLC() + { + UT_TMusEngCameraHandler* self = new( ELeave ) UT_TMusEngCameraHandler(); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +UT_TMusEngCameraHandler::~UT_TMusEngCameraHandler() + { + // NOP + } + + +// ----------------------------------------------------------------------------- +// Default constructor +// ----------------------------------------------------------------------------- +// +UT_TMusEngCameraHandler::UT_TMusEngCameraHandler() + { + // NOP + } + + +// ----------------------------------------------------------------------------- +// Second phase construct +// ----------------------------------------------------------------------------- +// +void UT_TMusEngCameraHandler::ConstructL() + { + // The ConstructL from the base class CEUnitTestSuiteClass must be called. + // It generates the test case table. + CEUnitTestSuiteClass::ConstructL(); + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_TMusEngCameraHandler::SetupL() + { + iManager = CMceManager::NewL( TUid::Null(), NULL ); + iObserver = new( ELeave ) CMusEngObserverStub; + iObserver->iRoamingBetweenAPsAllowed = ETrue; + iProfileHandler = CMusSipProfileHandler::NewL( *iObserver ); + + iProfileHandler->CreateProfileL( KSipProfileId ); + + iSession = CMceOutSession::NewL( *iManager, + *iProfileHandler->Profile(), + KTestRecipientSipUri8() ); + + + CMceVideoStream* videoOut = CMceVideoStream::NewLC(); + + videoOut->AddSinkL( CMceRtpSink::NewLC() ); + CleanupStack::Pop(); + + videoOut->AddSinkL( CMceDisplaySink::NewLC( *iManager ) ); + CleanupStack::Pop(); + + videoOut->SetSourceL( CMceCameraSource::NewLC( *iManager ) ); + CleanupStack::Pop(); + + CMceVideoStream* videoIn = CMceVideoStream::NewLC(); + + CMceDisplaySink* receivingDisplay = CMceDisplaySink::NewLC( *iManager ); + videoIn->AddSinkL( receivingDisplay ); + CleanupStack::Pop(); + + videoIn->SetSourceL( CMceRtpSource::NewLC() ); + CleanupStack::Pop(); + + videoOut->BindL( videoIn ); + CleanupStack::Pop( videoIn ); + + iSession->AddStreamL( videoOut ); + CleanupStack::Pop( videoOut ); + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_TMusEngCameraHandler::Teardown() + { + delete iSession; + iSession = NULL; + iCameraHandler.SetSession( NULL ); + delete iProfileHandler; + delete iObserver; + delete iManager; + } + + + +// TEST CASES + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_TMusEngCameraHandler::UT_LcCameraCountL() + { + // Call without setting the MCE session + EUNIT_ASSERT_SPECIFIC_LEAVE( iCameraHandler.LcCameraCountL(), KErrNotReady ) + + iCameraHandler.SetSession( iSession ); + CMceCameraSource* camera = + MusEngMceUtils::GetCameraL( *( iSession ) ); + iCameraHandler.iCameraUsage = MusSettingsKeys::EUseCameraSwapping; + camera->iCameraCount = 2; + camera->iCameraIndex = TMusEngCameraHandler::EBackCamera; + + // Two cameras + EUNIT_ASSERT_EQUALS( 2, iCameraHandler.LcCameraCountL() ) + + // Two cameras, swapping cameras not allowed, use only main camera + iCameraHandler.iCameraUsage = MusSettingsKeys::EUseOnlyMainCamera; + camera->iCameraCount = 2; + EUNIT_ASSERT_EQUALS( 1, iCameraHandler.LcCameraCountL() ) + + // Two cameras, swapping cameras not allowed, use only main camera + iCameraHandler.iCameraUsage = MusSettingsKeys::EUseOnlySecondaryCamera; + camera->iCameraCount = 2; + EUNIT_ASSERT_EQUALS( 1, iCameraHandler.LcCameraCountL() ) + + // Only one camera available + iCameraHandler.iCameraUsage = MusSettingsKeys::EUseCameraSwapping; + camera->iCameraCount = 1; + EUNIT_ASSERT_EQUALS( 1, iCameraHandler.LcCameraCountL() ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_TMusEngCameraHandler::UT_ToggleLcCameraL() + { + EUNIT_ASSERT_EQUALS( TInt( TMusEngCameraHandler::ECameraNotAvailable ), + iCameraHandler.CurrentLcCameraIndex() ) + + iCameraHandler.SetSession( iSession ); + iCameraHandler.iCameraUsage = MusSettingsKeys::EUseCameraSwapping; + iCameraHandler.iCurrentCamera = TMusEngCameraHandler::EBackCamera; + + // Switch from back to front + iCameraHandler.ToggleLcCameraL(); + EUNIT_ASSERT_EQUALS( TInt( TMusEngCameraHandler::EFrontCamera ), + iCameraHandler.CurrentLcCameraIndex() ) + + // Switch from front to back + iCameraHandler.ToggleLcCameraL(); + EUNIT_ASSERT_EQUALS( TInt( TMusEngCameraHandler::EBackCamera ), + iCameraHandler.CurrentLcCameraIndex() ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_TMusEngCameraHandler::UT_MinLcZoomL() + { + // MCE Session has not been set + EUNIT_ASSERT_SPECIFIC_LEAVE( iCameraHandler.MinLcZoomL(), KErrNotReady ) + + // MCE Session has been set + iCameraHandler.SetSession( iSession ); + EUNIT_ASSERT_EQUALS( + iCameraHandler.iCameraInfo.iMinZoom, + iCameraHandler.MinLcZoomL() ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_TMusEngCameraHandler::UT_MaxLcZoomL() + { + // MCE Session has not been set + EUNIT_ASSERT_SPECIFIC_LEAVE( iCameraHandler.MaxLcZoomL(), KErrNotReady ) + + // MCE Session has been set + iCameraHandler.SetSession( iSession ); + EUNIT_ASSERT_EQUALS( + iCameraHandler.iCameraInfo.iMaxZoom + + iCameraHandler.iCameraInfo.iMaxDigitalZoom, + iCameraHandler.MaxLcZoomL() ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_TMusEngCameraHandler::UT_LcZoomValueL() + { + // MCE Session has not been set + EUNIT_ASSERT_SPECIFIC_LEAVE( iCameraHandler.LcZoomValueL(), KErrNotReady ) + + // Check that originally current and default zoom are the same + iCameraHandler.SetSession( iSession ); + CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *( iSession ) ); + + // Zoom to maximum optical value + while ( camera->iZoomFactor < iCameraHandler.iCameraInfo.iMaxZoom ) + { + iCameraHandler.LcZoomInL(); + } + EUNIT_ASSERT_EQUALS( + iCameraHandler.iCameraInfo.iMaxZoom, + iCameraHandler.LcZoomValueL() ) + + // Zoom using digital zoom + iCameraHandler.LcZoomInL(); + EUNIT_ASSERT_EQUALS( + iCameraHandler.iCameraInfo.iMaxZoom + camera->iDigitalZoomFactor, + iCameraHandler.LcZoomValueL() ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_TMusEngCameraHandler::UT_SetLcZoomValueL() + { + // MCE Session has not been set + EUNIT_ASSERT_SPECIFIC_LEAVE( + iCameraHandler.SetLcZoomValueL( 1 ), + KErrNotReady ) + + // Value above the maximum zoom + iCameraHandler.SetSession( iSession ); + EUNIT_ASSERT_SPECIFIC_LEAVE( + iCameraHandler.SetLcZoomValueL( iCameraHandler.MaxLcZoomL() + 1 ), + KErrArgument ) + + // Value below the minimum zoom + EUNIT_ASSERT_SPECIFIC_LEAVE( + iCameraHandler.SetLcZoomValueL( iCameraHandler.MinLcZoomL() - 1 ), + KErrArgument ) + + // OK: set zoom factor + CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *iSession ); + TInt zoomValue = iCameraHandler.iCameraInfo.iMaxZoom - 1; + iCameraHandler.SetLcZoomValueL( zoomValue ); + EUNIT_ASSERT_EQUALS( zoomValue, camera->ZoomFactorL() ) + + // OK: set digital zoom factor + zoomValue = iCameraHandler.iCameraInfo.iMaxZoom + 1; + iCameraHandler.SetLcZoomValueL( zoomValue ); + EUNIT_ASSERT_EQUALS( 1, camera->DigitalZoomFactorL() ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_TMusEngCameraHandler::UT_LcZoomInL() + { + // Check that zooming is not possible before invite + TRAPD( error, iCameraHandler.LcZoomInL() ); + MUS_TEST_FORWARD_ALLOC_FAILURE( error ); + EUNIT_ASSERT( error == KErrNotReady ); + + iCameraHandler.SetSession( iSession ); + + CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *( iSession ) ); + + TInt oldZoomFactor = camera->iZoomFactor; + + // Check that zoom factor can be increased + USER_SLEEP; //insure that small step is used + iCameraHandler.LcZoomInL(); + EUNIT_ASSERT( camera->iZoomFactor == oldZoomFactor + + iCameraHandler.iSmallZoomStep ); + + //Check the "burst" mode (immediate second ZoomIn), big step should be used + TInt nZoom = camera->iZoomFactor + camera->iDigitalZoomFactor; + iCameraHandler.LcZoomInL(); + TInt nStep = camera->iZoomFactor + camera->iDigitalZoomFactor - nZoom; + EUNIT_ASSERT( nStep == iCameraHandler.iBigZoomStep ); + + // Zoom to maximum optical value + while ( camera->iZoomFactor < iCameraHandler.iCameraInfo.iMaxZoom ) + { + iCameraHandler.LcZoomInL(); + } + + TInt maxOpticalZoomFactor = camera->ZoomFactorL(); + + // Check that digital zoom is used instead of optical + iCameraHandler.LcZoomInL(); + EUNIT_ASSERT( camera->iZoomFactor == maxOpticalZoomFactor ); + EUNIT_ASSERT( camera->iDigitalZoomFactor > 0 ); + + // Zoom to maximum digital value + while ( camera->iDigitalZoomFactor < + iCameraHandler.iCameraInfo.iMaxDigitalZoom ) + { + iCameraHandler.LcZoomInL(); + } + + TInt maxDigitalZoomFactor = camera->DigitalZoomFactorL(); + + // Check that further zooming is impossible + iCameraHandler.LcZoomInL(); + EUNIT_ASSERT( camera->iZoomFactor == maxOpticalZoomFactor ); + EUNIT_ASSERT( camera->iDigitalZoomFactor == maxDigitalZoomFactor ); + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_TMusEngCameraHandler::UT_LcZoomOutL() + { + // Check that zooming is not possible before invite + TRAPD( error, iCameraHandler.LcZoomOutL() ); + MUS_TEST_FORWARD_ALLOC_FAILURE( error ); + EUNIT_ASSERT( error == KErrNotReady ); + + iCameraHandler.SetSession( iSession ); + + CMceCameraSource* camera = + MusEngMceUtils::GetCameraL( *(iSession) ); + + // Simulate maximum zoom + camera->iZoomFactor = iCameraHandler.iCameraInfo.iMaxZoom; + camera->iDigitalZoomFactor = iCameraHandler.iCameraInfo.iMaxDigitalZoom; + + // Check that digital zoom factor can be decreased + USER_SLEEP; //insure that small step is used + iCameraHandler.LcZoomOutL(); + EUNIT_ASSERT( camera->iZoomFactor == iCameraHandler.iCameraInfo.iMaxZoom ); + EUNIT_ASSERT( camera->iDigitalZoomFactor == + iCameraHandler.iCameraInfo.iMaxDigitalZoom - + iCameraHandler.iSmallZoomStep ); + + //Check the "burst" mode (immediate second ZoomOut), big step should be used + TInt nZoom = camera->iZoomFactor + camera->iDigitalZoomFactor; + iCameraHandler.LcZoomOutL(); + TInt nStep; + nStep = nZoom - (camera->iZoomFactor + camera->iDigitalZoomFactor ); + EUNIT_ASSERT( nStep == iCameraHandler.iBigZoomStep ); + + // Simulate maximum zoom again + camera->iZoomFactor = iCameraHandler.iCameraInfo.iMaxZoom; + camera->iDigitalZoomFactor = iCameraHandler.iCameraInfo.iMaxDigitalZoom; + + // Zoom to minimum digital zoom + while ( camera->iDigitalZoomFactor > 0 ) + { + iCameraHandler.LcZoomOutL(); + } + + EUNIT_ASSERT( camera->iZoomFactor == iCameraHandler.iCameraInfo.iMaxZoom ); + EUNIT_ASSERT( camera->iDigitalZoomFactor == 0 ); + + // Check that optical zoom is decreased instead of digital + USER_SLEEP; //insure that step is the small one + iCameraHandler.LcZoomOutL(); + EUNIT_ASSERT( camera->iZoomFactor == + iCameraHandler.iCameraInfo.iMaxZoom - + iCameraHandler.iSmallZoomStep ); + EUNIT_ASSERT( camera->iDigitalZoomFactor == 0 ); + + // Zoom to minimum optical zoom + while ( camera->iZoomFactor > iCameraHandler.iCameraInfo.iMinZoom ) + { + iCameraHandler.LcZoomOutL(); + } + + // Check that further zooming is impossible + iCameraHandler.LcZoomOutL(); + EUNIT_ASSERT( camera->iZoomFactor == iCameraHandler.iCameraInfo.iMinZoom ); + EUNIT_ASSERT( camera->iDigitalZoomFactor == 0 ); + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_TMusEngCameraHandler::UT_SetLcBrightnessL() + { + // Check that setting brightness is not possible before invite + EUNIT_ASSERT_SPECIFIC_LEAVE( + iCameraHandler.SetLcBrightnessL( KTestSomeBrightness ), + KErrNotReady ) + + iCameraHandler.SetSession( iSession ); + CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *( iSession ) ); + + camera->iCameraInfo.iOptionsSupported = + camera->iCameraInfo.iOptionsSupported|TCameraInfo::EBrightnessSupported; + + // Check that originally current and default brightness are the same + EUNIT_ASSERT_EQUALS( iCameraHandler.iDefaultBrightness, + iCameraHandler.LcBrightnessL() ) + + // Test setting brightness + iCameraHandler.SetLcBrightnessL( KTestSomeBrightness ); + EUNIT_ASSERT_EQUALS( KTestSomeBrightness, iCameraHandler.LcBrightnessL() ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_TMusEngCameraHandler::UT_LcBrightnessL() + { + // Check that checking current brightness is not possible before invite + EUNIT_ASSERT_SPECIFIC_LEAVE( iCameraHandler.LcBrightnessL(), + KErrNotReady ) + + // All the other stuff checked in tests of SetBrightnessL + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_TMusEngCameraHandler::UT_MaxLcBrightnessL() + { + // MaxBrightness should return a constant + EUNIT_ASSERT_EQUALS( KTestMaxBrightness, iCameraHandler.MaxLcBrightnessL() ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_TMusEngCameraHandler::UT_MinLcBrightnessL() + { + // MinBrightness should return a constant + + EUNIT_ASSERT_EQUALS( KTestMinBrightness, iCameraHandler.MinLcBrightnessL() ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_TMusEngCameraHandler::UT_IncreaseLcBrightnessL() + { + // Check that increasing brightness is not possible before invite + EUNIT_ASSERT_SPECIFIC_LEAVE( iCameraHandler.IncreaseLcBrightnessL(), + KErrNotReady ) + + iCameraHandler.SetSession( iSession ); + CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *(iSession) ); + + camera->iCameraInfo.iOptionsSupported = + camera->iCameraInfo.iOptionsSupported|TCameraInfo::EBrightnessSupported; + + // Check that originally current and default brightness are the same + EUNIT_ASSERT_EQUALS( iCameraHandler.iDefaultBrightness, + iCameraHandler.LcBrightnessL() ) + + // Check that brightness can be increased... + iCameraHandler.IncreaseLcBrightnessL(); + EUNIT_ASSERT_EQUALS( iCameraHandler.iDefaultBrightness + KTestBrightnessStepSize, + iCameraHandler.LcBrightnessL() ) + + // ... but only to maximum + iCameraHandler.SetLcBrightnessL( KTestMaxBrightness ); + iCameraHandler.IncreaseLcBrightnessL(); + + EUNIT_ASSERT_EQUALS( KTestMaxBrightness, + iCameraHandler.LcBrightnessL() ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_TMusEngCameraHandler::UT_DecreaseLcBrightnessL() + { + // Check that decreasing brightness is not possible before invite + EUNIT_ASSERT_SPECIFIC_LEAVE( iCameraHandler.DecreaseLcBrightnessL(), + KErrNotReady ) + + iCameraHandler.SetSession( iSession ); + CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *(iSession) ); + + camera->iCameraInfo.iOptionsSupported = + camera->iCameraInfo.iOptionsSupported|TCameraInfo::EBrightnessSupported; + + // Check that originally current and default brightness are the same + EUNIT_ASSERT_EQUALS( iCameraHandler.iDefaultBrightness, + iCameraHandler.LcBrightnessL() ) + + // Check that brightness can be decreased... + iCameraHandler.DecreaseLcBrightnessL(); + + EUNIT_ASSERT_EQUALS( + iCameraHandler.iDefaultBrightness - KTestBrightnessStepSize, + iCameraHandler.LcBrightnessL() ) + + // ... but only to minimum + iCameraHandler.SetLcBrightnessL( KTestMinBrightness ); + iCameraHandler.DecreaseLcBrightnessL(); + EUNIT_ASSERT_EQUALS( KTestMinBrightness, + iCameraHandler.LcBrightnessL() ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_TMusEngCameraHandler::UT_PlayL() + { + // Check that resuming is not possible before invite + EUNIT_ASSERT_SPECIFIC_LEAVE( iCameraHandler.PlayL(), KErrNotReady ) + + iCameraHandler.SetSession( iSession ); + + iCameraHandler.PauseL(); + + CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *(iSession) ); + iCameraHandler.PlayL(); + EUNIT_ASSERT( camera->IsEnabled() ) + + // Try to enable camera again, request should be ignored + iCameraHandler.PlayL(); + EUNIT_ASSERT( camera->IsEnabled() ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_TMusEngCameraHandler::UT_PauseL() + { + // Check that pausing is not possible before invite + EUNIT_ASSERT_SPECIFIC_LEAVE( iCameraHandler.PauseL(), KErrNotReady ) + + iCameraHandler.SetSession( iSession ); + + iCameraHandler.PlayL(); + + CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *(iSession) ); + + iCameraHandler.PauseL(); + + EUNIT_ASSERT( !camera->IsEnabled() ) + + // Try to disable camera again, request should be ignored + iCameraHandler.PauseL(); + EUNIT_ASSERT( !camera->IsEnabled() ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_TMusEngCameraHandler::UT_IsPlayingL() + { + // Try without a session + EUNIT_ASSERT_SPECIFIC_LEAVE( iCameraHandler.IsPlayingL(), KErrNotReady ) + + // Normal cases + iCameraHandler.SetSession( iSession ); + + iCameraHandler.PlayL(); + EUNIT_ASSERT( iCameraHandler.IsPlayingL() ) + + iCameraHandler.PauseL(); + EUNIT_ASSERT( !iCameraHandler.IsPlayingL() ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_TMusEngCameraHandler::UT_InitializeZoomStepSizeL() + { + //Check that zooming steps have defualt values before session establishment + iCameraHandler.InitializeZoomStepSize(); + EUNIT_ASSERT( iCameraHandler.iSmallZoomStep == KZoomStepMinSize ); + EUNIT_ASSERT( iCameraHandler.iBigZoomStep == KZoomStepMinSize ); + + iCameraHandler.SetSession( iSession ); + CMceCameraSource* camera = MusEngMceUtils::GetCameraL( *(iSession) ); + + //Check that zooming step sizes have default value KZoomStepMinSize + //in case of zooming values range is smaller than KZoomBigStepCount + iCameraHandler.iCameraInfo.iMinZoom = 0; + iCameraHandler.iCameraInfo.iMaxZoom = 0; + iCameraHandler.iCameraInfo.iMaxDigitalZoom = KZoomBigStepCount / 2; + iCameraHandler.InitializeZoomStepSize(); + EUNIT_ASSERT( iCameraHandler.iSmallZoomStep == KZoomStepMinSize ); + EUNIT_ASSERT( iCameraHandler.iBigZoomStep == KZoomStepMinSize ); + + //Check that zooming step sizes have default value KZoomStepMinSize + //in case of zooming values range is bigger than KZoomBigStepCount, + //but smaller than 2*KZoomBigStepCount (KZoomSmallStepCount) + iCameraHandler.iCameraInfo.iMaxDigitalZoom = 2*KZoomBigStepCount - 1; + iCameraHandler.InitializeZoomStepSize(); + EUNIT_ASSERT( iCameraHandler.iSmallZoomStep == KZoomStepMinSize ); + EUNIT_ASSERT( iCameraHandler.iBigZoomStep == KZoomStepMinSize ); + + //Check zooming steps sizes in case of zooming values range is + //bigger than 2*KZoomBigStepCount and smaller than 2*KZoomSmallStepCount + iCameraHandler.iCameraInfo.iMinZoom = - KZoomBigStepCount; + iCameraHandler.iCameraInfo.iMaxZoom = KZoomBigStepCount; + iCameraHandler.iCameraInfo.iMaxDigitalZoom = KZoomBigStepCount; + //zooming range is (-KZoomBigStepCount, 2*KZoomBigStepCount) + iCameraHandler.InitializeZoomStepSize(); + EUNIT_ASSERT( iCameraHandler.iSmallZoomStep == KZoomStepMinSize ); + EUNIT_ASSERT( iCameraHandler.iBigZoomStep == 3 ); + + //Check zooming steps sizes in case of zooming values range is + //bigger than 2*KZoomSmallStepCount + iCameraHandler.iCameraInfo.iMaxZoom = KZoomSmallStepCount; + iCameraHandler.iCameraInfo.iMaxDigitalZoom = KZoomSmallStepCount; + iCameraHandler.iCameraInfo.iMinZoom = - KZoomSmallStepCount; + //zooming range is (-KZoomSmallStepCount, 2*KZoomSmallStepCount) + iCameraHandler.InitializeZoomStepSize(); + EUNIT_ASSERT( iCameraHandler.iSmallZoomStep == 3 ); + EUNIT_ASSERT( iCameraHandler.iBigZoomStep == 6 ); + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_TMusEngCameraHandler::UT_ChangeActiveCameraL() + { + iCameraHandler.SetSession( iSession ); + + CMceCameraSource* camera = + MusEngMceUtils::GetCameraL( *(iSession) ); + + //Camera is not enabled + camera->iIsEnabled = ETrue; + camera->iCameraCount = 2; + camera->iCameraIndex = 1; + iCameraHandler.ChangeActiveCameraL( TMusEngCameraHandler::EFrontCamera ); + EUNIT_ASSERT( camera->iCameraIndex == 1 ); + EUNIT_ASSERT( camera->iIsEnabled == ETrue ); + + //Camera is not enabled + camera->iIsEnabled = EFalse; + camera->iCameraCount = 2; + camera->iCameraIndex = 1; + iCameraHandler.ChangeActiveCameraL( TMusEngCameraHandler::EFrontCamera ); + EUNIT_ASSERT( camera->iCameraIndex == 1 ); + EUNIT_ASSERT( camera->iIsEnabled == EFalse ); + + //Check that iCameraInfo get updated after camera change + EUNIT_PRINT(_L("Check that iCameraInfo get updated after camera change")); + + //Check that iCameraInfo get updated after camera change + EUNIT_PRINT(_L("Check that iCameraInfo get updated after camera change")); + camera->iIsEnabled = ETrue; + camera->iCameraCount = 2; + camera->iCameraIndex = 0; + iCameraHandler.ChangeActiveCameraL( TMusEngCameraHandler::EBackCamera ); + EUNIT_ASSERT( camera->iCameraIndex == 0 ); + TCameraInfo infoBack = iCameraHandler.iCameraInfo; + iCameraHandler.ChangeActiveCameraL( TMusEngCameraHandler::EFrontCamera ); + EUNIT_ASSERT( camera->iCameraIndex == 1 ); + TCameraInfo infoFront = iCameraHandler.iCameraInfo; + + EUNIT_ASSERT( infoBack.iMaxZoom != infoFront.iMaxZoom ); + EUNIT_ASSERT( infoBack.iMaxDigitalZoom != infoFront.iMaxDigitalZoom ); + camera->iIsEnabled = ETrue; + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_TMusEngCameraHandler::UT_ChangeCameraL() + { + TRAPD( error, iCameraHandler.ChangeCameraL( TMusEngCameraHandler::EFrontCamera ) ); + MUS_TEST_FORWARD_ALLOC_FAILURE( error ); + EUNIT_ASSERT( error == KErrNotReady ); + + iCameraHandler.SetSession( iSession ); + + CMceCameraSource* camera = + MusEngMceUtils::GetCameraL( *(iSession) ); + //Only one camera is supported + camera->iCameraCount = 0; + camera->iCameraIndex = 0; + + iCameraHandler.ChangeCameraL( TMusEngCameraHandler::EFrontCamera ); + //EUNIT_ASSERT( camera->iCameraIndex == 0 ); + + // Front camera is supported. + camera->iCameraCount = 2; + camera->iCameraIndex = 1; + iCameraHandler.ChangeCameraL( TMusEngCameraHandler::EFrontCamera ); + EUNIT_ASSERT( camera->iCameraIndex == 1 ); + + //No change + camera->iCameraCount = 2; + camera->iCameraIndex = 0; + camera->iIsEnabled = EFalse; + iCameraHandler.ChangeCameraL( TMusEngCameraHandler::EFrontCamera ); + EUNIT_ASSERT( camera->iIsEnabled == EFalse ); + + // Back camera is supported. + camera->iCameraCount = 2; + camera->iCameraIndex = 1; + iCameraHandler.ChangeCameraL( TMusEngCameraHandler::EBackCamera ); + EUNIT_ASSERT( camera->iCameraIndex == 0 ); + + //No change + camera->iCameraCount = 2; + camera->iCameraIndex = 0; + camera->iIsEnabled = EFalse; + iCameraHandler.ChangeCameraL( TMusEngCameraHandler::EBackCamera ); + EUNIT_ASSERT( camera->iIsEnabled == EFalse ); + + // Next camera. + camera->iCameraCount = 2; + camera->iCameraIndex = 0; + iCameraHandler.ChangeCameraL( TMusEngCameraHandler::ECameraNotAvailable ); + EUNIT_ASSERT( camera->iCameraIndex == 1 ); + + camera->iCameraCount = 2; + camera->iCameraIndex = 1; + iCameraHandler.ChangeCameraL( TMusEngCameraHandler::ECameraNotAvailable ); + EUNIT_ASSERT( camera->iCameraIndex == 0 ); + } + + +// TEST TABLE + +EUNIT_BEGIN_TEST_TABLE( + UT_TMusEngCameraHandler, + "UT_TMusEngCameraHandler", + "UNIT" ) + +EUNIT_TEST( + "LcCameraCountL - test ", + "TMusEngCameraHandler", + "LcCameraCountL", + "FUNCTIONALITY", + SetupL, UT_LcCameraCountL, Teardown) + +EUNIT_TEST( + "ToggleLcCameraL - test ", + "TMusEngCameraHandler", + "ToggleLcCameraL", + "FUNCTIONALITY", + SetupL, UT_ToggleLcCameraL, Teardown) + +EUNIT_TEST( + "MinLcZoomL - test ", + "TMusEngCameraHandler", + "MinLcZoomL", + "FUNCTIONALITY", + SetupL, UT_MinLcZoomL, Teardown) + +EUNIT_TEST( + "MaxLcZoomL - test ", + "TMusEngCameraHandler", + "MaxLcZoomL", + "FUNCTIONALITY", + SetupL, UT_MaxLcZoomL, Teardown) + +EUNIT_TEST( + "LcZoomValueL - test ", + "TMusEngCameraHandler", + "LcZoomValueL", + "FUNCTIONALITY", + SetupL, UT_LcZoomValueL, Teardown) + +EUNIT_TEST( + "SetLcZoomValueL - test ", + "TMusEngCameraHandler", + "SetLcZoomValueL", + "FUNCTIONALITY", + SetupL, UT_SetLcZoomValueL, Teardown) + +EUNIT_TEST( + "LcZoomInL - test ", + "TMusEngCameraHandler", + "LcZoomInL", + "FUNCTIONALITY", + SetupL, UT_LcZoomInL, Teardown) + +EUNIT_TEST( + "LcZoomOutL - test ", + "TMusEngCameraHandler", + "LcZoomOutL", + "FUNCTIONALITY", + SetupL, UT_LcZoomOutL, Teardown) + +EUNIT_TEST( + "SetLcBrightnessL - test ", + "TMusEngCameraHandler", + "SetLcBrightnessL", + "FUNCTIONALITY", + SetupL, UT_SetLcBrightnessL, Teardown) + +EUNIT_TEST( + "LcBrightnessL - test ", + "TMusEngCameraHandler", + "LcBrightnessL", + "FUNCTIONALITY", + SetupL, UT_LcBrightnessL, Teardown) + +EUNIT_TEST( + "MaxLcBrightnessL - test ", + "TMusEngCameraHandler", + "MaxLcBrightnessL", + "FUNCTIONALITY", + SetupL, UT_MaxLcBrightnessL, Teardown) + +EUNIT_TEST( + "MinLcBrightnessL - test ", + "TMusEngCameraHandler", + "MinLcBrightnessL", + "FUNCTIONALITY", + SetupL, UT_MinLcBrightnessL, Teardown) + +EUNIT_TEST( + "IncreaseLcBrightnessL - test ", + "TMusEngCameraHandler", + "IncreaseLcBrightnessL", + "FUNCTIONALITY", + SetupL, UT_IncreaseLcBrightnessL, Teardown) + +EUNIT_TEST( + "DecreaseLcBrightnessL - test ", + "TMusEngCameraHandler", + "DecreaseLcBrightnessL", + "FUNCTIONALITY", + SetupL, UT_DecreaseLcBrightnessL, Teardown) + +EUNIT_TEST( + "PlayL - test ", + "TMusEngCameraHandler", + "PlayL", + "FUNCTIONALITY", + SetupL, UT_PlayL, Teardown) + +EUNIT_TEST( + "PauseL - test ", + "TMusEngCameraHandler", + "PauseL", + "FUNCTIONALITY", + SetupL, UT_PauseL, Teardown) + +EUNIT_TEST( + "IsPlayingL - test ", + "TMusEngCameraHandler", + "IsPlayingL", + "FUNCTIONALITY", + SetupL, UT_IsPlayingL, Teardown) + +EUNIT_TEST( + "InitializeZoomStepSize - test ", + "TMusEngCameraHandler", + "InitializeZoomStepSize", + "FUNCTIONALITY", + SetupL, UT_InitializeZoomStepSizeL, Teardown) + +EUNIT_TEST( + "ChangeCameraL - test ", + "TMusEngCameraHandler", + "ChangeCameraL", + "FUNCTIONALITY", + SetupL, UT_ChangeCameraL, Teardown) + +EUNIT_TEST( + "UT_ChangeActiveCameraL - test ", + "TMusEngCameraHandler", + "DisableAndEnableBeforeChangingCamera", + "FUNCTIONALITY", + SetupL, UT_ChangeActiveCameraL, Teardown) + +EUNIT_END_TEST_TABLE + +// END OF FILE + +