diff -r 33a5d2bbf6fc -r 73a1feb507fb mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengclipvideoplayer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengclipvideoplayer.cpp Tue Aug 31 15:12:07 2010 +0300 @@ -0,0 +1,805 @@ +/* +* 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_musengclipvideoplayer.h" +#include "musengtestdefs.h" +#include "musengmceutils.h" +#include "musengclipvideoplayer.h" +#include "mceoutsession.h" +#include "mcevideostream.h" +#include "mcertpsink.h" +#include "mcefilesource.h" +#include "drmcommon.h" + +// SYSTEM INCLUDES +#include + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +UT_CMusEngClipVideoPlayer* UT_CMusEngClipVideoPlayer::NewL() + { + UT_CMusEngClipVideoPlayer* self = UT_CMusEngClipVideoPlayer::NewLC(); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +UT_CMusEngClipVideoPlayer* UT_CMusEngClipVideoPlayer::NewLC() + { + UT_CMusEngClipVideoPlayer* self = new( ELeave ) UT_CMusEngClipVideoPlayer(); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +UT_CMusEngClipVideoPlayer::~UT_CMusEngClipVideoPlayer() + { + // NOP + } + +// ----------------------------------------------------------------------------- +// Default constructor +// ----------------------------------------------------------------------------- +// +UT_CMusEngClipVideoPlayer::UT_CMusEngClipVideoPlayer() + { + // NOP + } + +// ----------------------------------------------------------------------------- +// Second phase construct +// ----------------------------------------------------------------------------- +// +void UT_CMusEngClipVideoPlayer::ConstructL() + { + // The ConstructL from the base class CEUnitTestSuiteClass must be called. + // It generates the test case table. + CEUnitTestSuiteClass::ConstructL(); + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngClipVideoPlayer::SetupL() + { + iMceSession = CMceOutSession::NewL(); + CMceVideoStream* videoStream = CMceVideoStream::NewLC(); + CMceRtpSink* rtpsink = CMceRtpSink::NewLC(); + videoStream->AddSinkL( rtpsink ); + CleanupStack::Pop( rtpsink ); + CMceFileSource* fileSource = + CMceFileSource::NewLC( *iMceSession->iManager, KTestVideoFileName() ); + fileSource->DisableL(); + videoStream->SetSourceL( fileSource ); + CleanupStack::Pop( fileSource ); + iMceSession->AddStreamL( videoStream ); + CleanupStack::Pop( videoStream ); + iClipVideoPlayer = + CMusEngClipVideoPlayer::NewL( + iDisplayHandlerStub, + iLcAudioControlStub ); + iClipVideoPlayer->SetMceSession( iMceSession ); + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngClipVideoPlayer::Teardown() + { + delete iClipVideoPlayer; + delete iMceSession; + iLcAudioControlStub.Reset(); + } + + +// TEST CASES + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngClipVideoPlayer::UT_HasClipEndedL() + { + CMceSession* invalidMceSession = CMceOutSession::NewL(); + CleanupStack::PushL( invalidMceSession ); + + // Try before establishing the session + iClipVideoPlayer->SetMceSession( NULL ); + EUNIT_ASSERT( !iClipVideoPlayer->HasClipEnded() ) + + // Try with session, but without video out stream + iClipVideoPlayer->SetMceSession( invalidMceSession ); + EUNIT_ASSERT( !iClipVideoPlayer->HasClipEnded() ) + + // Try with video out stream without source... + CMceVideoStream* videoStream = CMceVideoStream::NewLC(); + videoStream->AddSinkL( CMceRtpSink::NewLC() ); + CleanupStack::Pop(); + invalidMceSession->AddStreamL( videoStream ); + CleanupStack::Pop( videoStream ); + EUNIT_ASSERT( !iClipVideoPlayer->HasClipEnded() ) + + // And with enabled source and stream + CMceFileSource* fileSource = + CMceFileSource::NewLC( + *invalidMceSession->iManager, KTestVideoFileName() ); + videoStream->SetSourceL( fileSource ); + CleanupStack::Pop( fileSource ); + EUNIT_ASSERT( !iClipVideoPlayer->HasClipEnded() ) + + // try with different position and duration + fileSource->iPosition = 90; + fileSource->iDuration = 111; + EUNIT_ASSERT( !iClipVideoPlayer->HasClipEnded() ) + + // Disabled source + fileSource->DisableL(); + EUNIT_ASSERT( !iClipVideoPlayer->HasClipEnded() ) + + // Disabled stream + videoStream->iState = CMceMediaStream::EDisabled; + EUNIT_ASSERT( !iClipVideoPlayer->HasClipEnded() ) + + // and finaly try with "real" end of clip + fileSource->iPosition = 0; + fileSource->iDuration = 111; + + EUNIT_ASSERT( iClipVideoPlayer->HasClipEnded() ) + + CleanupStack::PopAndDestroy( invalidMceSession ); + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngClipVideoPlayer::UT_LcVideoPlayerStateL() + { + // iMceSession not set + iClipVideoPlayer->SetMceSession( NULL ); + EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EUnavailable ), + TInt( iClipVideoPlayer->LcVideoPlayerState() ) ) + iClipVideoPlayer->SetMceSession( iMceSession ); + + // Establish Session and simulate media playing. + iMceSession->iState = CMceSession::EEstablished; + for ( TInt i = 0; i < iMceSession->Streams().Count(); i++ ) + { + iMceSession->Streams()[i]->iState = CMceMediaStream::EStreaming; + } + + EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EPlaying ), + TInt( iClipVideoPlayer->LcVideoPlayerState() ) ) + + // Media streams unavailable + iMceSession->Streams()[0]->iState = CMceMediaStream::EUninitialized; + EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EUnavailable ), + TInt( iClipVideoPlayer->LcVideoPlayerState() ) ) + + // All other stream states + iMceSession->Streams()[0]->iState = CMceMediaStream::EInitialized; + EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EInit ), + TInt( iClipVideoPlayer->LcVideoPlayerState() ) ) + + iMceSession->Streams()[0]->iState = CMceMediaStream::EBuffering; + EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EBuffering ), + TInt( iClipVideoPlayer->LcVideoPlayerState() ) ) + + iMceSession->Streams()[0]->iState = CMceMediaStream::EIdle; + EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EPaused ), + TInt( iClipVideoPlayer->LcVideoPlayerState() ) ) + + iMceSession->Streams()[0]->iState = CMceMediaStream::EDisabled; + EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EPaused ), + TInt( iClipVideoPlayer->LcVideoPlayerState() ) ) + + iMceSession->Streams()[0]->iState = CMceMediaStream::EStreaming; + EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EPlaying ), + TInt( iClipVideoPlayer->LcVideoPlayerState() ) ) + + iMceSession->Streams()[0]->iState = CMceMediaStream::ENoResources; + EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EUnavailable ), + TInt( iClipVideoPlayer->LcVideoPlayerState() ) ) + + iMceSession->Streams()[0]->iState = CMceMediaStream::ETranscodingRequired; + EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EUnavailable ), + TInt( iClipVideoPlayer->LcVideoPlayerState() ) ) + + iMceSession->Streams()[0]->iState = CMceMediaStream::ETranscoding; + EUNIT_ASSERT_EQUALS( TInt( MLcVideoPlayer::EUnavailable ), + TInt( iClipVideoPlayer->LcVideoPlayerState() ) ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngClipVideoPlayer::UT_LcPlayL() + { + // MCE session not set + iClipVideoPlayer->SetMceSession( NULL ); + EUNIT_ASSERT_SPECIFIC_LEAVE( iClipVideoPlayer->LcPlayL(), KErrNotReady ) + + // File source does not exist + iClipVideoPlayer->SetMceSession( iMceSession ); + iMceSession->Streams()[ 0 ]->SetSourceL( NULL ); + EUNIT_ASSERT_SPECIFIC_LEAVE( iClipVideoPlayer->LcPlayL(), KErrNotFound ) + + // Play + CMceFileSource* fileSource = + CMceFileSource::NewLC( *iMceSession->iManager, KTestVideoFileName() ); + fileSource->DisableL(); + iMceSession->Streams()[ 0 ]->SetSourceL( fileSource ); + CleanupStack::Pop( fileSource ); + EUNIT_ASSERT( !iClipVideoPlayer->LcIsPlayingL() ) + iClipVideoPlayer->LcPlayL(); + EUNIT_ASSERT( iClipVideoPlayer->LcIsPlayingL() ) + + // Try to play again + iClipVideoPlayer->LcPlayL(); + EUNIT_ASSERT( iClipVideoPlayer->LcIsPlayingL() ) + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngClipVideoPlayer::UT_LcPauseL() + { + // MCE session not set + iClipVideoPlayer->SetMceSession( NULL ); + EUNIT_ASSERT_SPECIFIC_LEAVE( iClipVideoPlayer->LcPauseL(), KErrNotReady ) + + // File source does not exist + iClipVideoPlayer->SetMceSession( iMceSession ); + iMceSession->Streams()[ 0 ]->SetSourceL( NULL ); + EUNIT_ASSERT_SPECIFIC_LEAVE( iClipVideoPlayer->LcPauseL(), KErrNotFound ) + + // Pause + CMceFileSource* fileSource = + CMceFileSource::NewLC( *iMceSession->iManager, KTestVideoFileName() ); + fileSource->EnableL(); + iMceSession->Streams()[ 0 ]->SetSourceL( fileSource ); + CleanupStack::Pop( fileSource ); + EUNIT_ASSERT( iClipVideoPlayer->LcIsPlayingL() ) + iClipVideoPlayer->LcPauseL(); + EUNIT_ASSERT( !iClipVideoPlayer->LcIsPlayingL() ) + + // Try to pause already paused clip + iClipVideoPlayer->LcPauseL(); + EUNIT_ASSERT( !iClipVideoPlayer->LcIsPlayingL() ) + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngClipVideoPlayer::UT_LcIsPlayingL() + { + // MCE session not set + iClipVideoPlayer->SetMceSession( NULL ); + EUNIT_ASSERT_SPECIFIC_LEAVE( iClipVideoPlayer->LcIsPlayingL(), KErrNotReady ) + + // Player is not playing when file source is disabled + iClipVideoPlayer->SetMceSession( iMceSession ); + CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession ); + file->DisableL(); + EUNIT_ASSERT( !iClipVideoPlayer->LcIsPlayingL() ) + + // Player is playing when file source is enabled + file->EnableL(); + EUNIT_ASSERT( iClipVideoPlayer->LcIsPlayingL() ) + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngClipVideoPlayer::UT_SetLcFileNameL() + { + // Set file before iMceSession is set + CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession ); + iClipVideoPlayer->SetMceSession( NULL ); + iClipVideoPlayer->SetLcFileNameL( KTestAvcVideoFileName() ); + EUNIT_ASSERT_EQUALS( iClipVideoPlayer->LcFileName(), KTestAvcVideoFileName() ) + EUNIT_ASSERT_EQUALS( file->iFileName, KTestVideoFileName() ) + + // Set file after session is set + iClipVideoPlayer->SetMceSession( iMceSession ); + file->iFileName = KTestAvcVideoFileName(); + iClipVideoPlayer->SetLcFileNameL( KTestVideoFileName() ); + EUNIT_ASSERT_EQUALS( iClipVideoPlayer->LcFileName(), KTestVideoFileName() ) + EUNIT_ASSERT_EQUALS( file->iFileName, KTestVideoFileName() ) + + // Set DRM protected file, file names not changed + MUSENG_EUNIT_ASSERT_SPECIFIC_LEAVE( + iClipVideoPlayer->SetLcFileNameL( KMusDrmProtectedFileName() ), + KErrPermissionDenied ) + EUNIT_ASSERT_EQUALS( iClipVideoPlayer->LcFileName(), KTestVideoFileName() ) + EUNIT_ASSERT_EQUALS( file->iFileName, KTestVideoFileName() ) + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngClipVideoPlayer::UT_LcFastForwardL() + { + // Try before establishment + iClipVideoPlayer->SetMceSession( NULL ); + EUNIT_ASSERT_SPECIFIC_LEAVE( + iClipVideoPlayer->LcFastForwardL( ETrue ), KErrNotReady ) + + // Establish session, simulate position and duration and try again + iClipVideoPlayer->SetMceSession( iMceSession ); + CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession ); + file->iDuration = KMusEngTestFileDuration; + file->iPosition = KMusEngTestFilePosition; + iClipVideoPlayer->LcFastForwardL( ETrue ); + EUNIT_ASSERT( !file->iIsEnabled ) + EUNIT_ASSERT( iClipVideoPlayer->iFFWDStartTime.Int64() > 0 ) + EUNIT_ASSERT( iClipVideoPlayer->iFRWDStartTime.Int64() == 0 ) + + // Simulate fastforwarding for a while + User::After( 1000 ); + + // Try to fastforward when already fastforwarding, will be ignored + iClipVideoPlayer->LcFastForwardL( ETrue ); + EUNIT_ASSERT( !file->iIsEnabled ) + EUNIT_ASSERT( iClipVideoPlayer->iFFWDStartTime.Int64() > 0 ) + EUNIT_ASSERT( iClipVideoPlayer->iFRWDStartTime.Int64() == 0 ) + + // Stop fastforwarding + iClipVideoPlayer->LcFastForwardL( EFalse ); + EUNIT_ASSERT( file->iPosition > KMusEngTestFilePosition ) + EUNIT_ASSERT( file->iPosition != file->iDuration ) + EUNIT_ASSERT( !file->iIsEnabled ) + EUNIT_ASSERT( iClipVideoPlayer->iFFWDStartTime.Int64() == 0 ) + EUNIT_ASSERT( iClipVideoPlayer->iFRWDStartTime.Int64() == 0 ) + + // Try to stop fastforwarding again, leaves + EUNIT_ASSERT_SPECIFIC_LEAVE( + iClipVideoPlayer->LcFastForwardL( EFalse ), KErrAlreadyExists ) + + // Start fastrewinding + iClipVideoPlayer->LcFastRewindL( ETrue ); + EUNIT_ASSERT( !file->iIsEnabled ) + EUNIT_ASSERT( iClipVideoPlayer->iFFWDStartTime.Int64() == 0 ) + EUNIT_ASSERT( iClipVideoPlayer->iFRWDStartTime.Int64() > 0 ) + + // Start fastforwarding, rewinding should be stopped and FFWD started + iClipVideoPlayer->LcFastForwardL( ETrue ); + EUNIT_ASSERT( !file->iIsEnabled ) + EUNIT_ASSERT( iClipVideoPlayer->iFFWDStartTime.Int64() > 0 ) + EUNIT_ASSERT( iClipVideoPlayer->iFRWDStartTime.Int64() == 0 ) + + // Simulate fastforwarding for a while + User::After( 1000 ); + + // Simulate that clip is almost in end and fastforwarding would have + // continued over end, position should be set to duration. + file->iPosition = TTimeIntervalMicroSeconds( file->iDuration.Int64() - 1 ); + iClipVideoPlayer->LcFastForwardL( EFalse ); + EUNIT_ASSERT( file->iPosition == file->iDuration ) + EUNIT_ASSERT( !file->iIsEnabled ) + EUNIT_ASSERT_EQUALS( 0, iClipVideoPlayer->iFFWDStartTime.Int64() ) + EUNIT_ASSERT_EQUALS( 0, iClipVideoPlayer->iFRWDStartTime.Int64() ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngClipVideoPlayer::UT_LcFastRewindL() + { + // Try before establishment + iClipVideoPlayer->SetMceSession( NULL ); + EUNIT_ASSERT_SPECIFIC_LEAVE( + iClipVideoPlayer->LcFastRewindL( ETrue ), KErrNotReady ) + + // Establish session, simulate position and duration and try again + iClipVideoPlayer->SetMceSession( iMceSession ); + CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession ); + file->iDuration = KMusEngTestFileDuration; + file->iPosition = KMusEngTestFilePosition; + iClipVideoPlayer->LcFastRewindL( ETrue ); + EUNIT_ASSERT( !file->iIsEnabled ) + EUNIT_ASSERT( iClipVideoPlayer->iFFWDStartTime.Int64() == 0 ) + EUNIT_ASSERT( iClipVideoPlayer->iFRWDStartTime.Int64() > 0 ) + + // Simulate fastrewinding for a while + User::After( 1000 ); + + // Try to fastrewind when already fastrewinding, will be ignored + iClipVideoPlayer->LcFastRewindL( ETrue ); + EUNIT_ASSERT( !file->iIsEnabled ) + EUNIT_ASSERT( iClipVideoPlayer->iFFWDStartTime.Int64() == 0 ) + EUNIT_ASSERT( iClipVideoPlayer->iFRWDStartTime.Int64() > 0 ) + + // Stop fastrewinding + iClipVideoPlayer->LcFastRewindL( EFalse ); + EUNIT_ASSERT( file->iPosition < KMusEngTestFilePosition ) + EUNIT_ASSERT( file->iPosition != TTimeIntervalMicroSeconds( 0 ) ) + EUNIT_ASSERT( !file->iIsEnabled ) + EUNIT_ASSERT( iClipVideoPlayer->iFFWDStartTime.Int64() == 0 ) + EUNIT_ASSERT( iClipVideoPlayer->iFRWDStartTime.Int64() == 0 ) + + // Try to stop fastrewinding again, leaves + EUNIT_ASSERT_SPECIFIC_LEAVE( + iClipVideoPlayer->LcFastRewindL( EFalse ), KErrAlreadyExists ) + + // Start fastforwarding + iClipVideoPlayer->LcFastForwardL( ETrue ); + EUNIT_ASSERT( !file->iIsEnabled ) + EUNIT_ASSERT( iClipVideoPlayer->iFFWDStartTime.Int64() >= 0 ) + EUNIT_ASSERT( iClipVideoPlayer->iFRWDStartTime.Int64() == 0 ) + + // Start fastrewinding, forwarding should be stopped and FFWD started + iClipVideoPlayer->LcFastRewindL( ETrue ); + EUNIT_ASSERT( !file->iIsEnabled ); + EUNIT_ASSERT( iClipVideoPlayer->iFFWDStartTime.Int64() == 0 ) + EUNIT_ASSERT( iClipVideoPlayer->iFRWDStartTime.Int64() >= 0 ) + + // Simulate that clip has just begun and fastrewinding would have + // continued over beginning, position should be set to zero. + + file->iPosition = TTimeIntervalMicroSeconds( 1 ); + + // Simulate fastrewinding for a while + User::After( 1000 ); + + iClipVideoPlayer->LcFastRewindL( EFalse ); + EUNIT_ASSERT( file->iPosition == TTimeIntervalMicroSeconds( 0 ) ) + EUNIT_ASSERT( !file->iIsEnabled ) + EUNIT_ASSERT( iClipVideoPlayer->iFFWDStartTime.Int64() == 0 ) + EUNIT_ASSERT( iClipVideoPlayer->iFRWDStartTime.Int64() == 0 ) + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngClipVideoPlayer::UT_LcFilePositionL() + { + // Try before establishment + iClipVideoPlayer->SetMceSession( NULL ); + EUNIT_ASSERT_SPECIFIC_LEAVE( + iClipVideoPlayer->LcFilePositionL(), KErrNotReady ) + + // Establish session and try again + iClipVideoPlayer->SetMceSession( iMceSession ); + CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession ); + file->iPosition = 2000000; + EUNIT_ASSERT( iClipVideoPlayer->LcFilePositionL().Int() * 1000000 == + file->iPosition.Int64() ) + + // Ask position while fastforwarding, it should be bigger than real position + iClipVideoPlayer->LcFastForwardL( ETrue ); + User::After( 1000000 ); // We have to wait since dividing in LcFilePositionL and + // multiplying before comparison loses difference + EUNIT_ASSERT( iClipVideoPlayer->LcFilePositionL().Int() * 1000000 > + file->iPosition.Int64() ) + + // Ask position while fastforwarding beyond end of clip, clip duration is + // returned + file->iPosition = file->iDuration; + EUNIT_ASSERT( iClipVideoPlayer->LcFilePositionL().Int() * 1000000 == + file->iDuration.Int64() ) + + // Stop fastforwarding, start fastrewinding, position is set to the end clip + iClipVideoPlayer->LcFastForwardL( EFalse ); + iClipVideoPlayer->LcFastRewindL( ETrue ); + User::After( 1000000 ); // We have to wait since dividing in LcFilePositionL and + // multiplying before comparison loses difference + + // Ask position while fastrewinding, it should be smaller than real + // position + EUNIT_ASSERT( iClipVideoPlayer->LcFilePositionL().Int() * 1000000 < + file->iPosition.Int64() ) + + // Ask position while fastrewinding beyond the beginning of clip, zero + // returned + file->iPosition = 0; + EUNIT_ASSERT( iClipVideoPlayer->LcFilePositionL().Int() * 1000000 == 0 ) + + // Asking position when rewinded to beginning but rewinding has ended + // and clip has not ended (position should not be altered in that case) + iClipVideoPlayer->iRewindedToBeginning = ETrue; + file->iPosition = 0; + iClipVideoPlayer->iFRWDStartTime = TTime( 0 ); + EUNIT_ASSERT( iClipVideoPlayer->LcFilePositionL().Int() * 1000000 == 0 ) + + // Position has proceeded from beginning, rewinding to beginning info + // is cleared. + file->iPosition = 10000000; + iClipVideoPlayer->iFRWDStartTime = TTime( 0 ); + EUNIT_ASSERT( iClipVideoPlayer->LcFilePositionL().Int() * 1000000 == 10000000 ) + EUNIT_ASSERT( iClipVideoPlayer->iRewindedToBeginning == EFalse ) + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngClipVideoPlayer::UT_LcFileDurationL() + { + // Try before establishment + iClipVideoPlayer->SetMceSession( NULL ); + EUNIT_ASSERT_SPECIFIC_LEAVE( + iClipVideoPlayer->LcFileDurationL(), KErrNotReady ) + + // Establish session and try again + iClipVideoPlayer->SetMceSession( iMceSession ); + CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession ); + file->iDuration = 2000000; + EUNIT_ASSERT( iClipVideoPlayer->LcFileDurationL().Int() * 1000000 == + file->iDuration.Int64() ) + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngClipVideoPlayer::UT_SetLcFilePositionL() + { + TTimeIntervalSeconds time( 20 ); + + // Try before establishment + iClipVideoPlayer->SetMceSession( NULL ); + EUNIT_ASSERT_SPECIFIC_LEAVE( + iClipVideoPlayer->SetLcFilePositionL( time ), KErrNotReady ) + + // Normal case with already disabled file source + iClipVideoPlayer->SetMceSession( iMceSession ); + CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iMceSession ); + file->iIsEnabled = EFalse; + iClipVideoPlayer->SetLcFilePositionL( time ); + EUNIT_ASSERT( file->iPosition.Int64() == + static_cast< TInt64 >( time.Int() ) * 1000000 ) + EUNIT_ASSERT( !file->iIsEnabled ) + + // Normal case with enabled file source + TTimeIntervalSeconds anotherTime( 30 ); + file->iIsEnabled = ETrue; + iClipVideoPlayer->SetLcFilePositionL( anotherTime ); + EUNIT_ASSERT( file->iPosition.Int64() == + static_cast< TInt64 >( anotherTime.Int() ) * 1000000 ) + EUNIT_ASSERT( file->iIsEnabled ) + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngClipVideoPlayer::UT_LcWindowL() + { + EUNIT_ASSERT( iClipVideoPlayer->LcWindow() == iClipVideoPlayer ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngClipVideoPlayer::UT_LcCameraControlL() + { + EUNIT_ASSERT( iClipVideoPlayer->LcCameraControl() == NULL ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngClipVideoPlayer::UT_LcSourceFileControlL() + { + EUNIT_ASSERT( iClipVideoPlayer->LcSourceFileControl() == iClipVideoPlayer ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngClipVideoPlayer::UT_LcDestinationFileControlL() + { + EUNIT_ASSERT( iClipVideoPlayer->LcDestinationFileControl() == NULL ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngClipVideoPlayer::UT_LcAudioControlL() + { + EUNIT_ASSERT( iClipVideoPlayer->LcAudioControl() == &iLcAudioControlStub ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngClipVideoPlayer::UT_LcZoomControlL() + { + EUNIT_ASSERT( iClipVideoPlayer->LcZoomControl() == NULL ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngClipVideoPlayer::UT_LcBrightnessControlL() + { + EUNIT_ASSERT( iClipVideoPlayer->LcBrightnessControl() == NULL ) + } + +// TEST TABLE + +EUNIT_BEGIN_TEST_TABLE( + UT_CMusEngClipVideoPlayer, + "UT_CMusEngClipVideoPlayer", + "UNIT" ) + +EUNIT_TEST( + "HasClipEnded - test ", + "CMusEngClipVideoPlayer", + "HasClipEnded", + "FUNCTIONALITY", + SetupL, UT_HasClipEndedL, Teardown) + +EUNIT_TEST( + "LcVideoPlayerState - test ", + "CMusEngClipVideoPlayer", + "LcVideoPlayerState", + "FUNCTIONALITY", + SetupL, UT_LcVideoPlayerStateL, Teardown) + +EUNIT_TEST( + "LcPlayL - test ", + "CMusEngClipVideoPlayer", + "LcPlayL", + "FUNCTIONALITY", + SetupL, UT_LcPlayL, Teardown) + +EUNIT_TEST( + "LcPauseL - test ", + "CMusEngClipVideoPlayer", + "LcPauseL", + "FUNCTIONALITY", + SetupL, UT_LcPauseL, Teardown) + +EUNIT_TEST( + "LcIsPlayingL - test ", + "CMusEngClipVideoPlayer", + "LcIsPlayingL", + "FUNCTIONALITY", + SetupL, UT_LcIsPlayingL, Teardown) + +EUNIT_TEST( + "SetLcFileNameL - test ", + "CMusEngClipVideoPlayer", + "SetLcFileNameL", + "FUNCTIONALITY", + SetupL, UT_SetLcFileNameL, Teardown) + +EUNIT_TEST( + "LcFastForwardL - test ", + "CMusEngClipVideoPlayer", + "LcFastForwardL", + "FUNCTIONALITY", + SetupL, UT_LcFastForwardL, Teardown) + +EUNIT_TEST( + "LcFastRewindL - test ", + "CMusEngClipVideoPlayer", + "LcFastRewindL", + "FUNCTIONALITY", + SetupL, UT_LcFastRewindL, Teardown) + +EUNIT_TEST( + "LcFilePositionL - test ", + "CMusEngClipVideoPlayer", + "LcFilePositionL", + "FUNCTIONALITY", + SetupL, UT_LcFilePositionL, Teardown) + +EUNIT_TEST( + "LcFileDurationL - test ", + "CMusEngClipVideoPlayer", + "LcFileDurationL", + "FUNCTIONALITY", + SetupL, UT_LcFileDurationL, Teardown) + +EUNIT_TEST( + "SetLcFilePositionL - test ", + "CMusEngClipVideoPlayer", + "SetLcFilePositionL", + "FUNCTIONALITY", + SetupL, UT_SetLcFilePositionL, Teardown) + +EUNIT_TEST( + "LcWindow - test ", + "CMusEngClipVideoPlayer", + "LcWindow", + "FUNCTIONALITY", + SetupL, UT_LcWindowL, Teardown) + +EUNIT_TEST( + "LcCameraControl - test ", + "CMusEngClipVideoPlayer", + "LcCameraControl", + "FUNCTIONALITY", + SetupL, UT_LcCameraControlL, Teardown) + +EUNIT_TEST( + "LcSourceFileControl - test ", + "CMusEngClipVideoPlayer", + "LcSourceFileControl", + "FUNCTIONALITY", + SetupL, UT_LcSourceFileControlL, Teardown) + +EUNIT_TEST( + "LcDestinationFileControl - test ", + "CMusEngClipVideoPlayer", + "LcDestinationFileControl", + "FUNCTIONALITY", + SetupL, UT_LcDestinationFileControlL, Teardown) + +EUNIT_TEST( + "LcAudioControl - test ", + "CMusEngClipVideoPlayer", + "LcAudioControl", + "FUNCTIONALITY", + SetupL, UT_LcAudioControlL, Teardown) + +EUNIT_TEST( + "LcZoomControl - test ", + "CMusEngClipVideoPlayer", + "LcZoomControl", + "FUNCTIONALITY", + SetupL, UT_LcZoomControlL, Teardown) + +EUNIT_TEST( + "LcBrightnessControl - test ", + "CMusEngClipVideoPlayer", + "LcBrightnessControl", + "FUNCTIONALITY", + SetupL, UT_LcBrightnessControlL, Teardown) + +EUNIT_END_TEST_TABLE + +// END OF FILE +