mmsharing/mmshmanagersrv/tsrc/ut_managersrv/src/UT_CMusApplicationManager.cpp
changeset 22 496ad160a278
equal deleted inserted replaced
15:ccd8e69b5392 22:496ad160a278
       
     1 /*
       
     2 * Copyright (c) 2004-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:  Unit tests for CMusApplicationManager class
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include "ut_cmusapplicationmanager.h"
       
    20 #include "musapplicationmanager.h"
       
    21 #include "musmanagercommon.h"
       
    22 #include "mussessionproperties.h"
       
    23 #include "musunittesting.h"
       
    24 #include "musmanagerservercommon.h"
       
    25 #include "mussessionproperties.h"
       
    26 #include "mustesthelp.h"
       
    27 #include "mussettings.h"
       
    28 #include "mussesseioninformationapi.h"
       
    29 #include <apgcli.h>
       
    30 #include <apgtask.h>
       
    31 #include <e32std.h>
       
    32 #include <e32property.h>
       
    33 #include <digia/eunit/eunitmacros.h>
       
    34 #include <APACMDLN.H>
       
    35 
       
    36 
       
    37 
       
    38 // ======== MEMBER FUNCTIONS ========
       
    39 
       
    40 
       
    41 UT_CMusApplicationManager* UT_CMusApplicationManager::NewL()
       
    42     {
       
    43     UT_CMusApplicationManager* self = UT_CMusApplicationManager::NewLC();
       
    44     CleanupStack::Pop();
       
    45     return self;
       
    46     }
       
    47 
       
    48 
       
    49 UT_CMusApplicationManager* UT_CMusApplicationManager::NewLC()
       
    50     {
       
    51     UT_CMusApplicationManager* self = new( ELeave ) UT_CMusApplicationManager();
       
    52     CleanupStack::PushL( self );
       
    53     self->ConstructL();
       
    54     return self;
       
    55     }
       
    56 
       
    57 
       
    58 UT_CMusApplicationManager::~UT_CMusApplicationManager()
       
    59     {
       
    60     }
       
    61 
       
    62 
       
    63 UT_CMusApplicationManager::UT_CMusApplicationManager()
       
    64     {
       
    65     }
       
    66 
       
    67 
       
    68 // ---------------------------------------------------------------------------
       
    69 // The ConstructL from the base class CEUnitTestSuiteClass must be called.
       
    70 // It generates the test case table.
       
    71 // ---------------------------------------------------------------------------
       
    72 //
       
    73 void UT_CMusApplicationManager::ConstructL()
       
    74     {
       
    75     CEUnitTestSuiteClass::ConstructL();
       
    76     }
       
    77 
       
    78 
       
    79 // ---------------------------------------------------------------------------
       
    80 // Setups a test by instantiating tested class.
       
    81 // ---------------------------------------------------------------------------
       
    82 //
       
    83 void UT_CMusApplicationManager::SetupL()
       
    84     {
       
    85     iManager = CMusApplicationManager::NewL();
       
    86     }
       
    87 
       
    88 
       
    89 // ---------------------------------------------------------------------------
       
    90 // Finalizes a by deleting instance of tested class.
       
    91 // ---------------------------------------------------------------------------
       
    92 //
       
    93 void UT_CMusApplicationManager::Teardown()
       
    94     {
       
    95     delete iManager;
       
    96     iManager = NULL;
       
    97     PropertyHelper::Close();
       
    98     Dll::FreeTls(); // Used by the RProcess and TFindProcess stubs
       
    99     }
       
   100 
       
   101 
       
   102 // ======== TEST METHODS ========
       
   103 
       
   104 
       
   105 // ---------------------------------------------------------------------------
       
   106 // Asserts that instantiation is successful.
       
   107 // ---------------------------------------------------------------------------
       
   108 //
       
   109 void UT_CMusApplicationManager::UT_CMusApplicationManager_NewLL()
       
   110     {
       
   111     EUNIT_ASSERT( iManager );
       
   112     TInt fastMode;
       
   113     User::LeaveIfError( RProperty::Get( NMusSessionApi::KCategoryUid, 
       
   114                                         NMusSessionApi::KFastMode, 
       
   115                                         fastMode ) );
       
   116     EUNIT_ASSERT_EQUALS( TInt( MusSettingsKeys::EFastModeOff ), fastMode );
       
   117     }
       
   118 
       
   119 
       
   120 // ---------------------------------------------------------------------------
       
   121 // Asserts that instantiation is successful.
       
   122 // ---------------------------------------------------------------------------
       
   123 //
       
   124 void UT_CMusApplicationManager::UT_CMusApplicationManager_NewLCL()
       
   125     {
       
   126     CMusApplicationManager* manager = CMusApplicationManager::NewLC();
       
   127     EUNIT_ASSERT( manager );
       
   128     CleanupStack::PopAndDestroy( manager );
       
   129     }
       
   130 
       
   131 
       
   132 // ---------------------------------------------------------------------------
       
   133 // Asserts that correct functions from TApaTask are called.
       
   134 // ---------------------------------------------------------------------------
       
   135 //
       
   136 void UT_CMusApplicationManager::UT_CMusApplicationManager_ApplicationRunningL()
       
   137     {
       
   138     EUNIT_ASSERT( !iManager->ApplicationRunning() )
       
   139    
       
   140     iManager->StartApplicationL();
       
   141     EUNIT_ASSERT( iManager->ApplicationRunning() )
       
   142     }
       
   143 
       
   144 
       
   145 // ---------------------------------------------------------------------------
       
   146 // Else branch of tested method can't be tested since it tries to start real
       
   147 // application.
       
   148 // ---------------------------------------------------------------------------
       
   149 //
       
   150 void UT_CMusApplicationManager::UT_CMusApplicationManager_StartApplicationLL()
       
   151     {
       
   152     EUNIT_ASSERT( !iManager->ApplicationRunning() )
       
   153     iManager->StartApplicationL();
       
   154     EUNIT_ASSERT_EQUALS( PropertyHelper::GetCalledFunction(), RProperty::EDefine )
       
   155     EUNIT_ASSERT( iManager->ApplicationRunning() )
       
   156     
       
   157     iManager->StartApplicationL();
       
   158     EUNIT_ASSERT( iManager->ApplicationRunning() )
       
   159     }
       
   160 
       
   161 
       
   162 // ---------------------------------------------------------------------------
       
   163 // Asserts that tested method calls TApaTask::Exists and if task exists it
       
   164 // should also call TApaTask::KillTask.
       
   165 // ---------------------------------------------------------------------------
       
   166 //
       
   167 void UT_CMusApplicationManager::UT_CMusApplicationManager_StopApplicationLL()
       
   168     {
       
   169     // MuS not running
       
   170     iManager->StopApplicationL(); 
       
   171     
       
   172     // MuS running
       
   173     User::LeaveIfError( 
       
   174         Dll::SetTls( reinterpret_cast< TAny* >( 1 ) ) );     
       
   175     // TLS is used by TFindProcess stub
       
   176     iManager->StopApplicationL();
       
   177     TInt availability = MultimediaSharing::EMultimediaSharingAvailable;
       
   178     TUint key( NMusSessionApi::KStatus );
       
   179     RProperty::Get( key, availability );
       
   180     EUNIT_ASSERT_EQUALS( PropertyHelper::GetCalledFunction(), RProperty::EDefine ) 
       
   181     EUNIT_ASSERT_EQUALS( availability, 
       
   182                          MultimediaSharing::EMultimediaSharingNotAvailable )
       
   183     }
       
   184 
       
   185 
       
   186 // ---------------------------------------------------------------------------
       
   187 //
       
   188 // ---------------------------------------------------------------------------
       
   189 //
       
   190 void UT_CMusApplicationManager::UT_CMusApplicationManager_ShowApplicationLL()
       
   191     {
       
   192     }
       
   193 
       
   194 
       
   195 // ---------------------------------------------------------------------------
       
   196 // Writes session properties. Asserts that RProperty leaves are passed
       
   197 // correctly to user.
       
   198 // ---------------------------------------------------------------------------
       
   199 //
       
   200 void UT_CMusApplicationManager::UT_CMusApplicationManager_WriteSessionPropertiesL()
       
   201     {
       
   202     CDesCArrayFlat* array = new( ELeave ) CDesCArrayFlat(4);
       
   203     CleanupStack::PushL( array );
       
   204 
       
   205     array->AppendL( _L( "a" ) );
       
   206     array->AppendL( _L( "b" ) );
       
   207     array->AppendL( _L( "c" ) );
       
   208     array->AppendL( _L( "d" ) );
       
   209     array->AppendL( _L( "e" ) );
       
   210     array->AppendL( _L( "f" ) );
       
   211     array->AppendL( _L( "g" ) );
       
   212     array->AppendL( _L( "0" ) ); //EFastModeOn
       
   213 
       
   214     iManager->WriteSessionPropertiesL(
       
   215         MultimediaSharing::EMusLiveVideo,
       
   216         (MultimediaSharing::TMusAvailabilityStatus) KErrNone,
       
   217         *array );
       
   218 
       
   219     PropertyHelper::SetErrorCode( KErrGeneral );
       
   220 
       
   221     EUNIT_ASSERT_SPECIFIC_LEAVE(
       
   222         iManager->WriteSessionPropertiesL(
       
   223             MultimediaSharing::EMusLiveVideo,
       
   224             (MultimediaSharing::TMusAvailabilityStatus) KErrNone,
       
   225             *array ), KErrGeneral );
       
   226 
       
   227     PropertyHelper::SetErrorCode(KErrNone);
       
   228     
       
   229     
       
   230 
       
   231     MultimediaSharingSettings::iVideoDirection = MusSettingsKeys::ETwoWayVideo;
       
   232     iManager->WriteSessionPropertiesL(
       
   233             MultimediaSharing::EMusLiveVideo,
       
   234             (MultimediaSharing::TMusAvailabilityStatus) KErrNone,
       
   235             *array );
       
   236 
       
   237     TInt val;
       
   238     User::LeaveIfError( RProperty::Get( NMusSessionApi::KCategoryUid, 
       
   239                                         NMusSessionApi::KUseCase, 
       
   240                                         val ) );
       
   241     
       
   242     MultimediaSharing::TMusUseCase usecase = 
       
   243                 static_cast< MultimediaSharing::TMusUseCase >( val );
       
   244     
       
   245     EUNIT_ASSERT( usecase == MultimediaSharing::EMusTwoWayVideo );
       
   246         
       
   247     
       
   248     //Ensure if fast mode key is "disabled", value from session params
       
   249     //won't be published
       
   250     User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid, 
       
   251                                         NMusSessionApi::KFastMode, 
       
   252                                         MusSettingsKeys::EFastModeDisabled ) );
       
   253     iManager->WriteSessionPropertiesL(
       
   254             MultimediaSharing::EMusLiveVideo,
       
   255             (MultimediaSharing::TMusAvailabilityStatus) KErrNone,
       
   256             *array );
       
   257     User::LeaveIfError( RProperty::Get( NMusSessionApi::KCategoryUid, 
       
   258                                         NMusSessionApi::KFastMode, 
       
   259                                         val ) );
       
   260     EUNIT_ASSERT_EQUALS( TInt( MusSettingsKeys::EFastModeDisabled ), val );
       
   261     
       
   262     CleanupStack::PopAndDestroy( array );
       
   263     }
       
   264 
       
   265 
       
   266 // ---------------------------------------------------------------------------
       
   267 // Sets a videosharing P/S property. Asserts that RProperty leaves are passed
       
   268 // correctly to user and RProperty::Define is called. Tests literal
       
   269 // properties specifically.
       
   270 // ---------------------------------------------------------------------------
       
   271 //
       
   272 void UT_CMusApplicationManager::UT_CMusApplicationManager_SetPropertyLL()
       
   273     {
       
   274     _LIT( KTest, "unit_test");
       
   275     PropertyHelper::SetErrorCode( KErrNotSupported );
       
   276     MUS_EUNIT_ASSERT_SPECIFIC_LEAVE(
       
   277         iManager->SetPropertyL( 1, KTest ),
       
   278         KErrNotSupported );
       
   279 
       
   280     EUNIT_ASSERT( PropertyHelper::GetCalledFunction() == RProperty::EDefine )
       
   281 
       
   282     PropertyHelper::SetErrorCode( KErrNone );
       
   283     EUNIT_ASSERT_NO_LEAVE( iManager->SetPropertyL( 1, KTest ) );
       
   284     }
       
   285 
       
   286 
       
   287 // ---------------------------------------------------------------------------
       
   288 // Sets a videosharing P/S property. Asserts that RProperty leaves are passed
       
   289 // correctly to user and RProperty::Define is called. Tests integral
       
   290 // properties specifically.
       
   291 // ---------------------------------------------------------------------------
       
   292 //
       
   293 void UT_CMusApplicationManager::UT_CMusApplicationManager_SetPropertyL2L()
       
   294     {
       
   295     PropertyHelper::SetErrorCode( KErrNotSupported );
       
   296     MUS_EUNIT_ASSERT_SPECIFIC_LEAVE(
       
   297         iManager->SetPropertyL( 1, 1 ),
       
   298         KErrNotSupported );
       
   299 
       
   300     EUNIT_ASSERT( PropertyHelper::GetCalledFunction() == RProperty::EDefine )
       
   301 
       
   302     PropertyHelper::SetErrorCode(KErrNone);
       
   303     MUS_EUNIT_ASSERT_NO_LEAVE( iManager->SetPropertyL( 1, 1 ) );
       
   304     }
       
   305 
       
   306 
       
   307 // ---------------------------------------------------------------------------
       
   308 // Sets a videosharing status. Asserts that RProperty leaves are passed
       
   309 // correctly to user and RProperty::Define is called.
       
   310 // ---------------------------------------------------------------------------
       
   311 //
       
   312 void UT_CMusApplicationManager::UT_CMusApplicationManager_SetStatusLL()
       
   313     {
       
   314     PropertyHelper::SetErrorCode( KErrGeneral );
       
   315     MUS_EUNIT_ASSERT_SPECIFIC_LEAVE( iManager->SetStatusL(
       
   316         MultimediaSharing::EMultimediaSharingNotAvailable ), KErrGeneral );
       
   317 
       
   318     EUNIT_ASSERT( PropertyHelper::GetCalledFunction() == RProperty::EDefine );
       
   319 
       
   320     PropertyHelper::SetErrorCode(KErrNone);
       
   321     MUS_EUNIT_ASSERT_NO_LEAVE( iManager->SetStatusL(
       
   322         MultimediaSharing::EMultimediaSharingAvailable ) );
       
   323     }
       
   324 
       
   325 
       
   326 // ---------------------------------------------------------------------------
       
   327 // CallProviderL Test
       
   328 // ---------------------------------------------------------------------------
       
   329 //
       
   330 void UT_CMusApplicationManager::UT_CMusApplicationManager_CallProviderLL()
       
   331     {
       
   332     TInt error = KErrNone;
       
   333     
       
   334     // Use Publish & Subscribe Keys to set CallProvider Name
       
   335     _LIT( KProviderName1, "MultimediaSharing");
       
   336     _LIT8( KProviderNameTest1, "MultimediaSharing");
       
   337     
       
   338     _LIT( KProviderNameEmpty1, "");
       
   339     _LIT8( KProviderNameEmptyTest1, "");
       
   340     
       
   341     
       
   342     // Valid Test:
       
   343     TRAP( error, RProperty::Set(
       
   344            NMusSessionInformationApi::KCategoryUid,
       
   345            NMusSessionInformationApi::KMUSCallProvider,
       
   346            KProviderName1 ));
       
   347 
       
   348     if ( error == KErrNoMemory ) User::Leave( error );
       
   349     EUNIT_ASSERT ( error == KErrNone );
       
   350     
       
   351     TBuf8<RProperty::KMaxPropertySize> providerName ;
       
   352     iManager->CallProviderL( providerName );
       
   353     
       
   354     EUNIT_ASSERT( providerName == KProviderNameTest1 );
       
   355     
       
   356 
       
   357     //Empty Test
       
   358     TRAP( error, RProperty::Set(
       
   359            NMusSessionInformationApi::KCategoryUid,
       
   360            NMusSessionInformationApi::KMUSCallProvider,
       
   361            KProviderNameEmpty1 ));
       
   362 
       
   363     if ( error == KErrNoMemory ) User::Leave( error );
       
   364     EUNIT_ASSERT ( error == KErrNone );
       
   365 
       
   366     iManager->CallProviderL( providerName );
       
   367     
       
   368     EUNIT_ASSERT( providerName == KProviderNameEmptyTest1 );
       
   369     }
       
   370 
       
   371 
       
   372 // ---------------------------------------------------------------------------
       
   373 // ResolvePluginName Test
       
   374 // ---------------------------------------------------------------------------
       
   375 //
       
   376 void UT_CMusApplicationManager::UT_CMusApplicationManager_ResolvePluginNameLL()
       
   377     {
       
   378     // Default Engine Name to be returned
       
   379     TInt error = KErrNone;
       
   380     _LIT( KEngineName, "MultimediaSharing");
       
   381     _LIT8( KEngineTestName, "MultimediaSharing");
       
   382 
       
   383     // Test String for the Publish/Subscribe Keys.
       
   384     _LIT( KProviderName, "MultimediaSharing");
       
   385     _LIT( KProviderName1, "CS");
       
   386   
       
   387     TBuf8<RProperty::KMaxPropertySize> engineName ;
       
   388 
       
   389     // Use Publish & Subscribe Keys to set Engine Name as 
       
   390     // 1. MultimediaSharing  [Exact Name]
       
   391     // 2. CS                 [No Match Found, Default MultiMediaSharing will be picked]
       
   392 
       
   393     // 1. MultimediaSharing  [Exact Name]
       
   394 
       
   395     TRAP( error, RProperty::Set(
       
   396            NMusSessionInformationApi::KCategoryUid,
       
   397            NMusSessionInformationApi::KMUSCallProvider,
       
   398            KProviderName ));
       
   399 
       
   400     if ( error == KErrNoMemory ) User::Leave( error );
       
   401     EUNIT_ASSERT ( error == KErrNone );
       
   402     
       
   403     iManager->ResolvePluginNameL( engineName );
       
   404     EUNIT_ASSERT( engineName == KEngineTestName );
       
   405   
       
   406     // 2. CS [No Match Found, Default MultiMediaSharing will be picked]
       
   407     TRAP( error, RProperty::Set(
       
   408            NMusSessionInformationApi::KCategoryUid,
       
   409            NMusSessionInformationApi::KMUSCallProvider,
       
   410            KProviderName1 ));
       
   411     
       
   412     if ( error == KErrNoMemory ) User::Leave( error );
       
   413     EUNIT_ASSERT ( error == KErrNone );
       
   414 
       
   415     iManager->ResolvePluginNameL( engineName );
       
   416     EUNIT_ASSERT( engineName == KEngineTestName );
       
   417     }
       
   418 
       
   419 // ---------------------------------------------------------------------------
       
   420 // Command line arg test
       
   421 // ---------------------------------------------------------------------------
       
   422 //
       
   423 void UT_CMusApplicationManager::UT_CMusApplicationManager_CreateCommandLineArgsLCL()
       
   424     {
       
   425     _LIT( KEnginePluginName, "MultimediaSharing" );
       
   426     HBufC* cmdLineArgs = iManager->CreateCommandLineArgsLC();
       
   427     
       
   428     EUNIT_ASSERT( cmdLineArgs != NULL )
       
   429     EUNIT_ASSERT_EQUALS( KEnginePluginName(), *cmdLineArgs )
       
   430     
       
   431     CleanupStack::PopAndDestroy( cmdLineArgs );
       
   432     }
       
   433 
       
   434 // ======== EUNIT TEST TABLE ========
       
   435 
       
   436 
       
   437 EUNIT_BEGIN_TEST_TABLE(
       
   438     UT_CMusApplicationManager,
       
   439     "CMusApplicationManager",
       
   440     "UNIT" )
       
   441 
       
   442 EUNIT_TEST(
       
   443     "NewL - test ",
       
   444     "CMusApplicationManager",
       
   445     "NewL",
       
   446     "FUNCTIONALITY",
       
   447     SetupL, UT_CMusApplicationManager_NewLL, Teardown )
       
   448 
       
   449 EUNIT_TEST(
       
   450     "NewLC - test ",
       
   451     "CMusApplicationManager",
       
   452     "NewLC",
       
   453     "FUNCTIONALITY",
       
   454     SetupL, UT_CMusApplicationManager_NewLCL, Teardown )
       
   455 
       
   456 EUNIT_TEST(
       
   457     "ApplicationRunning - test ",
       
   458     "CMusApplicationManager",
       
   459     "ApplicationRunning",
       
   460     "FUNCTIONALITY",
       
   461     SetupL, UT_CMusApplicationManager_ApplicationRunningL, Teardown )
       
   462 
       
   463 EUNIT_TEST(
       
   464     "StartApplicationL - test ",
       
   465     "CMusApplicationManager",
       
   466     "StartApplicationL",
       
   467     "FUNCTIONALITY",
       
   468     SetupL, UT_CMusApplicationManager_StartApplicationLL, Teardown )
       
   469 
       
   470 EUNIT_TEST(
       
   471     "StopApplicationL - test ",
       
   472     "CMusApplicationManager",
       
   473     "StopApplicationL",
       
   474     "FUNCTIONALITY",
       
   475     SetupL, UT_CMusApplicationManager_StopApplicationLL, Teardown )
       
   476 
       
   477 EUNIT_TEST(
       
   478     "ShowApplicationL - test ",
       
   479     "CMusApplicationManager",
       
   480     "ShowApplicationL",
       
   481     "FUNCTIONALITY",
       
   482     SetupL, UT_CMusApplicationManager_ShowApplicationLL, Teardown )
       
   483 
       
   484 EUNIT_TEST(
       
   485     "WriteSessionProperties - test ",
       
   486     "CMusApplicationManager",
       
   487     "WriteSessionProperties",
       
   488     "FUNCTIONALITY",
       
   489     SetupL, UT_CMusApplicationManager_WriteSessionPropertiesL, Teardown )
       
   490 
       
   491 EUNIT_TEST(
       
   492     "SetPropertyL (string) - test ",
       
   493     "CMusApplicationManager",
       
   494     "SetPropertyL",
       
   495     "FUNCTIONALITY",
       
   496     SetupL, UT_CMusApplicationManager_SetPropertyLL, Teardown )
       
   497 
       
   498 EUNIT_TEST(
       
   499     "SetPropertyL (integer) - test ",
       
   500     "CMusApplicationManager",
       
   501     "SetPropertyL",
       
   502     "FUNCTIONALITY",
       
   503     SetupL, UT_CMusApplicationManager_SetPropertyL2L, Teardown )
       
   504 
       
   505 EUNIT_TEST(
       
   506     "SetStatusL - test ",
       
   507     "CMusApplicationManager",
       
   508     "SetStatusL",
       
   509     "FUNCTIONALITY",
       
   510     SetupL, UT_CMusApplicationManager_SetStatusLL, Teardown )
       
   511 
       
   512 EUNIT_TEST(
       
   513     "CallProviderL - test ",
       
   514     "CMusApplicationManager",
       
   515     "CallProviderL",
       
   516     "FUNCTIONALITY",
       
   517     SetupL, UT_CMusApplicationManager_CallProviderLL, Teardown )    
       
   518     
       
   519 EUNIT_TEST(
       
   520     "ResolvePluginNameL - test ",
       
   521     "CMusApplicationManager",
       
   522     "ResolvePluginNameL",
       
   523     "FUNCTIONALITY",
       
   524     SetupL, UT_CMusApplicationManager_ResolvePluginNameLL, Teardown ) 
       
   525     
       
   526 EUNIT_TEST(
       
   527     "CreateCommandLineLC - test ",
       
   528     "CMusApplicationManager",
       
   529     "CreateCommandLineLC",
       
   530     "FUNCTIONALITY",
       
   531     SetupL, UT_CMusApplicationManager_CreateCommandLineArgsLCL, Teardown )  
       
   532     
       
   533 EUNIT_END_TEST_TABLE