diff -r b023a8d2866a -r ea65f74e6de4 photosgallery/slideshow/engine/tsrc/t_cshwmusiccontrol/t_cshwmusiccontrol.cpp --- a/photosgallery/slideshow/engine/tsrc/t_cshwmusiccontrol/t_cshwmusiccontrol.cpp Thu Jul 15 18:39:01 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,527 +0,0 @@ -/* -* Copyright (c) 2007-2007 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: Test for music control for the slideshow - * -*/ - - - -// CLASS HEADER -#include "t_cshwmusiccontrol.h" - -// EXTERNAL INCLUDES -#include -#include - -// INTERNAL INCLUDES -#include "shwevent.h" - -namespace - { - _LIT(KFileName, "c:\\knightrider.mp3"); - } - -// CONSTRUCTION -T_CShwMusicControl* T_CShwMusicControl::NewL() - { - T_CShwMusicControl* self = T_CShwMusicControl::NewLC(); - CleanupStack::Pop( self ); - return self; - } - -T_CShwMusicControl* T_CShwMusicControl::NewLC() - { - T_CShwMusicControl* self = new( ELeave ) T_CShwMusicControl; - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - - - -// Destructor (virtual by CBase) -T_CShwMusicControl::~T_CShwMusicControl() - { - } - - - -// Default constructor -T_CShwMusicControl::T_CShwMusicControl() - :iMusicOn(EFalse), - iCurrentVolume(KErrNotFound), - iMaxVolume(KErrNotFound), - iPrevVolume(KErrNotFound) - { - } - -// Second phase construct -void T_CShwMusicControl::ConstructL() - { - // The ConstructL from the base class CEUnitTestSuiteClass must be called. - // It generates the test case table. - CEUnitTestSuiteClass::ConstructL(); - } - -void T_CShwMusicControl::SendEventL(MShwEvent* aEvent) - { - iEvent = aEvent->CloneLC(); - CleanupStack::Pop( iEvent ); - } - -TBool gMusicOnCalled = EFalse; -void T_CShwMusicControl::MusicOnL() - { - EUNIT_PRINT(_L("Music is ON")); - iMusicOn = ETrue; - gMusicOnCalled = ETrue; - // leave if error code set - User::LeaveIfError( iLeaveInObserver ); - } - -TBool gMusicOffCalled = EFalse; -void T_CShwMusicControl::MusicOff() - { - EUNIT_PRINT(_L("Music is OFF")); - iMusicOn = EFalse; - gMusicOffCalled = ETrue; - } - - -void T_CShwMusicControl::MusicVolume(TInt aCurrentVolume, TInt aMaxVolume) - { - iPrevVolume = iCurrentVolume; - iCurrentVolume = aCurrentVolume; - iMaxVolume = aMaxVolume; - EUNIT_PRINT(_L("current volume %d"),aCurrentVolume); - if(iWait.IsStarted()) - { - iWait.AsyncStop(); - } - } - -void T_CShwMusicControl::ErrorWithTrackL( TInt aErrorCode ) - { - iErrorCode = aErrorCode; - } - -void T_CShwMusicControl::Empty() - { - } - -void T_CShwMusicControl::SetupL() - { - // reset current and max volume - iCurrentVolume = KErrNotFound; - iMaxVolume = KErrNotFound; - // reset error code - iErrorCode = KErrNone; - // reset leave flag - iLeaveInObserver = KErrNone; - // reset state flags - gMusicOnCalled = EFalse; - gMusicOffCalled = EFalse; - - iCShwMusicControl = CShwMusicControl::NewL( *this, KFileName ); - // set the event queue - inherited from parent CShwEventPublisherBase - iCShwMusicControl->SetEventQueue(this); - } - - -void T_CShwMusicControl::Teardown() - { - delete iCShwMusicControl; - iCShwMusicControl = NULL; - - delete iEvent; - iEvent = NULL; - } - -void T_CShwMusicControl::TestConstructL() - { - EUNIT_PRINT(_L("CShwMusicControl::NewL")); - // create - iCShwMusicControl = CShwMusicControl::NewL(*this, KFileName); - // set the event queue - iCShwMusicControl->SetEventQueue(this); - // test that object exists - EUNIT_ASSERT_DESC(iCShwMusicControl, "object created"); - // test that no error - EUNIT_ASSERT_EQUALS_DESC( - KErrNone, iErrorCode, "if there was error, make sure track file exists"); - // delete music control - delete iCShwMusicControl; - iCShwMusicControl = NULL; - // EUnit checks for memory leaks - } - -void T_CShwMusicControl::T_NotifyLL() - { - // test that no error - EUNIT_ASSERT_EQUALS_DESC( - KErrNone, iErrorCode, "if there was error, make sure track file exists"); - // send start event - TShwEventStart start; - iCShwMusicControl->NotifyL(&start); - // Need to let the scheduler loop to get first volume callback - iWait.Start(); // Wait for notification of volume - EUNIT_ASSERT(iMusicOn == ETrue); - EUNIT_ASSERT(iCurrentVolume != KErrNotFound && iMaxVolume != KErrNotFound); - } - -void T_CShwMusicControl::T_NotifyL1L() - { - // test that no error - EUNIT_ASSERT_EQUALS_DESC( - KErrNone, iErrorCode, "if there was error, make sure track file exists"); - // if should evaluate false: if (event) - MShwEvent* iParam1 = NULL; - iCShwMusicControl->NotifyL(iParam1); - - EUNIT_ASSERT_DESC( !iEvent, "event was not received" ); - - // test also HandlePropertyL with unsupported property - iCShwMusicControl->HandlePropertyL( EPbPropertyMute, 0, 0 ); - // test that volume was not send - EUNIT_ASSERT( iCurrentVolume == KErrNotFound && iMaxVolume == KErrNotFound ); - } - -void T_CShwMusicControl::T_NotifyL2L() - { - // test that no error - EUNIT_ASSERT_EQUALS_DESC( - KErrNone, iErrorCode, "if there was error, make sure track file exists"); - // send start event - TShwEventStart start; - iCShwMusicControl->NotifyL( &start ); - // Need to let the scheduler loop to get first volume callback - iWait.Start(); - // check that we got the volume - EUNIT_ASSERT(iCurrentVolume != KErrNotFound && iMaxVolume != KErrNotFound); - - // send pause - TShwEventPause pause; - iCShwMusicControl->NotifyL( &pause ); - EUNIT_ASSERT( iMusicOn == EFalse ); - - // send resume - TShwEventResume resume; - iCShwMusicControl->NotifyL( &resume ); - - EUNIT_ASSERT(iMusicOn != EFalse ); - } - -void T_CShwMusicControl::T_NotifyL3L() - { - // test that no error - EUNIT_ASSERT_EQUALS_DESC( - KErrNone, iErrorCode, "if there was error, make sure track file exists"); - // send resume before start - TShwEventResume resume; - iCShwMusicControl->NotifyL( &resume ); - EUNIT_ASSERT_DESC( iMusicOn == ETrue, "music is on" ); - - // Send pause before start, does not pause - TShwEventPause pause; - iCShwMusicControl->NotifyL( &pause ); - EUNIT_ASSERT_DESC( iMusicOn == EFalse, "music is off" ); - - // send start event - TShwEventStart start; - iCShwMusicControl->NotifyL( &start ); - // Need to let the scheduler loop to get first volume callback - iWait.Start(); - - // Second subsequent pause request - iCShwMusicControl->NotifyL( &pause ); - EUNIT_ASSERT_DESC( iMusicOn == EFalse, "music is now paused" ); - } - -void T_CShwMusicControl::T_NotifyL4L() - { - // test that no error - EUNIT_ASSERT_EQUALS_DESC( - KErrNone, iErrorCode, "if there was error, make sure track file exists"); - // send start event - TShwEventStart start; - iCShwMusicControl->NotifyL(&start); - // Need to let the scheduler loop to get first volume callback - iWait.Start(); - - // if should evaluate false: if (event) - TShwEventVolumeDown vol; - iCShwMusicControl->NotifyL(&vol); - - // Need to let the scheduler loop to get another volume callback - iWait.Start(); - EUNIT_ASSERT_GREATER_DESC( iPrevVolume, iCurrentVolume, "volume should decrease" ); - EUNIT_ASSERT_NOT_EQUALS( KErrNotFound, iMaxVolume ); - - iMaxVolume = KErrNotFound; - } - -void T_CShwMusicControl::T_NotifyL5L() - { - // test that no error - EUNIT_ASSERT_EQUALS_DESC( - KErrNone, iErrorCode, "if there was error, make sure track file exists"); - // send start event - TShwEventStart start; - iCShwMusicControl->NotifyL(&start); - // Need to let the scheduler loop to get first volume callback - iWait.Start(); - - // if should evaluate false: if (event) - TShwEventVolumeUp vol; - iCShwMusicControl->NotifyL(&vol); - - // Need to let the scheduler loop to get another volume callback - iWait.Start(); - EUNIT_ASSERT_GREATER_DESC( iCurrentVolume, iPrevVolume, "volume should increase" ); - EUNIT_ASSERT_NOT_EQUALS( KErrNotFound, iMaxVolume ); - iMaxVolume = KErrNotFound; - } - -void T_CShwMusicControl::T_ExtendedPlayL() - { - // test that no error - EUNIT_ASSERT_EQUALS_DESC( - KErrNone, iErrorCode, "if there was error, make sure track file exists"); - - TShwEventStart start; - iCShwMusicControl->NotifyL( &start ); - - if (!iTimer) - { - iTimer = CPeriodic::NewL(EPriorityNormal); - } - - // play for 10 seconds - const TInt KPlayPeriod = 10 * 1000000; // Microseconds - TCallBack callBack(StopPlaying, this); - iTimer->Start(KPlayPeriod, KPlayPeriod, callBack); - - iPlayWait.Start(); - - delete iTimer; - iTimer = NULL; - - TShwEventPause pause; - iCShwMusicControl->NotifyL(&pause); - EUNIT_ASSERT(iMusicOn == EFalse); - - } - -TInt T_CShwMusicControl::StopPlaying(TAny* aMusicControl) - { - T_CShwMusicControl* self = reinterpret_cast(aMusicControl); - - if(self->iPlayWait.IsStarted()) - { - self->iPlayWait.AsyncStop(); - } - - return KErrNone; - } - -void T_CShwMusicControl::T_ErrorInFileL() - { - // need to reset state as the setup is empty - gMusicOnCalled = EFalse; - // file that does not exist - _LIT( KErrorFileName, "C:\\juubaduuba.mp123" ); - // create - iCShwMusicControl = CShwMusicControl::NewL( *this, KErrorFileName ); - // set the event queue - iCShwMusicControl->SetEventQueue( this ); - // test that object exists - EUNIT_ASSERT_DESC(iCShwMusicControl, "object created"); - - // test that error was called - // test that no error - EUNIT_ASSERT_EQUALS_DESC( - KErrNotFound, iErrorCode, "track should not exist"); - - // test that start is a no-op - TShwEventStart start; - iCShwMusicControl->NotifyL( &start ); - - // test that music is off - EUNIT_ASSERT_DESC( gMusicOnCalled == EFalse, "music on was not called" ); - - // delete music control - delete iCShwMusicControl; - iCShwMusicControl = NULL; - // EUnit checks for memory leaks - } - -void T_CShwMusicControl::T_LeaveInObserverL() - { - // make observer leave - iLeaveInObserver = KErrCorrupt; - - // send start event - TShwEventStart start; - iCShwMusicControl->NotifyL( &start ); - - // test that music is off - EUNIT_ASSERT_DESC( iMusicOn == EFalse, "music is off"); - EUNIT_ASSERT_DESC( gMusicOnCalled == ETrue, "music on was called (and it did leave)" ); - EUNIT_ASSERT_DESC( gMusicOffCalled == ETrue, "music off was called" ); - // reset flags - gMusicOnCalled = EFalse; - gMusicOffCalled = EFalse; - - // make observer not leave - iLeaveInObserver = KErrNone; - - // resend start event - iCShwMusicControl->NotifyL( &start ); - // test that music is on - EUNIT_ASSERT_DESC( iMusicOn == ETrue, "music is on"); - EUNIT_ASSERT_DESC( gMusicOnCalled == ETrue, "music on was called" ); - EUNIT_ASSERT_DESC( gMusicOffCalled == EFalse, "music off was not called" ); - // reset flags - gMusicOnCalled = EFalse; - gMusicOffCalled = EFalse; - - // send pause - TShwEventPause pause; - iCShwMusicControl->NotifyL( &pause ); - EUNIT_ASSERT_DESC( iMusicOn == EFalse, "music is off" ); - EUNIT_ASSERT_DESC( gMusicOnCalled == EFalse, "music on was not called" ); - EUNIT_ASSERT_DESC( gMusicOffCalled == ETrue, "music off was called" ); - // reset flags - gMusicOnCalled = EFalse; - gMusicOffCalled = EFalse; - - // make observer leave - iLeaveInObserver = KErrCorrupt; - - // send resume - TShwEventResume resume; - iCShwMusicControl->NotifyL( &resume ); - EUNIT_ASSERT_DESC( iMusicOn == EFalse, "music is off" ); - EUNIT_ASSERT_DESC( gMusicOnCalled == ETrue, "music on was called (and it did leave)" ); - EUNIT_ASSERT_DESC( gMusicOffCalled == ETrue, "music off was called" ); - // reset flags - gMusicOnCalled = EFalse; - gMusicOffCalled = EFalse; - - // send volume up - TShwEventVolumeUp vol; - iCShwMusicControl->NotifyL( &vol ); - EUNIT_ASSERT_DESC( gMusicOnCalled == EFalse, "music on was not called" ); - EUNIT_ASSERT_DESC( gMusicOffCalled == EFalse, "music off was not called" ); - // reset flags - gMusicOnCalled = EFalse; - gMusicOffCalled = EFalse; - - // make observer not leave - iLeaveInObserver = KErrNone; - - // send resume - iCShwMusicControl->NotifyL( &resume ); - EUNIT_ASSERT_DESC( iMusicOn == ETrue, "music is on" ); - EUNIT_ASSERT_DESC( gMusicOnCalled == ETrue, "music on was called" ); - EUNIT_ASSERT_DESC( gMusicOffCalled == EFalse, "music off was not called" ); - } - -// TEST TABLE -EUNIT_BEGIN_TEST_TABLE( - T_CShwMusicControl, - "Test suite for CShwMusicControl", - "UNIT" ) - -/* - Commented out as MPX crashes with Kern-exec 0 -EUNIT_ALLOC_TEST( - "Constructor test", - "CShwMusicControl", - "NewL", - "FUNCTIONALITY", - Empty, TestConstructL, Teardown ) -*/ -// these cant be decorated as the EUnit -// scheduler does not implement Error method -EUNIT_NOT_DECORATED_TEST( - "NotifyL - test 0", - "CShwMusicControl", - "NotifyL", - "FUNCTIONALITY", - SetupL, T_NotifyLL, Teardown) - -EUNIT_NOT_DECORATED_TEST( - "NotifyL - test 1", - "CShwMusicControl", - "NotifyL", - "FUNCTIONALITY", - SetupL, T_NotifyL1L, Teardown) - -EUNIT_NOT_DECORATED_TEST( - "NotifyL - test 2", - "CShwMusicControl", - "NotifyL", - "FUNCTIONALITY", - SetupL, T_NotifyL2L, Teardown) - -EUNIT_NOT_DECORATED_TEST( - "NotifyL - test 3", - "CShwMusicControl", - "NotifyL", - "FUNCTIONALITY", - SetupL, T_NotifyL3L, Teardown) - -EUNIT_NOT_DECORATED_TEST( - "NotifyL - test 4", - "CShwMusicControl", - "NotifyL", - "FUNCTIONALITY", - SetupL, T_NotifyL4L, Teardown) - -EUNIT_NOT_DECORATED_TEST( - "NotifyL - test 5", - "CShwMusicControl", - "NotifyL", - "FUNCTIONALITY", - SetupL, T_NotifyL5L, Teardown) - -EUNIT_NOT_DECORATED_TEST( - "Test error in file", - "CShwMusicControl", - "ConstructL, NotifyL", - "FUNCTIONALITY", - Empty, T_ErrorInFileL, Teardown) - -EUNIT_NOT_DECORATED_TEST( - "Test leave in observer", - "CShwMusicControl", - "NotifyL", - "FUNCTIONALITY", - SetupL, T_LeaveInObserverL, Teardown ) - -/* -commented out as no added value for the time beeing -EUNIT_NOT_DECORATED_TEST( - "Play for multitple seconds", - "CShwMusicControl", - "NotifyL - test 6", - "FUNCTIONALITY", - SetupL, T_ExtendedPlayL, Teardown) -*/ - - -EUNIT_END_TEST_TABLE - -// END OF FILE