diff -r 5b238bc8ffb6 -r 01504893d9cb photosgallery/slideshow/engine/tsrc/t_cshwplaybackfactory/t_cshwplaybackfactory.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/photosgallery/slideshow/engine/tsrc/t_cshwplaybackfactory/t_cshwplaybackfactory.cpp Wed Oct 13 14:32:09 2010 +0300 @@ -0,0 +1,332 @@ +/* +* 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 suite for CShwPlaybackFactory + * +*/ + + + +// CLASS HEADER +#include "t_cshwplaybackfactory.h" + +// EXTERNAL INCLUDES +#include +#include +#include +#include + +// INTERNAL INCLUDES +#include "shwplaybackfactory.h" +#include "shwslideshowenginepanic.h" +#include "shwcrossfadeeffect.h" +#include "shwzoomandpaneffect.h" +#include "shwconstants.h" + +// ----------------------------------------------------------------------------- +// Stub for NShwEngine::Panic --> +// ----------------------------------------------------------------------------- +TBool gNShwEnginePanicCalled = EFalse; +namespace NShwEngine + { + extern void Panic( TShwEnginePanic aPanic ) + { + gNShwEnginePanicCalled = ETrue; + // in test situation just do a leave + User::Leave( aPanic ); + } + } +// ----------------------------------------------------------------------------- +// <-- Stub for NShwEngine::Panic +// ----------------------------------------------------------------------------- + +TGlxSetValueLayout gStubLayout( TGlxLayoutInfo::EPosition ); + +// ----------------------------------------------------------------------------- +// Stub for CShwCrossFadeEffect --> +// ----------------------------------------------------------------------------- +inline CShwCrossFadeEffect::CShwCrossFadeEffect() + { + } +CShwCrossFadeEffect* CShwCrossFadeEffect::NewLC() + { + CShwCrossFadeEffect* self = new (ELeave) CShwCrossFadeEffect; + CleanupStack::PushL( self ); + return self; + } +CShwCrossFadeEffect::~CShwCrossFadeEffect() + { + } +MShwEffect* CShwCrossFadeEffect::CloneLC() + { + return NewLC(); + } +void CShwCrossFadeEffect::InitializeL( + CHuiEnv* /*aHuiEnv*/, MGlxVisualList* /*aVisualList*/, + MGlxMediaList* /*aMediaList*/, TSize /*aScreenSize*/ ) + { + } +TSize CShwCrossFadeEffect::PrepareViewL( CHuiVisual* /*aVisual*/, TSize /*aSize*/ ) + { + return TSize( 0, 0 ); + } +MGlxLayout* CShwCrossFadeEffect::EnterViewL( + CHuiVisual* /*aVisual*/, TInt /*aDuration*/, TInt /*aDuration2*/ ) + { + return &gStubLayout; + } +void CShwCrossFadeEffect::ExitView( CHuiVisual* /*aVisual*/ ) + { + } +MGlxLayout* CShwCrossFadeEffect::EnterTransitionL( + CHuiVisual* /*aVisual*/, TInt /*aDuration*/ ) + { + return &gStubLayout; + } +void CShwCrossFadeEffect::ExitTransition( CHuiVisual* /*aVisual*/ ) + { + } +void CShwCrossFadeEffect::PauseL() + { + } +void CShwCrossFadeEffect::Resume() + { + } +// the effect info for zoom and pan +TShwEffectInfo gCrossFadeEffectInfo; +TShwEffectInfo CShwCrossFadeEffect::EffectInfo() + { + return gCrossFadeEffectInfo; + } + +// ----------------------------------------------------------------------------- +// <-- Stub for CShwCrossFadeEffect +// ----------------------------------------------------------------------------- + +// ----------------------------------------------------------------------------- +// Stub for CShwZoomAndPanEffect --> +// ----------------------------------------------------------------------------- +inline CShwZoomAndPanEffect::CShwZoomAndPanEffect() + { + } +CShwZoomAndPanEffect* CShwZoomAndPanEffect::NewLC() + { + CShwZoomAndPanEffect* self = new (ELeave) CShwZoomAndPanEffect; + CleanupStack::PushL( self ); + return self; + } +CShwZoomAndPanEffect::~CShwZoomAndPanEffect() + { + } +MShwEffect* CShwZoomAndPanEffect::CloneLC() + { + return NewLC(); + } +void CShwZoomAndPanEffect::InitializeL( + CHuiEnv* /*aHuiEnv*/, MGlxVisualList* /*aVisualList*/, + MGlxMediaList* /*aMediaList*/, TSize /*aScreenSize*/ ) + { + } +TSize CShwZoomAndPanEffect::PrepareViewL( CHuiVisual* /*aVisual*/, TSize /*aSize*/ ) + { + return TSize( 0, 0 ); + } +MGlxLayout* CShwZoomAndPanEffect::EnterViewL( + CHuiVisual* /*aVisual*/, TInt /*aDuration*/, TInt /*aDuration2*/ ) + { + return &gStubLayout; + } +void CShwZoomAndPanEffect::ExitView( CHuiVisual* /*aVisual*/ ) + { + } +MGlxLayout* CShwZoomAndPanEffect::EnterTransitionL( + CHuiVisual* /*aVisual*/, TInt /*aDuration*/ ) + { + return &gStubLayout; + } +void CShwZoomAndPanEffect::ExitTransition( CHuiVisual* /*aVisual*/ ) + { + } +void CShwZoomAndPanEffect::PauseL() + { + } +void CShwZoomAndPanEffect::Resume() + { + } +// the effect info for zoom and pan +TShwEffectInfo gZoomAndPanEffectInfo; +TShwEffectInfo CShwZoomAndPanEffect::EffectInfo() + { + return gZoomAndPanEffectInfo; + } + +// ----------------------------------------------------------------------------- +// <-- Stub for CShwZoomAndPanEffect +// ----------------------------------------------------------------------------- + +// CONSTRUCTION +T_CShwPlaybackFactory* T_CShwPlaybackFactory::NewL() + { + T_CShwPlaybackFactory* self = T_CShwPlaybackFactory::NewLC(); + CleanupStack::Pop( self ); + return self; + } + +T_CShwPlaybackFactory* T_CShwPlaybackFactory::NewLC() + { + T_CShwPlaybackFactory* self = new( ELeave ) T_CShwPlaybackFactory(); + CleanupStack::PushL( self ); + + self->ConstructL(); + + return self; + } + +// Destructor (virtual by CBase) +T_CShwPlaybackFactory::~T_CShwPlaybackFactory() + { + } + +// Default constructor +T_CShwPlaybackFactory::T_CShwPlaybackFactory() + { + } + +// Second phase construct +void T_CShwPlaybackFactory::ConstructL() + { + // The ConstructL from the base class CEUnitTestSuiteClass must be called. + // It generates the test case table. + CEUnitTestSuiteClass::ConstructL(); + } + +// METHODS + +void T_CShwPlaybackFactory::Empty() + { + } + +void T_CShwPlaybackFactory::SetupL() + { + // create the stubs + iStubVisuallist = new( ELeave ) TMGlxVisualList_Adapter( this ); + iStubMedialist = new( ELeave ) TMGlxMediaList_Stub( this ); + + // fix the effect infos + gCrossFadeEffectInfo.iId.iPluginUid = NShwSlideshow::KDefaultEffectPluginUid; + gCrossFadeEffectInfo.iId.iIndex = NShwSlideshow::KEffectUidXFadeNormal; + gZoomAndPanEffectInfo.iId.iPluginUid = NShwSlideshow::KDefaultEffectPluginUid; + gZoomAndPanEffectInfo.iId.iIndex = NShwSlideshow::KEffectUidZoomAndPan; + + /// @todo add an own test case where the music observer is also given + /// so that the music control is constructed + iCShwPlaybackFactory = + CShwPlaybackFactory::NewL( + iHuiEnv, iStubVisuallist, iStubMedialist, *this, TSize( 100, 100 ) ); + } + +void T_CShwPlaybackFactory::Teardown() + { + delete iCShwPlaybackFactory; + iCShwPlaybackFactory = NULL; + delete iStubVisuallist; + iStubVisuallist = NULL; + delete iStubMedialist; + iStubMedialist = NULL; + } + +TInt gCounter = 0; + +void T_CShwPlaybackFactory::T_ContructL() + { + // trap the call as it will leave, dont trap oom as this is alloc test + EUNIT_TRAP_EXCEPT_ALLOC_D( err, + { + iCShwPlaybackFactory = + CShwPlaybackFactory::NewL( + iHuiEnv, iStubVisuallist, iStubMedialist, *this, TSize( 100, 100 ) ); + } ); + EUNIT_ASSERT_EQUALS_DESC( KErrArgument, err, "wrong effect tried to set" ); + EUNIT_ASSERT_DESC( !iCShwPlaybackFactory, "playback factory not created" ); + } + +void T_CShwPlaybackFactory::T_ContructValidEffectL() + { + EUNIT_PRINT( _L("T_ContructValidEffectL") ); + // call setup to test the succesfull case + SetupL(); + + EUNIT_ASSERT_DESC( iCShwPlaybackFactory, "Test that object created" ); + } + +void T_CShwPlaybackFactory::T_EventObserversL() + { + // get observers + RPointerArray< MShwEventObserver > obs = + iCShwPlaybackFactory->EventObservers(); + // check the amount + EUNIT_ASSERT_EQUALS_DESC( + obs.Count(), + 3, + "3 observers returned, music is off by default"); + } + +void T_CShwPlaybackFactory::T_EventPublishersL( ) + { + // get publishers + RPointerArray< MShwEventPublisher > obs = + iCShwPlaybackFactory->EventPublishers(); + // check the amount + EUNIT_ASSERT_EQUALS_DESC( + obs.Count(), + 3, + "3 publishers returned, music is off by default"); + } + +// TEST TABLE +EUNIT_BEGIN_TEST_TABLE( + T_CShwPlaybackFactory, + "CShwPlaybackFactory test suite", + "UNIT" ) + +EUNIT_ALLOC_TEST( + "Constructor invalid effects", + "CShwPlaybackFactory", + "Constructor test", + "FUNCTIONALITY", + Empty, T_ContructL, Teardown ) + +EUNIT_ALLOC_TEST( + "Constructor valid effects", + "CShwPlaybackFactory", + "Constructor test", + "FUNCTIONALITY", + Empty, T_ContructValidEffectL, Teardown ) + +EUNIT_ALLOC_TEST( + "EventObservers", + "CShwPlaybackFactory", + "EventObservers", + "FUNCTIONALITY", + SetupL, T_EventObserversL, Teardown) + +EUNIT_ALLOC_TEST( + "EventPublishers", + "CShwPlaybackFactory", + "EventPublishers", + "FUNCTIONALITY", + SetupL, T_EventPublishersL, Teardown) + +EUNIT_END_TEST_TABLE + +// END OF FILE