idlefw/tsrc/mcsplugin/ut_mcssettings/ut_mcssettings.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 19 Aug 2010 10:13:44 +0300
branchRCL_3
changeset 28 053c6c7c14f3
permissions -rw-r--r--
Revision: 201026 Kit: 201033

/*
* Copyright (c) 2009 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: 
*
*/


//  CLASS HEADER
#include "UT_mcssettings.h"

//  EXTERNAL INCLUDES

#define protected public
#define private public
#include "mcspluginsettingsapplist.h"
#include "mcspluginsettingsbkmlist.h"
#include <gsbaseview.h>
#undef private
#undef protected

#include <msvuids.h>        // For KMsvRootIndexEntryIdValue
#include <senduimtmuids.h>

#include <digia/eunit/eunitmacros.h>
#include <GSPrivatePluginProviderIds.h>
#include <aknappui.h>
#include <aknviewappui.h>
#include <eikenv.h>
#include <CentralRepository.h>
#include <apgcli.h>         //RApaLsSession
#include <w32std.h>                 // For RWsSession

//  INTERNAL INCLUDES
#include "mcspluginsettings.h"
#include "mcspluginsettingsapplist.h"
#include "mcspluginsettingscontainer.h"
#include "mcspluginsettingsmodel.h"
#include "mcspluginsettingsbkmlist.h"

#include "caouserafter.h"
#include "mcspluginuids.hrh"
#include "mcspluginsettings.hrh"

#include <favouritesitemlist.h>
#include <mcsmenuitem.h>
#include <mcsmenufilter.h>
#include <hspluginsettings.h>
#include <apgtask.h>
#include <hlplch.h>


const TUid KCRUidAvkon = { 0x101F876E };
const TUint32 KAknMiddleSoftkeyEnabled = 0x0000000A;

const TInt KWait_05_secs =  0.5 * 1000000;
const TInt KWait_1_secs  =    1 * 1000000;
const TInt KWait_2_secs  =    2 * 1000000;
const TInt KWait_3_secs  =    3 * 1000000;

_LIT8( KEmpty, "" );
_LIT( KMyMenuData, "matrixmenudata" );
_LIT( KMenuUrl, "menu:url" );
_LIT8( KPluginId, "3" );
_LIT(KUid, "0x99999985");
_LIT(KName, "TEST");
_LIT( KUrl, "http://test" );
_LIT8( KUidMCSB8, "0xeeeeffff" );
_LIT( KUidMCSB16, "0xeeeeffff" );


// ----------------------------------------------------------------------------
// CleanupResetAndDestroy()
// ----------------------------------------------------------------------------
//
template<class T>
static void CleanupResetAndDestroy( TAny* aObj )
    {
    if( aObj )
        {
        static_cast<T*>( aObj )->ResetAndDestroy();
        }
    }

// ----------------------------------------------------------------------------
// CleanupResetAndDestroyPushL
// ----------------------------------------------------------------------------
//
template<class T>
static void CleanupResetAndDestroyPushL(T& aArray)
    {
    CleanupStack::PushL( TCleanupItem( &CleanupResetAndDestroy<T>, &aArray ) );
    }


// CONSTRUCTION

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
UT_mcssettings* UT_mcssettings::NewL()
{
    UT_mcssettings* self = UT_mcssettings::NewLC();
    CleanupStack::Pop();

    return self;
}

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
UT_mcssettings* UT_mcssettings::NewLC()
{
    UT_mcssettings* self = new(ELeave) UT_mcssettings();
    CleanupStack::PushL(self);

    self->ConstructL();

    return self;
}

// ---------------------------------------------------------------------------
// Destructor (virtual by CBase)
// ---------------------------------------------------------------------------
//
UT_mcssettings::~UT_mcssettings()
{
}

// ---------------------------------------------------------------------------
// Default constructor
// ---------------------------------------------------------------------------
//
UT_mcssettings::UT_mcssettings()
{
}

// ---------------------------------------------------------------------------
// Second phase construct
// ---------------------------------------------------------------------------
//
void UT_mcssettings::ConstructL()
{
    // The ConstructL from the base class CEUnitTestSuiteClass must be called.
    // It generates the test case table.
    CEUnitTestSuiteClass::ConstructL();
}

//  METHODS

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::SetupL()
    {
    //__UHEAP_MARK;
    iGs = CGSPluginInterface::NewL(TUid::Uid(AI_UID_ECOM_IMPLEMENTATION_SETTINGS_MCSPLUGIN), NULL);
    iSettingsView = static_cast<CGSBaseView*>(iGs);

    iAppUi = reinterpret_cast< CAknViewAppUi* >(CEikonEnv::Static()->EikAppUi());

    iModel = CMCSPluginSettingsModel::NewL(*(CMCSPluginSettings::NewL(NULL)),CEikonEnv::Static());
    }

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::Teardown()
    {
    delete iSettingsView;
    iSettingsView = NULL;

    if ( iGs )
        {
        iGs = NULL;
        }

    if ( iAppList )
        {
        delete iAppList;
        iAppList = NULL;
        if ( iBkmList )
            {
            delete iBkmList;
            iBkmList = NULL;
            }
        
        iContainer = NULL;
        }
    else
        {
        if ( iBkmList )
            {
            delete iBkmList;
            iBkmList = NULL;
            iContainer = NULL;
            }
        else
            {
            if( iContainer )
                {
                delete iContainer;
                iContainer = NULL;
                }
            }
        }   

    if ( iModel )
        {
        delete iModel;
        iModel = NULL;
        }

    iItemArray.Reset();
   //__UHEAP_MARKEND;
    }

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::emptySetup()
{
}

//----------------------------------------------------------------------------
// Tests for CMCSPluginSettings
//----------------------------------------------------------------------------

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_Settings_FailL()
{
    TVwsViewId dummyId;

    iSettingsView->DoActivateL(dummyId, KNullUid, KNullDesC8);
    CAOUserAfter::AfterLD(KWait_05_secs);

    iSettingsView->DoDeactivate();
    CAOUserAfter::AfterLD(KWait_05_secs);

    EUNIT_ASSERT(EFalse);
}

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_Settings_NewLL()
{
    EUNIT_ASSERT(iSettingsView);
    iSettingsView->DoDeactivate();
    CAOUserAfter::AfterLD(KWait_05_secs);
}

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_Settings_IdL()
{
    EUNIT_ASSERT_EQUALS(TUid::Uid(AI_UID_ECOM_IMPLEMENTATION_SETTINGS_MCSPLUGIN), iSettingsView->Id());
    
    iSettingsView->DoDeactivate();
    CAOUserAfter::AfterLD(KWait_05_secs);
}

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_Settings_HandleCommandLL()
{
    TRAPD(err, iSettingsView->HandleCommandL(EAknSoftkeyExit));
    EUNIT_ASSERT_EQUALS(err, KErrNone);    
}

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_Settings_DoDeactivateL()
{
    TVwsViewId dummyId;

    iSettingsView->DoActivateL(dummyId, KNullUid, KNullDesC8);
    CAOUserAfter::AfterLD(KWait_1_secs);

    iSettingsView->DoDeactivate();
    CAOUserAfter::AfterLD(KWait_1_secs);
    
}

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_Settings_GetCaptionLL()
{
    TBuf<50> caption = _L("Shortcuts");
    TBuf<50> desc;

    iGs->GetCaptionL(desc);

    EUNIT_ASSERT_EQUALS(caption, desc);
    
    iSettingsView->DoDeactivate();
    CAOUserAfter::AfterLD(KWait_05_secs);
}

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_Settings_PluginProviderCategoryL()
{
    EUNIT_ASSERT_EQUALS(KGSPluginProviderInternal, iGs->PluginProviderCategory());
    
    iSettingsView->DoDeactivate();
    CAOUserAfter::AfterLD(KWait_05_secs);
}

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_Settings_VisibleL()
{
    EUNIT_ASSERT_EQUALS(EFalse,iGs->Visible());
    
    iSettingsView->DoDeactivate();
    CAOUserAfter::AfterLD(KWait_05_secs);
}

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::SetupAppListL()
{
    SetupL();

    TVwsViewId dummyId;
    iSettingsView->DoActivateL(dummyId, KNullUid, KNullDesC8);
    CAOUserAfter::AfterLD(KWait_05_secs);

    iContainer =
        static_cast<CMCSPluginSettingsContainer*>( iSettingsView->Container() );
    EUNIT_ASSERT(iContainer);

    iAppList = CMCSPluginSettingsAppList::NewL();

    iAppList->StartL();

    //while (!iAppList->IsReady())
    {
        CAOUserAfter::AfterLD(KWait_05_secs);
    }
}

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::TeardownAppList()
{
    iSettingsView->DoDeactivate();
    CAOUserAfter::AfterLD(KWait_05_secs);
    Teardown();
}

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsAppList_NewLL()
{
    EUNIT_ASSERT(iAppList);
}

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsAppList_MdcaCountL()
{
    TVwsViewId dummyId;
    TInt count;

    iSettingsView->DoActivateL(dummyId, KNullUid, KNullDesC8);
    CAOUserAfter::AfterLD(KWait_05_secs);

    iContainer =
        static_cast<CMCSPluginSettingsContainer*>( iSettingsView->Container() );
    EUNIT_ASSERT(iContainer);

    iAppList = CMCSPluginSettingsAppList::NewL();
    count = iAppList->MdcaCount();
    iAppList->StartL();

    //while (!iAppList->IsReady())
    {
        CAOUserAfter::AfterLD(KWait_05_secs);
    }

    EUNIT_ASSERT_NOT_EQUALS(count, iAppList->MdcaCount());

}

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsAppList_MdcaPointL()
{
    TPtrC ret(KNullDesC);
    EUNIT_ASSERT_EQUALS(ret,iAppList->MdcaPoint(-1));
    
    EUNIT_ASSERT_EQUALS(ret,iAppList->MdcaPoint(208));
    
    TBufC<30> buf = iAppList->MdcaPoint(0);
    
    EUNIT_ASSERT(buf.Length() > 0);
}

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsAppList_HandleSessionEventLL()
    {
    TAny* dummy = NULL;

    for (TInt i = 0; i < 10; i++)
        {
        TRAPD(err,
              iAppList->HandleSessionEventL(
                  MMsvSessionObserver::TMsvSessionEvent(i),
                  dummy,
                  dummy,
                  dummy) );
        EUNIT_ASSERT_EQUALS(err, KErrNone);
        }
    }


// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::SetupBkmListL()
{
    SetupL();

    TVwsViewId dummyId;
    iSettingsView->DoActivateL(dummyId, KNullUid, KNullDesC8);
    CAOUserAfter::AfterLD(KWait_05_secs);

    iContainer =
        static_cast<CMCSPluginSettingsContainer*>( iSettingsView->Container() );
    EUNIT_ASSERT(iContainer);
    
    iBkmList = CMCSPluginSettingsBkmList::NewL();
    CAOUserAfter::AfterLD(KWait_05_secs);
    
}

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::TeardownBkmList()
{
    if ( iRemoveWatcher )
        {
        delete iRemoveWatcher;
        iRemoveWatcher = NULL;
        }
    if ( iSaveWatcher )
        {
        delete iSaveWatcher;
        iSaveWatcher = NULL;
        }

    iMenu.Close();
    iSettingsView->DoDeactivate();
    CAOUserAfter::AfterLD(KWait_05_secs);
    Teardown();
}

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsBkmList_NewLL()
{
    EUNIT_ASSERT(iBkmList);
}

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsBkmList_MdcaCountL()
{
    TInt count1( -1 );
    iBkmList->GetBookmarkListL();
    count1 = iBkmList->MdcaCount();

    RFavouritesSession bookmarkSess;
    RFavouritesDb bookmarkDb;

    User::LeaveIfError( bookmarkSess.Connect() );
    User::LeaveIfError(bookmarkDb.Open( bookmarkSess, KBrowserBookmarks) );
    iMenu.OpenL( KMyMenuData );

    CMenuFilter* filter = CMenuFilter::NewL();
    CleanupStack::PushL( filter );
    filter->SetType( KMenuUrl );
    const TInt rootId = iMenu.RootFolderL();

    RArray<TMenuItem> itemArray;
    CleanupClosePushL( itemArray );
    iMenu.GetItemsL( itemArray, rootId, filter, ETrue );
    TInt countmenu( itemArray.Count() );

    CFavouritesItemList* favItems = new ( ELeave ) CFavouritesItemList();
    CleanupStack::PushL( favItems );
    TInt err = bookmarkDb.GetAll( *favItems, KFavouritesNullUid,
                                  CFavouritesItem::EItem );
    if( err != KErrNone )
       {
       EUNIT_ASSERT( 0 );
       }
    TInt countfav = favItems->Count();

    EUNIT_ASSERT_EQUALS( countfav + countmenu, count1 );

    CleanupStack::PopAndDestroy( favItems );  
    CleanupStack::PopAndDestroy( &itemArray );
    CleanupStack::PopAndDestroy( filter );  
         
    bookmarkDb.Close();
    bookmarkSess.Close();
}

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsBkmList_MdcaPointL()
{
    iBkmList->GetBookmarkListL();
    
    TPtrC ret(KNullDesC);
    EUNIT_ASSERT_EQUALS(ret,iBkmList->MdcaPoint(-1));
    
    EUNIT_ASSERT_EQUALS(ret,iBkmList->MdcaPoint(200));
    
    if ( iBkmList->MdcaCount() > 0 )
        {
        TBufC<30> buf = iBkmList->MdcaPoint(0);
        EUNIT_ASSERT(buf.Length() > 0);
        }
}


// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsContainer_IsChangeDialogShowingL()
{
    TRAPD(err, iContainer = new (ELeave) CMCSPluginSettingsContainer);
    EUNIT_ASSERT_EQUALS(err, KErrNone);

    iSettingsView->DoDeactivate();
    CAOUserAfter::AfterLD(KWait_05_secs);
}

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsContainer_CloseChangeDialogL()
{
    TRAPD(err, iContainer = new (ELeave) CMCSPluginSettingsContainer);
    EUNIT_ASSERT_EQUALS(err, KErrNone);

    iContainer->CloseChangeDialog();
    iSettingsView->DoDeactivate();
    CAOUserAfter::AfterLD(KWait_05_secs);
}


// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//

void UT_mcssettings::UT_SettingsModel_NewLL()
{
    EUNIT_ASSERT(iModel);
    iSettingsView->DoDeactivate();
    CAOUserAfter::AfterLD(KWait_05_secs);
}

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsModel_MdcaCountL()
{
    EUNIT_ASSERT_NOT_EQUALS(NULL, iModel->MdcaCount());
    iSettingsView->DoDeactivate();
    CAOUserAfter::AfterLD(KWait_05_secs);
}

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsModel_MdcaPointL()
    {
    TInt outtaBounds = 2;

    for ( TInt i = -1; i < iModel->MdcaCount() + outtaBounds; i++ )
    {
        if ( i < 0 || i >= iModel->MdcaCount() )
            {
            EUNIT_ASSERT_EQUALS( TPtrC( KNullDesC16 ),
                                 iModel->MdcaPoint( i ) );
            }
        else
            {
            TPtrC desc = iModel->MdcaPoint( i );
            EUNIT_ASSERT_NOT_EQUALS( desc.Length(), NULL );
            }
    }
    iSettingsView->DoDeactivate();
    CAOUserAfter::AfterLD( KWait_05_secs );
    }

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsAppList_ItemL()
    {
    CMenuItem* menuItem;
    TInt maxIndex = iAppList->MdcaCount();

    if ( maxIndex > 0 )
        {
        menuItem = iAppList->ItemL( maxIndex - 1 );
        EUNIT_ASSERT( menuItem );
        }

    maxIndex = -1;
    menuItem = iAppList->ItemL( maxIndex );

    EUNIT_ASSERT_EQUALS( menuItem == NULL, ETrue );
    }

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsAppList_FindItemL()
    {
    RPointerArray<HSPluginSettingsIf::CPropertyMap> properties;
    CleanupResetAndDestroyPushL( properties );
    HSPluginSettingsIf::CPropertyMap* typePropertyMap = 
        HSPluginSettingsIf::CPropertyMap::NewL();
    CleanupStack::PushL( typePropertyMap );
    typePropertyMap->SetNameL( _L8( "type" ) );
    typePropertyMap->SetValueL( _L8( "application" ) );
    properties.AppendL( typePropertyMap );
    CleanupStack::Pop( typePropertyMap );

    HSPluginSettingsIf::CPropertyMap* uidPropertyMap = 
        HSPluginSettingsIf::CPropertyMap::NewL();
    CleanupStack::PushL( uidPropertyMap );
    uidPropertyMap->SetNameL(  _L8( "uid" ) );
    uidPropertyMap->SetValueL( _L8( "0xeeeebbbb" ) );
    properties.AppendL( uidPropertyMap );
    CleanupStack::Pop( uidPropertyMap );

    TSettingItem setting = iAppList->FindItemL( properties );
    EUNIT_ASSERT_EQUALS( setting.id == KErrNotFound, ETrue );

    CleanupStack::PopAndDestroy();    //properties
    }

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsBkmList_ItemL()
    {
    TInt maxIndex = iBkmList->MdcaCount();
    CMenuItem* menu( NULL );
    if ( maxIndex > 0 )
        {
        menu = iBkmList->ItemL( maxIndex - 1 );
        EUNIT_ASSERT_EQUALS( menu != NULL, ETrue );
        }
    }

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsBkmList_FindItemL()
    {
    RPointerArray<HSPluginSettingsIf::CPropertyMap> properties;
    CleanupResetAndDestroyPushL( properties );

    HSPluginSettingsIf::CPropertyMap* myCPropertyMap = 
        HSPluginSettingsIf::CPropertyMap::NewL();
    CleanupStack::PushL( myCPropertyMap );
    myCPropertyMap->SetNameL( _L8( "uid" ) );
    myCPropertyMap->SetValueL( _L8( "0xeeeebbbb" ) );
    properties.AppendL( myCPropertyMap );
    CleanupStack::Pop( myCPropertyMap );

    TSettingItem setting = iBkmList->FindItemL( properties );
    EUNIT_ASSERT_EQUALS( setting.id == KErrNotFound, ETrue );
    CleanupStack::PopAndDestroy();    //properties
    }

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsContainer_ResetCurrrentListL()
    {
    TRAPD(err, iContainer->ResetCurrentListL( 0 ) );
    EUNIT_ASSERT_EQUALS( err, KErrNone );
    }

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsModel_AppList()
    {
    EUNIT_ASSERT( iModel->AppList() );
    }

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsModel_BkmList()
    {
    EUNIT_ASSERT( iModel->BkmList() );
    }

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsModel_ItemId()
    {
    TInt indexMax = iModel->MdcaCount(); 
    TInt indexID( 0 );
    
    if ( indexMax > 0 )
        {
        indexID = iModel->ItemId( indexMax - 1 );
        EUNIT_ASSERT_EQUALS( indexID != KErrNotFound, ETrue );
        }
    }

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsModel_Item()
    {
    TSettingItem setting;
    TInt indexMax = iModel->MdcaCount(); 
    if ( indexMax > 0 )
        {
        setting = iModel->Item( indexMax - 1 );    
        EUNIT_ASSERT_EQUALS( setting.id != KErrNotFound, ETrue );
        }
    }

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsModel_ReplaceItemL()
    {
    TInt indexMax = iModel->MdcaCount();
    TSettingItem setting;

    if ( indexMax > 0 )
        {
        setting = iModel->Item( indexMax - 1 );
        if ( setting.id != KErrNotFound )
            {
             TBool err = iModel->ReplaceItemL( indexMax - 1,
                                               setting.id,
                                               setting.type );
            EUNIT_ASSERT( err );
            }
        }
    }

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::SetupModelL()
    {
    SetupL();

    iModel->SetPluginIdL( KPluginId );
    iModel->UpdateAppListL();
    iModel->UpdateBkmListL();
    CAOUserAfter::AfterLD( KWait_05_secs );
    }

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::SetupContainerL()
    {
    SetupL();
    TVwsViewId dummyId;
    iSettingsView->DoActivateL(dummyId, KNullUid, KNullDesC8);
    CAOUserAfter::AfterLD( KWait_05_secs );

    iContainer =
        static_cast<CMCSPluginSettingsContainer*>( iSettingsView->Container() );
    EUNIT_ASSERT(iContainer);
    }

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsContainer_HandleNotifyL()
    {
    iMenu.OpenL( KMyMenuData );
    CMenuItem* newItem = CMenuItem::CreateL( iMenu, KMenuTypeApp, 1, 0 );
    CleanupStack::PushL( newItem );
    newItem->SetAttributeL( KMenuAttrUid, KUid );
    newItem->SetAttributeL( KMenuAttrLongName, KName );
  
    iSaveWatcher = CMCSPluginWatcher::NewL( CMCSPluginWatcher::EOperation );
    //add menu item
    CMenuOperation* operationSave = newItem->SaveL( iSaveWatcher->iStatus );
    iSaveWatcher->Watch( operationSave );            
    CAOUserAfter::AfterLD( KWait_05_secs );
    //remove menu item 
    iRemoveWatcher = CMCSPluginWatcher::NewL( CMCSPluginWatcher::EOperation );
    CMenuOperation* operationRemove = iMenu.RemoveL( newItem->Id(),
        iRemoveWatcher->iStatus );
    iRemoveWatcher->Watch( operationRemove );
    CAOUserAfter::AfterLD( KWait_05_secs );

    CleanupStack::PopAndDestroy( newItem );
    }

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::TeardownContainer()
    {
    if ( iRemoveWatcher )
        {
        delete iRemoveWatcher;
        iRemoveWatcher = NULL;
        }
    if ( iSaveWatcher )
        {
        delete iSaveWatcher;
        iSaveWatcher = NULL;
        }

    iSettingsView->DoDeactivate();
    CAOUserAfter::AfterLD( KWait_05_secs );
    iContainer = NULL;
    iMenu.Close();
    Teardown();
    }

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsBkmList_MCSMenuItemL()
    {
    iMenu.OpenL( KMyMenuData );
    CMenuItem* newItem = CMenuItem::CreateL( iMenu, KMenuTypeUrl, 1, 0 );
    CleanupStack::PushL( newItem );
    newItem->SetAttributeL( KMenuAttrUid, KUidMCSB16 );
    newItem->SetAttributeL( KMenuAttrLongName, KName );
    newItem->SetAttributeL( KMenuAttrUrl, KUrl );

    //add menu item - EMCSBookmark
    iSaveWatcher = CMCSPluginWatcher::NewL( CMCSPluginWatcher::EOperation );
    CMenuOperation* operationSave = newItem->SaveL( iSaveWatcher->iStatus );
    iSaveWatcher->Watch( operationSave );
    CAOUserAfter::AfterLD( KWait_05_secs );

    iBkmList->GetBookmarkListL();
    RPointerArray<HSPluginSettingsIf::CPropertyMap> properties;
    CleanupClosePushL( properties );
    HSPluginSettingsIf::CPropertyMap* myCPropertyMap = 
        HSPluginSettingsIf::CPropertyMap::NewL();

    CleanupStack::PushL( myCPropertyMap );
    myCPropertyMap->SetNameL( _L8( "uid" ) );
    myCPropertyMap->SetValueL( KUidMCSB8 ); 
    properties.AppendL( myCPropertyMap );
    CleanupStack::Pop( myCPropertyMap );

    TSettingItem setting = iBkmList->FindItemL( properties );
    CleanupStack::PopAndDestroy( &properties );
    CMenuItem* menuItem = iBkmList->ItemL( setting.id );

    EUNIT_ASSERT( menuItem );

    //remove menu item - EMCSBookmark 
    iRemoveWatcher = CMCSPluginWatcher::NewL( CMCSPluginWatcher::EOperation );
    CMenuOperation* operationRemove = iMenu.RemoveL( newItem->Id(),
        iRemoveWatcher->iStatus );
    iRemoveWatcher->Watch( operationRemove );
    CAOUserAfter::AfterLD( KWait_05_secs );

    CleanupStack::PopAndDestroy( newItem );
    }

// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
void UT_mcssettings::UT_SettingsModel_UndefinedText()
    {
    TPtrC undefinedT = iModel->AppList()->UndefinedText();
    EUNIT_ASSERT( &undefinedT != NULL );
    }

void UT_mcssettings::UT_SettingsContainer_HandleHelpCommandL()
    {
    iContainer->HandleHelpCommandL();
    CAOUserAfter::AfterLD( KWait_05_secs );

    TApaTaskList taskList( CCoeEnv::Static()->WsSession() );
    TApaTask task = taskList.FindApp( KHlpAppUid );

    EUNIT_ASSERT( task.Exists() );

    if ( task.Exists() )
        {
        task.EndTask();
        }
    }



//  TEST TABLE
EUNIT_BEGIN_TEST_TABLE
    (
    UT_mcssettings,
    "MCS plugin settings tests.",
    "UNIT"
    )

/*EUNIT_TEST
    (
    "Fail",
    "Settings",
    "Fail",
    "FUNCTIONALITY",
    SetupL, UT_Settings_FailL, Teardown
    )
*/

EUNIT_TEST
    (
    "NewL",
    "Settings",
    "NewL",
    "FUNCTIONALITY",
    SetupL, UT_Settings_NewLL, Teardown
    )

EUNIT_TEST
    (
    "Id",
    "Settings",
    "Id",
    "FUNCTIONALITY",
    SetupL, UT_Settings_IdL, Teardown
    )

EUNIT_TEST
    (
    "DoDeactivate",
    "Settings",
    "DoDeactivate",
    "FUNCTIONALITY",
    SetupL, UT_Settings_DoDeactivateL, Teardown
    )

EUNIT_TEST
    (
    "GetCaptionL",
    "Settings",
    "GetCaptionL",
    "FUNCTIONALITY",
    SetupL, UT_Settings_GetCaptionLL, Teardown
    )

EUNIT_TEST
    (
    "PluginProviderCategory",
    "Settings",
    "PluginProviderCategory",
    "FUNCTIONALITY",
    SetupL, UT_Settings_PluginProviderCategoryL, Teardown
    )

EUNIT_TEST
    (
    "Visible",
    "Settings",
    "Visible",
    "FUNCTIONALITY",
    SetupL, UT_Settings_VisibleL, Teardown
    )

EUNIT_TEST
    (
    "NewL",
    "SettingsAppList",
    "NewL",
    "FUNCTIONALITY",
    SetupAppListL, UT_SettingsAppList_NewLL, TeardownAppList
    )

EUNIT_TEST
    (
    "MdcaCount",
    "SettingsAppList",
    "MdcaCount",
    "FUNCTIONALITY",
    SetupL, UT_SettingsAppList_MdcaCountL, TeardownAppList
    )

EUNIT_TEST
    (
    "MdcaPoint",
    "SettingsAppList",
    "MdcaPointL",
    "FUNCTIONALITY",
    SetupAppListL, UT_SettingsAppList_MdcaPointL, TeardownAppList
    )

EUNIT_TEST
    (
    "HandleSessionEventL",
    "SettingsAppList",
    "HandleSessionEventL",
    "FUNCTIONALITY",
    SetupAppListL, UT_SettingsAppList_HandleSessionEventLL, TeardownAppList
    )

EUNIT_TEST
    (
    "BkmNewL",
    "SettingsBkmList",
    "NewL",
    "FUNCTIONALITY",
    SetupBkmListL, UT_SettingsBkmList_NewLL, TeardownBkmList
    )

EUNIT_TEST
    (
    "BkmMdcaCount",
    "SettingsBkmList",
    "MdcaCount",
    "FUNCTIONALITY",
    SetupBkmListL, UT_SettingsBkmList_MdcaCountL, TeardownBkmList
    )

EUNIT_TEST
    (
    "BkmMdcaPoint",
    "SettingsBkmList",
    "MdcaPointL",
    "FUNCTIONALITY",
    SetupBkmListL, UT_SettingsBkmList_MdcaPointL, TeardownBkmList
    )

EUNIT_TEST
    (
    "IsChangeDialogShowing",
    "SettingsContainer",
    "IsChangeDialogShowing",
    "FUNCTIONALITY",
    SetupL, UT_SettingsContainer_IsChangeDialogShowingL, Teardown
    )

EUNIT_TEST
    (
    "CloseChangeDialog",
    "SettingsContainer",
    "CloseChangeDialog",
    "FUNCTIONALITY",
    SetupL, UT_SettingsContainer_CloseChangeDialogL, Teardown
    )

EUNIT_TEST
    (
    "NewL",
    "SettingsModel",
    "NewL",
    "FUNCTIONALITY",
    SetupL, UT_SettingsModel_NewLL, Teardown
    )

EUNIT_TEST
    (
    "MdcaPoint",
    "SettingsModel",
    "MdcaPoint",
    "FUNCTIONALITY",
    SetupModelL, UT_SettingsModel_MdcaPointL, Teardown
    )

EUNIT_TEST
    (
    "App ItemL",
    "SettingsAppList",
    "ItemL",
    "FUNCTIONALITY",
    SetupAppListL, UT_SettingsAppList_ItemL, TeardownAppList
    )

EUNIT_TEST
    (
    "App FindItemL",
    "SettingsAppList",
    "FindItemL",
    "FUNCTIONALITY",
    SetupAppListL, UT_SettingsAppList_FindItemL, TeardownAppList
    )

EUNIT_TEST
    (
    "Bkm ItemL",
    "SettingsBkmList",
    "ItemL",
    "FUNCTIONALITY",
    SetupBkmListL, UT_SettingsBkmList_ItemL, TeardownBkmList
    )

EUNIT_TEST
    (
    "Bkm FindItemL",
    "SettingsBkmList",
    "FindItemL",
    "FUNCTIONALITY",
    SetupBkmListL, UT_SettingsBkmList_FindItemL, TeardownBkmList
    )

EUNIT_TEST
    (
    "ResetCurrrentListL",
    "SettingsContainer",
    "ResetCurrrentListL",
    "FUNCTIONALITY",
    SetupContainerL, UT_SettingsContainer_ResetCurrrentListL, TeardownContainer
    )

EUNIT_TEST
    (
    "HandleCommandL",
    "Settings",
    "HandleCommandL",
    "FUNCTIONALITY",
    SetupL, UT_Settings_HandleCommandLL, Teardown
    )

EUNIT_TEST
    (
    "AppList",
    "SettingsModel",
    "AppList",
    "FUNCTIONALITY",
    SetupModelL, UT_SettingsModel_AppList, Teardown
    )

EUNIT_TEST
    (
    "BkmList",
    "SettingsModel",
    "BkmList",
    "FUNCTIONALITY",
    SetupModelL, UT_SettingsModel_BkmList, Teardown
    )

EUNIT_TEST
    (
    "ItemId",
    "SettingsModel",
    "ItemId",
    "FUNCTIONALITY",
    SetupModelL, UT_SettingsModel_ItemId, Teardown
    )

EUNIT_TEST
    (
    "Item",
    "SettingsModel",
    "Item",
    "FUNCTIONALITY",
    SetupModelL, UT_SettingsModel_Item, Teardown
    )

EUNIT_TEST
    (
    "ReplaceItemL",
    "SettingsModel",
    "ReplaceItemL",
    "FUNCTIONALITY",
    SetupModelL, UT_SettingsModel_ReplaceItemL, Teardown
    )

EUNIT_TEST
    (
    "HandleNotifyL",
    "SettingsContainer",
    "HandleNotifyL",
    "FUNCTIONALITY",
    SetupContainerL, UT_SettingsContainer_HandleNotifyL, TeardownContainer
    )

EUNIT_TEST
    (
    "MCSMenuItemL",
    "SettingsBkmList",
    "MCSMenuItemL",
    "FUNCTIONALITY",
    SetupBkmListL, UT_SettingsBkmList_MCSMenuItemL, TeardownBkmList
    )
    
EUNIT_TEST
    (
    "UndefinedText",
    "SettingsModel",
    "UndefinedText",
    "FUNCTIONALITY",
    SetupModelL, UT_SettingsModel_UndefinedText, Teardown
    )
    
EUNIT_TEST
    (
    "HandleHelpCommandL",
    "SettingsModel",
    "HandleHelpCommandL",
    "FUNCTIONALITY",
    SetupContainerL, UT_SettingsContainer_HandleHelpCommandL, TeardownContainer
    )

EUNIT_END_TEST_TABLE

//  END OF FILE