photosgallery/slideshow/engine/tsrc/t_cshwdefaulteffectmanager/t_cshwdefaulteffectmanager.cpp
changeset 0 4e91876724a2
child 2 7d9067c6fcb1
equal deleted inserted replaced
-1:000000000000 0:4e91876724a2
       
     1 /*
       
     2 * Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:   Test for default effect order manager
       
    15  *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 //  CLASS HEADER
       
    21 #include "t_cshwdefaulteffectmanager.h"
       
    22 
       
    23 //  EXTERNAL INCLUDES
       
    24 #include <Digia/eunit/eunitmacros.h>
       
    25 #include <digia/eunit/EUnitDecorators.h>
       
    26 
       
    27 //  INTERNAL INCLUDES
       
    28 #include "shwdefaulteffectmanager.h"
       
    29 #include "shweffect.h"
       
    30 #include "shwslideshowenginepanic.h"
       
    31 
       
    32 //	STUBS
       
    33 #include "stub_mshweffect.h"
       
    34 
       
    35 // -----------------------------------------------------------------------------
       
    36 // Stub for NShwEngine -->
       
    37 // -----------------------------------------------------------------------------
       
    38 namespace NShwEngine
       
    39 	{
       
    40 	extern void Panic( TShwEnginePanic aPanic )
       
    41 		{
       
    42 		// do a leave in test situation
       
    43 		User::Leave( aPanic );
       
    44 		}
       
    45 	}
       
    46 // -----------------------------------------------------------------------------
       
    47 // <-- Stub for NShwEngine
       
    48 // -----------------------------------------------------------------------------
       
    49 
       
    50 // CONSTRUCTION
       
    51 T_CShwDefaultEffectManager* T_CShwDefaultEffectManager::NewL()
       
    52     {
       
    53     T_CShwDefaultEffectManager* self = T_CShwDefaultEffectManager::NewLC();
       
    54     CleanupStack::Pop();
       
    55 
       
    56     return self;
       
    57     }
       
    58 
       
    59 T_CShwDefaultEffectManager* T_CShwDefaultEffectManager::NewLC()
       
    60     {
       
    61     T_CShwDefaultEffectManager* self = new( ELeave ) T_CShwDefaultEffectManager();
       
    62     CleanupStack::PushL( self );
       
    63 
       
    64     self->ConstructL();
       
    65 
       
    66     return self;
       
    67     }
       
    68 
       
    69 // Destructor (virtual by CBase)
       
    70 T_CShwDefaultEffectManager::~T_CShwDefaultEffectManager()
       
    71     {
       
    72     }
       
    73 
       
    74 // Default constructor
       
    75 T_CShwDefaultEffectManager::T_CShwDefaultEffectManager()
       
    76     {
       
    77     }
       
    78 
       
    79 // Second phase construct
       
    80 void T_CShwDefaultEffectManager::ConstructL()
       
    81     {
       
    82     // The ConstructL from the base class CEUnitTestSuiteClass must be called.
       
    83     // It generates the test case table.
       
    84     CEUnitTestSuiteClass::ConstructL();
       
    85     }
       
    86 
       
    87 //  METHODS
       
    88 void T_CShwDefaultEffectManager::EmptySetupL()
       
    89     {
       
    90     }
       
    91 
       
    92 void T_CShwDefaultEffectManager::SetupL()
       
    93     {
       
    94 	// create a default effect manager
       
    95 	iDefaultEffectManager = CShwDefaultEffectManager::NewL();
       
    96     }
       
    97     
       
    98 
       
    99 void T_CShwDefaultEffectManager::Teardown()
       
   100     {
       
   101     delete iDefaultEffectManager;
       
   102     iDefaultEffectManager = NULL; // set to NULL to prevent double delete
       
   103     }
       
   104    
       
   105 void T_CShwDefaultEffectManager::TestConstructionL()
       
   106 	{
       
   107 	EUNIT_PRINT( _L("TestConstructionL") );
       
   108 
       
   109 	// create a default effect manager
       
   110 	CShwDefaultEffectManager* tmp = CShwDefaultEffectManager::NewL();
       
   111 
       
   112 	EUNIT_ASSERT_DESC( tmp, "Construction successful");
       
   113 
       
   114 	delete tmp;
       
   115 	}
       
   116 
       
   117 void T_CShwDefaultEffectManager::TestAddEffectL()
       
   118     {
       
   119     T_MShwTestEffect* effect = new(ELeave) T_MShwTestEffect( 0 );
       
   120 
       
   121     CleanupStack::PushL( effect );
       
   122     iDefaultEffectManager->AddEffectL( effect );  // takes ownership
       
   123     CleanupStack::Pop( effect );
       
   124 
       
   125 	// TRAP since we expect it to leave
       
   126 	TRAPD( error, iDefaultEffectManager->CurrentEffect() );
       
   127     EUNIT_ASSERT_EQUALS_DESC( 
       
   128     	NShwEngine::EIncorrectEffectIndex, error, "iEffects was not set");
       
   129 	// get effects info
       
   130    	TShwEffectInfo info = effect->EffectInfo();
       
   131 	// set effect order
       
   132 	iDefaultEffectManager->SetDefaultEffectL( info );
       
   133 	// ask for effect again
       
   134 	MShwEffect* current = iDefaultEffectManager->CurrentEffect();
       
   135 	// and check that it is the same one as this
       
   136     EUNIT_ASSERT_DESC( 
       
   137     	current == static_cast<MShwEffect*>( effect ), "current effect was set");   
       
   138     }
       
   139 
       
   140 void T_CShwDefaultEffectManager::TestAddNullEffectL()
       
   141     {
       
   142     iDefaultEffectManager->AddEffectL( NULL );
       
   143 
       
   144 	// TRAP since we expect it to leave
       
   145 	TRAPD( error, iDefaultEffectManager->CurrentEffect() );
       
   146     EUNIT_ASSERT_EQUALS_DESC( 
       
   147     	NShwEngine::EIncorrectEffectIndex, error, "iEffects was not set");
       
   148 
       
   149 	// create empty effect info
       
   150    	TShwEffectInfo info;
       
   151 	// set effect order
       
   152 	TRAP( error, iDefaultEffectManager->SetDefaultEffectL( info ) );
       
   153 	// ask for effect again
       
   154     EUNIT_ASSERT_EQUALS_DESC( KErrArgument, error, "illegal argument");
       
   155     }
       
   156     
       
   157 void T_CShwDefaultEffectManager::TestNextEffectL()
       
   158     {
       
   159     // Create two effects
       
   160     T_MShwTestEffect* effect0 = new(ELeave) T_MShwTestEffect(0);
       
   161     CleanupStack::PushL( effect0 );
       
   162 
       
   163     // Add the effects
       
   164     iDefaultEffectManager->AddEffectL( effect0 );  // takes ownership
       
   165     CleanupStack::Pop( effect0 );
       
   166 
       
   167 	// get first effects info
       
   168    	TShwEffectInfo info = effect0->EffectInfo();
       
   169 	// set default effect, this means that we will take a clone
       
   170 	// of the first effect and return either the original or the
       
   171 	// clone
       
   172 	iDefaultEffectManager->SetDefaultEffectL( info );
       
   173     
       
   174     // Check the current effect
       
   175     MShwEffect* effect1 = iDefaultEffectManager->CurrentEffect();
       
   176     // Expect to get the effects in the order they were added...
       
   177     EUNIT_ASSERT( effect1 == static_cast<MShwEffect*>( effect0 ) );
       
   178     // get the next effect
       
   179     MShwEffect* effect2 = iDefaultEffectManager->Effect( 1 );
       
   180     
       
   181     // Proceed to next
       
   182     iDefaultEffectManager->ProceedToEffect( 1 );
       
   183 
       
   184 	// 
       
   185     EUNIT_ASSERT( effect2 == iDefaultEffectManager->CurrentEffect() );
       
   186     EUNIT_ASSERT( effect1 == iDefaultEffectManager->Effect( 1 ) );
       
   187     EUNIT_ASSERT( effect1 == iDefaultEffectManager->Effect( -1 ) );
       
   188     EUNIT_ASSERT( effect2 == iDefaultEffectManager->Effect( 2 ) );
       
   189     }
       
   190 
       
   191 /*
       
   192 void T_CShwDefaultEffectManager::TestProgrammedEffectL()
       
   193     {
       
   194     // Create two effects
       
   195     T_MShwTestEffect* effect0 = new(ELeave) T_MShwTestEffect(0);
       
   196     CleanupStack::PushL(effect0);
       
   197     T_MShwTestEffect* effect1 = new(ELeave) T_MShwTestEffect(1);
       
   198     CleanupStack::PushL(effect1);
       
   199     
       
   200     // Add the effects
       
   201     iDefaultEffectManager->AddEffectL(effect0);  // takes ownership
       
   202     iDefaultEffectManager->AddEffectL(effect1);  // takes ownership
       
   203     
       
   204     CleanupStack::Pop(2, effect0);
       
   205     
       
   206     // Specify programmed order
       
   207     iDefaultEffectManager->SetEffectOrder(MShwEffectManager::EShwEffectOrderProgrammed);
       
   208     
       
   209     // Create the programmed order
       
   210     RArray<MShwEffect*> programme;
       
   211     CleanupClosePushL(programme);
       
   212 //    CleanupStack::PushL(&programme);
       
   213     programme.AppendL(effect1);
       
   214     programme.AppendL(effect0);
       
   215     programme.AppendL(effect1);
       
   216     
       
   217     // Set the order
       
   218     iDefaultEffectManager->SetProgrammedEffects(programme);
       
   219     
       
   220     // 
       
   221     // Check the first effect
       
   222     MShwEffect* inEffect = static_cast<MShwEffect*>(effect1);
       
   223     MShwEffect* outEffect = iDefaultEffectManager->CurrentEffect();
       
   224     EUNIT_ASSERT_EQUALS(inEffect, outEffect);
       
   225    
       
   226     inEffect = static_cast<MShwEffect*>(effect0); 
       
   227     outEffect = iDefaultEffectManager->NextEffect(); 
       
   228     EUNIT_ASSERT_EQUALS(inEffect, outEffect);
       
   229 
       
   230     iDefaultEffectManager->ProceedToNextEffect();
       
   231     
       
   232     inEffect = static_cast<MShwEffect*>(effect1); 
       
   233     outEffect = iDefaultEffectManager->NextEffect(); 
       
   234     EUNIT_ASSERT_EQUALS(inEffect, outEffect);
       
   235     
       
   236     CleanupStack::PopAndDestroy(&programme);
       
   237     }
       
   238  
       
   239     
       
   240 void T_CShwDefaultEffectManager::TestMultiProgrammedEffectL()
       
   241     {
       
   242     // Create two effects
       
   243     T_MShwTestEffect* effect0 = new(ELeave) T_MShwTestEffect(0);
       
   244     CleanupStack::PushL(effect0);
       
   245     T_MShwTestEffect* effect1 = new(ELeave) T_MShwTestEffect(1);
       
   246     CleanupStack::PushL(effect1);
       
   247     T_MShwTestEffect* effect2 = new(ELeave) T_MShwTestEffect(2);
       
   248     CleanupStack::PushL(effect2);
       
   249     
       
   250     // Add the effects
       
   251     iDefaultEffectManager->AddEffectL(effect0);  // takes ownership
       
   252     iDefaultEffectManager->AddEffectL(effect1);  // takes ownership
       
   253     iDefaultEffectManager->AddEffectL(effect2);  // takes ownership
       
   254     
       
   255     CleanupStack::Pop(3, effect0);
       
   256     
       
   257     // Specify programmed order
       
   258     iDefaultEffectManager->SetEffectOrder(MShwEffectManager::EShwEffectOrderProgrammed);
       
   259     
       
   260     // Create the programmed order
       
   261     RArray<MShwEffect*> programme;
       
   262     CleanupClosePushL(programme);
       
   263 //    CleanupStack::PushL(&programme);
       
   264     programme.AppendL(effect2);
       
   265     programme.AppendL(effect1);
       
   266     programme.AppendL(effect0);
       
   267     programme.AppendL(effect2);
       
   268     programme.AppendL(effect1);
       
   269     programme.AppendL(effect0); 
       
   270        
       
   271     // Set the order
       
   272     iDefaultEffectManager->SetProgrammedEffects(programme);
       
   273     
       
   274     // 
       
   275     // Check the effect order is retrieved as 2, 1, 0
       
   276     MShwEffect* inEffect = static_cast<MShwEffect*>(effect2);
       
   277     MShwEffect* outEffect = iDefaultEffectManager->CurrentEffect();
       
   278     EUNIT_ASSERT_EQUALS(inEffect, outEffect);
       
   279 
       
   280     inEffect = static_cast<MShwEffect*>(effect1); 
       
   281     outEffect = iDefaultEffectManager->NextEffect(); 
       
   282     EUNIT_ASSERT_EQUALS(inEffect, outEffect);
       
   283     
       
   284     iDefaultEffectManager->ProceedToNextEffect();
       
   285        
       
   286     inEffect = static_cast<MShwEffect*>(effect2); 
       
   287     outEffect = iDefaultEffectManager->NextEffect(); 
       
   288     EUNIT_ASSERT_EQUALS(inEffect, outEffect);
       
   289     
       
   290     iDefaultEffectManager->ProceedToNextEffect();
       
   291        
       
   292     inEffect = static_cast<MShwEffect*>(effect1); 
       
   293     outEffect = iDefaultEffectManager->NextEffect(); 
       
   294     EUNIT_ASSERT_EQUALS(inEffect, outEffect);
       
   295     
       
   296     iDefaultEffectManager->ProceedToNextEffect();
       
   297        
       
   298     inEffect = static_cast<MShwEffect*>(effect0); 
       
   299     outEffect = iDefaultEffectManager->NextEffect(); 
       
   300     EUNIT_ASSERT_EQUALS(inEffect, outEffect);    
       
   301     iDefaultEffectManager->ProceedToNextEffect();
       
   302        
       
   303     CleanupStack::PopAndDestroy(&programme);
       
   304     }
       
   305 */    
       
   306 
       
   307 //  TEST TABLE
       
   308 EUNIT_BEGIN_TEST_TABLE(
       
   309     T_CShwDefaultEffectManager,
       
   310     "Test suite for CShwDefaultEffectManager.",
       
   311     "UNIT" )
       
   312 
       
   313 EUNIT_ALLOC_TEST(
       
   314     "Construct - Destruct Test",
       
   315     "CShwDefaultEffectManager",
       
   316     "CShwDefaultEffectManager",
       
   317     "FUNCTIONALITY",
       
   318     EmptySetupL, TestConstructionL, Teardown )	// needs to have teardown as alloc test
       
   319 
       
   320 EUNIT_TEST(
       
   321     "Add Effect Test",
       
   322     "CShwDefaultEffectManager",
       
   323     "CShwDefaultEffectManager",
       
   324     "FUNCTIONALITY",
       
   325     SetupL, TestAddEffectL, Teardown )
       
   326     
       
   327 EUNIT_TEST(
       
   328     "Add NULL Effect Test",
       
   329     "CShwDefaultEffectManager",
       
   330     "CShwDefaultEffectManager",
       
   331     "FUNCTIONALITY",
       
   332     SetupL, TestAddNullEffectL, Teardown )
       
   333     
       
   334 EUNIT_TEST(
       
   335     "Next Effect Test",
       
   336     "CShwDefaultEffectManager",
       
   337     "CShwDefaultEffectManager",
       
   338     "FUNCTIONALITY",
       
   339     SetupL, TestNextEffectL, Teardown )
       
   340     
       
   341 /*    
       
   342 EUNIT_TEST(
       
   343     "Programmed Effect Test",
       
   344     "CShwDefaultEffectManager",
       
   345     "CShwDefaultEffectManager",
       
   346     "FUNCTIONALITY",
       
   347     SetupL, TestProgrammedEffectL, Teardown )
       
   348     
       
   349 EUNIT_TEST(
       
   350     "Multi Prog Test",
       
   351     "CShwDefaultEffectManager",
       
   352     "CShwDefaultEffectManager",
       
   353     "FUNCTIONALITY",
       
   354     SetupL, TestMultiProgrammedEffectL, Teardown )
       
   355 */    
       
   356 
       
   357 EUNIT_END_TEST_TABLE
       
   358 
       
   359 //  END OF FILE