idlefw/tsrc/mcsplugin/ut_mcsplugin/ut_mcspluginpublisher.cpp
branchRCL_3
changeset 28 053c6c7c14f3
child 31 8baec10861af
equal deleted inserted replaced
27:2c7f27287390 28:053c6c7c14f3
       
     1 /*
       
     2 * Copyright (c) 2010 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 test for the mcsplugin publisher
       
    15 *
       
    16 */
       
    17 
       
    18 #include "ut_mcspluginpublisher.h"
       
    19 
       
    20 #define protected public
       
    21 #define private public
       
    22 
       
    23 #include "mcsplugin.h"
       
    24 #include "mcspluginengine.h"
       
    25 #include "mcsplugindata.h"
       
    26 
       
    27 #undef private
       
    28 #undef protected
       
    29 
       
    30 #include <e32cmn.h>
       
    31 #include <digia/eunit/eunitmacros.h>
       
    32 #include <mcspluginuids.hrh>
       
    33 #include <mcsdef.h>
       
    34 
       
    35 #include <hscontentpublisher.h>
       
    36 #include <hspluginsettings.h>
       
    37 
       
    38 
       
    39 using namespace HSPluginSettingsIf;
       
    40 
       
    41 _LIT( KMcsPluginName, "mcsplugin" );
       
    42 _LIT8( KNameSpace, "3" );
       
    43 
       
    44 _LIT( KMenuIconFile, "aimcsplugin.mif" );
       
    45 _LIT( KMenuBookmarkIconId, "16386" );
       
    46 _LIT( KMenuBookmarkMaskId, "16387" );
       
    47 _LIT( KMenuMailboxIconId, "16388" );
       
    48 _LIT( KMenuMailboxMaskId, "16389" );
       
    49 _LIT( KMenuTypeMailbox, "menu:mailbox" );
       
    50 _LIT( KIcon, "icon" );
       
    51 
       
    52 _LIT8( KProperNameType, "type" );
       
    53 _LIT8( KProperNameParam, "param" );
       
    54 _LIT8( KProperNameUid, "uid" );
       
    55 _LIT8( KProperNameView, "view" );
       
    56 _LIT8( KProperNameLocked, "locked" );
       
    57 _LIT8( KProperValueBookmark, "bookmark" );
       
    58 _LIT8( KProperValueFolder, "folder" );
       
    59 _LIT8( KProperValueMailbox, "mailbox" );
       
    60 _LIT8( KMenuAttrUndefUid, "0x99999991" );
       
    61 _LIT8( KMenuAttrViewTest, "view:test" );
       
    62 _LIT8( KMenuAttrParamTest, "param:test" );
       
    63 
       
    64 _LIT( KTestName, "test:name" );
       
    65 _LIT( KTestIconAttr, "icon_attributes" );
       
    66 _LIT( KTestIconValue, "skin(270501603 9361):mif(icon.mif 16384 16385)" );
       
    67 
       
    68 
       
    69 
       
    70 // ----------------------------------------------------------------------------
       
    71 // CleanupResetAndDestroy()
       
    72 // ----------------------------------------------------------------------------
       
    73 //
       
    74 template<class T>
       
    75 static void CleanupResetAndDestroy( TAny* aObj )
       
    76     {
       
    77     if( aObj )
       
    78         {
       
    79         static_cast<T*>( aObj )->ResetAndDestroy();
       
    80         }
       
    81     }
       
    82 
       
    83 // ----------------------------------------------------------------------------
       
    84 // CleanupResetAndDestroyPushL
       
    85 // ----------------------------------------------------------------------------
       
    86 //
       
    87 template<class T>
       
    88 static void CleanupResetAndDestroyPushL(T& aArray)
       
    89     {
       
    90     CleanupStack::PushL( TCleanupItem( &CleanupResetAndDestroy<T>, &aArray ) );
       
    91     }
       
    92 
       
    93 
       
    94 // CONSTRUCTION
       
    95 
       
    96 // ---------------------------------------------------------------------------
       
    97 //
       
    98 // ---------------------------------------------------------------------------
       
    99 //
       
   100 UT_MCSPluginPublisher* UT_MCSPluginPublisher::NewL()
       
   101 {
       
   102     UT_MCSPluginPublisher* self = UT_MCSPluginPublisher::NewLC();
       
   103     CleanupStack::Pop();
       
   104 
       
   105     return self;
       
   106 }
       
   107 
       
   108 // ---------------------------------------------------------------------------
       
   109 //
       
   110 // ---------------------------------------------------------------------------
       
   111 //
       
   112 UT_MCSPluginPublisher* UT_MCSPluginPublisher::NewLC()
       
   113 {
       
   114     UT_MCSPluginPublisher* self = new(ELeave) UT_MCSPluginPublisher();
       
   115     CleanupStack::PushL(self);
       
   116 
       
   117     self->ConstructL();
       
   118 
       
   119     return self;
       
   120 }
       
   121 
       
   122 // ---------------------------------------------------------------------------
       
   123 // Destructor (virtual by CBase)
       
   124 // ---------------------------------------------------------------------------
       
   125 //
       
   126 UT_MCSPluginPublisher::~UT_MCSPluginPublisher()
       
   127 {
       
   128 }
       
   129 
       
   130 // ---------------------------------------------------------------------------
       
   131 // Default constructor
       
   132 // ---------------------------------------------------------------------------
       
   133 //
       
   134 UT_MCSPluginPublisher::UT_MCSPluginPublisher()
       
   135 {
       
   136 }
       
   137 
       
   138 // ---------------------------------------------------------------------------
       
   139 // Second phase construct
       
   140 // ---------------------------------------------------------------------------
       
   141 //
       
   142 void UT_MCSPluginPublisher::ConstructL()
       
   143 {
       
   144     // The ConstructL from the base class CEUnitTestSuiteClass must be called.
       
   145     // It generates the test case table.
       
   146     CEUnitTestSuiteClass::ConstructL();
       
   147 }
       
   148 
       
   149 // ---------------------------------------------------------------------------
       
   150 // void UT_McsPluginPublisher::HandleSessionEventL
       
   151 // ---------------------------------------------------------------------------
       
   152 //
       
   153 void UT_MCSPluginPublisher::HandleSessionEventL(
       
   154           TMsvSessionEvent /*aEvent*/, 
       
   155           TAny* /*aArg1*/, 
       
   156           TAny* /*aArg2*/,
       
   157           TAny* /*aArg3*/ )
       
   158 {
       
   159 // No event handling
       
   160 }
       
   161 
       
   162 
       
   163 // ---------------------------------------------------------------------------
       
   164 // void UT_McsPluginPublisher::SetupL()
       
   165 // ---------------------------------------------------------------------------
       
   166 //
       
   167 void UT_MCSPluginPublisher::SetupL()
       
   168 {
       
   169     _LIT8( KAppUid, "271012080" );
       
   170     CHomescreenSettings::InitializeL( KAppUid );
       
   171 
       
   172     TUid uid = { AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_MCSPLUGIN };    
       
   173 
       
   174     THsPublisherInfo pubInfo( uid, KMcsPluginName, KNameSpace );
       
   175 
       
   176     iMCSPlugin = static_cast<CMCSPlugin*> 
       
   177         (CHsContentPublisher::NewL( pubInfo ));
       
   178     
       
   179     EUNIT_ASSERT( iMCSPlugin );
       
   180     
       
   181     RAiSettingsItemArray settings;
       
   182     iMCSPlugin->ConfigureL( settings );
       
   183     
       
   184 
       
   185     // MCS plugin settings
       
   186     iPluginSettings = CHomescreenSettings::Instance();
       
   187     if( iPluginSettings == NULL )
       
   188         {
       
   189         User::Leave( KErrUnknown );
       
   190         }
       
   191 
       
   192     User::LeaveIfError( iPluginSettings->GetSettingsL( KNameSpace, iSettings ));
       
   193     if ( iSettings.Count() <= 0 )
       
   194         {
       
   195         User::Leave( KErrNotFound );
       
   196         }
       
   197 }
       
   198 
       
   199 // ---------------------------------------------------------------------------
       
   200 // void UT_McsPluginPublisher::Teardown()
       
   201 // ---------------------------------------------------------------------------
       
   202 //
       
   203 void UT_MCSPluginPublisher::Teardown()
       
   204 {
       
   205     User::LeaveIfError( iPluginSettings->SetSettingsL( KNameSpace,
       
   206         iSettings, ETrue ));
       
   207 
       
   208     iSettings.ResetAndDestroy();
       
   209 
       
   210     CHomescreenSettings::UnInitialize();
       
   211 
       
   212     if( iMCSPlugin )
       
   213     {
       
   214         delete iMCSPlugin;
       
   215         iMCSPlugin = NULL;
       
   216     }
       
   217 }
       
   218 
       
   219 // ---------------------------------------------------------------------------
       
   220 // Test CMCSData class
       
   221 // ---------------------------------------------------------------------------
       
   222 //
       
   223 void UT_MCSPluginPublisher::TestMCSDataL()
       
   224 {
       
   225     _LIT( KTestName, "test:name" );
       
   226     _LIT( KTestValue, "test:value" );
       
   227 
       
   228     CMCSData* data = new ( ELeave ) CMCSData();
       
   229     CleanupStack::PushL( data );
       
   230 
       
   231     data->SetNameL( KTestName );
       
   232     data->SetValueL( KTestValue );
       
   233 
       
   234     EUNIT_ASSERT_EQUALS( data->Name(), KTestName );
       
   235     EUNIT_ASSERT_EQUALS( data->Value(), KTestValue );
       
   236 
       
   237     CleanupStack::PopAndDestroy( data );
       
   238 }
       
   239 
       
   240 // ---------------------------------------------------------------------------
       
   241 // Test CMCSPluginData::RemoveDataL
       
   242 // ---------------------------------------------------------------------------
       
   243 //
       
   244 void UT_MCSPluginPublisher::TestMCSPluginData_RemoveDataL()
       
   245 {
       
   246     CMCSData& data = iMCSPlugin->iEngine->iPluginData->DataItemL( 0 );
       
   247 
       
   248     data.MenuItem().SetType( KMenuTypeMailbox );
       
   249     data.MenuItem().SetId( 0 );
       
   250 
       
   251     iMCSPlugin->iEngine->iPluginData->RemoveDataL( 0 );
       
   252 
       
   253     EUNIT_ASSERT_EQUALS( data.MenuItem().Id(), KErrNotFound );
       
   254     EUNIT_ASSERT_EQUALS( data.IsDirty(), ETrue );
       
   255 }
       
   256 
       
   257 // ---------------------------------------------------------------------------
       
   258 // Test CMCSPluginData::GetBkmDataL
       
   259 // ---------------------------------------------------------------------------
       
   260 //
       
   261 void UT_MCSPluginPublisher::TestMCSPluginData_GetBkmDataL()
       
   262 {
       
   263     RPointerArray<CItemMap> settings;
       
   264     CleanupResetAndDestroyPushL( settings );
       
   265 
       
   266     User::LeaveIfError( iPluginSettings->GetSettingsL( KNameSpace , settings ));
       
   267 
       
   268     CItemMap* itemMap = settings[0];
       
   269     RPointerArray<HSPluginSettingsIf::CPropertyMap>&
       
   270         properties = itemMap->Properties();
       
   271 
       
   272     for ( TInt i = 0; i < properties.Count(); i++ )
       
   273     {
       
   274         if ( properties[i]->Name() == KProperNameType )
       
   275             properties[i]->SetValueL( KProperValueBookmark );
       
   276         if ( properties[i]->Name() == KProperNameUid )
       
   277             properties[i]->SetValueL( KMenuAttrUndefUid );
       
   278     }
       
   279 
       
   280     User::LeaveIfError( iPluginSettings->SetSettingsL( KNameSpace, settings,
       
   281         ETrue) );
       
   282     iMCSPlugin->iEngine->iPluginData->UpdateDataL();
       
   283 
       
   284     CMCSData& itemData =  iMCSPlugin->iEngine->iPluginData->DataItemL( 0 );
       
   285     EUNIT_ASSERT_EQUALS(itemData.MenuItem().Type(), KMenuTypeUrl );
       
   286 
       
   287     CleanupStack::PopAndDestroy();
       
   288 }
       
   289 
       
   290 // ---------------------------------------------------------------------------
       
   291 // Test CMCSPluginData::GetFolderData
       
   292 // ---------------------------------------------------------------------------
       
   293 //
       
   294 void UT_MCSPluginPublisher::TestMCSPluginData_GetFolderDataL()
       
   295 {
       
   296     RPointerArray<CItemMap> settings;
       
   297     CleanupResetAndDestroyPushL( settings );
       
   298 
       
   299     User::LeaveIfError( iPluginSettings->GetSettingsL( KNameSpace , settings ));
       
   300 
       
   301     CItemMap* itemMap = settings[0];
       
   302     RPointerArray<HSPluginSettingsIf::CPropertyMap>&
       
   303         properties = itemMap->Properties();
       
   304 
       
   305     for ( TInt i = 0; i < properties.Count(); i++ )
       
   306     {    
       
   307         if ( properties[i]->Name() == KProperNameType )
       
   308             properties[i]->SetValueL( KProperValueFolder );
       
   309     }
       
   310 
       
   311     User::LeaveIfError( iPluginSettings->SetSettingsL( KNameSpace, settings,
       
   312         ETrue ));
       
   313     iMCSPlugin->iEngine->iPluginData->UpdateDataL();
       
   314 
       
   315     CMCSData& itemData =  iMCSPlugin->iEngine->iPluginData->DataItemL( 0 );
       
   316     EUNIT_ASSERT_EQUALS(itemData.MenuItem().Type(), KMenuTypeFolder );
       
   317 
       
   318     CleanupStack::PopAndDestroy();
       
   319 }
       
   320 
       
   321 // ---------------------------------------------------------------------------
       
   322 // Test CMCSPluginData::GetMailboxDataL
       
   323 // ---------------------------------------------------------------------------
       
   324 //
       
   325 void UT_MCSPluginPublisher::TestMCSPluginData_GetMailboxDataL()
       
   326 {
       
   327     RPointerArray<CItemMap> settings;
       
   328     CleanupResetAndDestroyPushL( settings );
       
   329 
       
   330     User::LeaveIfError( iPluginSettings->GetSettingsL( KNameSpace , settings ));
       
   331 
       
   332     CItemMap* itemMap = settings[ 0 ];
       
   333     RPointerArray<HSPluginSettingsIf::CPropertyMap>&
       
   334         properties = itemMap->Properties();
       
   335 
       
   336     for ( TInt i = 0; i < properties.Count(); i++ )
       
   337     {
       
   338         if ( properties[i]->Name() == KProperNameType )
       
   339             properties[i]->SetValueL( KProperValueMailbox );
       
   340     }
       
   341 
       
   342     User::LeaveIfError( iPluginSettings->SetSettingsL( KNameSpace, settings,
       
   343         ETrue));
       
   344     iMCSPlugin->iEngine->iPluginData->UpdateDataL();
       
   345 
       
   346     CMCSData& itemData =  iMCSPlugin->iEngine->iPluginData->DataItemL(0);
       
   347     EUNIT_ASSERT_EQUALS( itemData.MenuItem().Type(), KMenuTypeMailbox );
       
   348 
       
   349     CleanupStack::PopAndDestroy();
       
   350 }
       
   351 
       
   352 // ---------------------------------------------------------------------------
       
   353 // CMCSPluginEngine::CreateBkmItemL
       
   354 // ---------------------------------------------------------------------------
       
   355 //
       
   356 void UT_MCSPluginPublisher::TestMCSPluginEngine_CreateBkmItemL()
       
   357 {
       
   358     CMCSData* data = new ( ELeave ) CMCSData();
       
   359     CleanupStack::PushL( data );
       
   360 
       
   361     data->MenuItem().SetType( KMenuTypeUrl );
       
   362     data->MenuItem().SetId( 0 );
       
   363     data->SetNameL( KTestName );
       
   364 
       
   365     CMenuItem *menuItem = iMCSPlugin->iEngine->FetchMenuItemL( *data );
       
   366     CleanupStack::PushL( menuItem );
       
   367 
       
   368     TBool attrExists = ETrue;
       
   369 
       
   370     EUNIT_ASSERT_EQUALS( menuItem->GetAttributeL( KMenuAttrLongName,
       
   371         attrExists ), KTestName );
       
   372     EUNIT_ASSERT_EQUALS( menuItem->GetAttributeL( KMenuAttrIconFile,
       
   373         attrExists ), KMenuIconFile );
       
   374     EUNIT_ASSERT_EQUALS( menuItem->GetAttributeL( KMenuAttrIconId,
       
   375         attrExists ), KMenuBookmarkIconId );
       
   376     EUNIT_ASSERT_EQUALS( menuItem->GetAttributeL( KMenuAttrMaskId,
       
   377         attrExists ), KMenuBookmarkMaskId );
       
   378 
       
   379     CleanupStack::PopAndDestroy( menuItem );
       
   380     CleanupStack::PopAndDestroy( data );
       
   381 }
       
   382 
       
   383 // ---------------------------------------------------------------------------
       
   384 // CMCSPluginEngine::CreateMailboxItemL
       
   385 // ---------------------------------------------------------------------------
       
   386 //
       
   387 void UT_MCSPluginPublisher::TestMCSPluginEngine_CreateMailboxItemL()
       
   388 {
       
   389     CMCSData* data = new ( ELeave ) CMCSData();
       
   390     CleanupStack::PushL( data );
       
   391 
       
   392     data->MenuItem().SetType( KMenuTypeMailbox );
       
   393     data->MenuItem().SetId( 0 );
       
   394     data->SetNameL( KTestName );
       
   395 
       
   396     CMenuItem *menuItem = iMCSPlugin->iEngine->FetchMenuItemL( *data );
       
   397     CleanupStack::PushL( menuItem );
       
   398 
       
   399     TBool attrExists = ETrue;
       
   400 
       
   401     EUNIT_ASSERT_EQUALS( menuItem->GetAttributeL( KMenuAttrLongName,
       
   402         attrExists ), KTestName );
       
   403     EUNIT_ASSERT_EQUALS( menuItem->GetAttributeL( KMenuAttrIconFile,
       
   404         attrExists ), KMenuIconFile );
       
   405     EUNIT_ASSERT_EQUALS( menuItem->GetAttributeL( KMenuAttrIconId,
       
   406         attrExists ), KMenuMailboxIconId );
       
   407     EUNIT_ASSERT_EQUALS( menuItem->GetAttributeL( KMenuAttrMaskId,
       
   408         attrExists ), KMenuMailboxMaskId );
       
   409 
       
   410     CleanupStack::PopAndDestroy( menuItem );
       
   411     CleanupStack::PopAndDestroy( data );
       
   412 }
       
   413 
       
   414 // ---------------------------------------------------------------------------
       
   415 // CMCSPluginEngine::ItemIconL
       
   416 // ---------------------------------------------------------------------------
       
   417 //
       
   418 void UT_MCSPluginPublisher::TestMCSPluginEngine_ItemIconL()
       
   419 {
       
   420     CMCSData* data = new ( ELeave ) CMCSData();
       
   421     CleanupStack::PushL( data );
       
   422 
       
   423     data->MenuItem().SetType( KMenuTypeUrl );
       
   424     data->MenuItem().SetId( 0 );
       
   425     data->SetNameL( KTestName );
       
   426 
       
   427     CMenuItem *menuItem = iMCSPlugin->iEngine->FetchMenuItemL( *data );
       
   428     CleanupStack::PushL( menuItem );
       
   429 
       
   430     menuItem->SetAttributeL( KTestIconAttr, KTestIconValue );
       
   431 
       
   432     CGulIcon* icon = iMCSPlugin->iEngine->ItemIconL( menuItem, KTestIconAttr );
       
   433     CleanupStack::PushL( icon );
       
   434 
       
   435     EUNIT_ASSERT( icon );
       
   436 
       
   437     CleanupStack::PopAndDestroy( icon );
       
   438     CleanupStack::PopAndDestroy( menuItem );
       
   439     CleanupStack::PopAndDestroy( data );
       
   440 }
       
   441 
       
   442 
       
   443 //  TEST TABLE
       
   444 EUNIT_BEGIN_TEST_TABLE
       
   445     (
       
   446     UT_MCSPluginPublisher,
       
   447     "MCS plugin publisher tests",
       
   448     "UNIT"
       
   449     )
       
   450 
       
   451 EUNIT_TEST
       
   452     (
       
   453     "Test MCS data",
       
   454     "CMCSData",
       
   455     "VariablesSettings",
       
   456     "FUNCTIONALITY",
       
   457     SetupL, TestMCSDataL, Teardown )
       
   458 
       
   459 EUNIT_TEST
       
   460     (
       
   461     "Test remove data",
       
   462     "CMCSPluginData",
       
   463     "RemoveDataL",
       
   464     "FUNCTIONALITY",
       
   465     SetupL, TestMCSPluginData_RemoveDataL, Teardown )
       
   466    
       
   467 EUNIT_TEST
       
   468     (
       
   469     "Test create bookmark data item",
       
   470     "CMCSPluginData",
       
   471     "GetBkmDataL",
       
   472     "FUNCTIONALITY",
       
   473     SetupL, TestMCSPluginData_GetBkmDataL, Teardown )
       
   474     
       
   475 EUNIT_TEST
       
   476     (
       
   477     "Test create folder data item",
       
   478     "CMCSPluginData",
       
   479     "GetFolderData",
       
   480     "FUNCTIONALITY",
       
   481     SetupL, TestMCSPluginData_GetFolderDataL, Teardown )
       
   482 
       
   483 EUNIT_TEST
       
   484     (
       
   485     "Test create mailbox data item",
       
   486     "CMCSPluginData",
       
   487     "GetMailboxDataL",
       
   488     "FUNCTIONALITY",
       
   489     SetupL, TestMCSPluginData_GetMailboxDataL, Teardown )
       
   490 
       
   491 EUNIT_TEST
       
   492     (
       
   493     "Test create bookmark item ",
       
   494     "CMCSPluginEngine",
       
   495     "CreateBkmItemL",
       
   496     "FUNCTIONALITY",
       
   497     SetupL, TestMCSPluginEngine_CreateBkmItemL, Teardown )
       
   498 
       
   499 EUNIT_TEST
       
   500     (
       
   501     "Test create mailbox item ",
       
   502     "CMCSPluginEngine",
       
   503     "CreateMailboxItemL",
       
   504     "FUNCTIONALITY",
       
   505     SetupL, TestMCSPluginEngine_CreateMailboxItemL, Teardown )
       
   506 
       
   507 EUNIT_TEST
       
   508     (
       
   509     "Test icon for given menu item ",
       
   510     "CMCSPluginEngine",
       
   511     "ItemIconL",
       
   512     "FUNCTIONALITY",
       
   513     SetupL, TestMCSPluginEngine_ItemIconL, Teardown )
       
   514 
       
   515 
       
   516 EUNIT_END_TEST_TABLE
       
   517 
       
   518 //  END OF FILE