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

/*
* Copyright (c) 2010 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: unit test for the mcsplugin handler
*
*/


//  CLASS HEADER
#include "ut_sapidataplugin.h"


//  EXTERNAL INCLUDES
#include <digia/eunit/eunitmacros.h>
#include <e32cmn.h>
#include <aiutility.h>
#include <aipluginsettings.h>

//  INTERNAL INCLUDES
#include "sapidata.h"
#include "sapidataobserver.h"
#include "sapidataplugin.h"
#include "sapidatapluginconst.h"
#include "observer.h"


_LIT( KTest, "TEST" );
_LIT( KUpdate, "update" );
// CONSTRUCTION

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

    return self;
    }

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

    self->ConstructL();

    return self;
    }

// ---------------------------------------------------------------------------
// Destructor (virtual by CBase)
// ---------------------------------------------------------------------------
//
UT_SapiDataPlugin::~UT_SapiDataPlugin()
    {

    }

// ---------------------------------------------------------------------------
// Default constructor
// ---------------------------------------------------------------------------
//
UT_SapiDataPlugin::UT_SapiDataPlugin()
    {

    }

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

// ---------------------------------------------------------------------------
// void UT_SapiDataPlugin::Teardown()
// ---------------------------------------------------------------------------
//
void UT_SapiDataPlugin::Teardown()
    {
    if ( iPlugin )
        {
        delete iPlugin;
        iPlugin = NULL;
        }
    if ( iObserver )
        {
        delete iObserver;
        iObserver = NULL;
        }
    }

// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
void UT_SapiDataPlugin::UT_SapiDataPlugin_Data()
    {
    iData = iPlugin->Data();
    EUNIT_ASSERT( iData );  
    }

// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
void UT_SapiDataPlugin::SetupL()
    {
    iPlugin = CSapiDataPlugin::NewL();

    RAiSettingsItemArray settings;
    MAiPluginSettings* setting = AiUtility::CreatePluginSettingsL();

    CleanupDeletePushL( setting );
    MAiPluginContentItem& item = setting->AiPluginContentItem();
    item.SetTypeL( _L( "image" ) );
    item.SetNameL( _L( "widget/icon" ) );
    settings.AppendL( setting );
    CleanupStack::Pop( setting );

    MAiPluginSettings* setting1 = AiUtility::CreatePluginSettingsL();
    CleanupDeletePushL( setting1 );
    MAiPluginContentItem& item1 = setting1->AiPluginContentItem();
    item1.SetTypeL( _L( "image" ) );
    item1.SetNameL( _L( "widget/icon" ) );
    settings.AppendL( setting1 );
    CleanupStack::Pop( setting1 );

    MAiPluginSettings* setting2 = AiUtility::CreatePluginSettingsL();
    CleanupDeletePushL( setting2 );
    MAiPluginContentItem& item2 = setting2->AiPluginContentItem();
    item2.SetTypeL( _L( "text" ) );
    item2.SetNameL( _L( "widget/longname" ) );
    settings.AppendL( setting2 );
    CleanupStack::Pop( setting2 );

    MAiPluginSettings* setting3 = AiUtility::CreatePluginSettingsL();
    CleanupDeletePushL( setting3 );
    MAiPluginConfigurationItem& item3 = setting3->AiPluginConfigurationItem();
    item3.SetOwnerL( _L( "plugin" ) );
    item3.SetNameL( _L( "publisher" ));
    item3.SetValueL( _L( "TEST" ) );
    settings.AppendL( setting3 );
    CleanupStack::Pop( setting3 );

    TRAPD( err, iPlugin->ConfigureL( settings ) );
    EUNIT_ASSERT_EQUALS(err, KErrNone);

    iPlugin->Start( CHsContentPublisher::ESystemStartup );
    iPlugin->Resume( CHsContentPublisher::EForeground );
    }

// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
void UT_SapiDataPlugin::UT_SapiDataPlugin_GetTypeL()
    {
    MAiPluginSettings* setting4 = AiUtility::CreatePluginSettingsL();
    CleanupDeletePushL( setting4 );
    MAiPluginContentItem& item4 = setting4->AiPluginContentItem();
    item4.SetTypeL( _L( "text" ) );
    item4.SetNameL( _L( "widget/longname" ) );

    HBufC* objectId = item4.Name().AllocLC();
    objectId->Des().Delete(0, objectId->LocateReverse(KPluginNameSeprator) + 1);

    HBufC* type = iPlugin->GetTypeL( *objectId ).AllocLC();
    EUNIT_ASSERT_EQUALS( type != KNullDesC(), ETrue )

    CleanupStack::PopAndDestroy( type );
    CleanupStack::PopAndDestroy( objectId );
    CleanupStack::PopAndDestroy( setting4 );
    }

// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
void UT_SapiDataPlugin::UT_SapiDataPlugin_GetIdL()
    {
    MAiPluginSettings* setting4 = AiUtility::CreatePluginSettingsL();
    CleanupDeletePushL( setting4 );
    MAiPluginContentItem& item4 = setting4->AiPluginContentItem();
    item4.SetTypeL( _L( "text" ) );
    item4.SetNameL( _L( "widget/longname" ) );

    HBufC* objectId = item4.Name().AllocLC();
    objectId->Des().Delete(0, objectId->LocateReverse(KPluginNameSeprator) + 1);

    TInt id = iPlugin->GetIdL( *objectId );
    EUNIT_ASSERT_EQUALS( id != KErrNotFound, ETrue );

    CleanupStack::PopAndDestroy( objectId );
    CleanupStack::PopAndDestroy( setting4 );
    }

// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
void UT_SapiDataPlugin::UT_SapiDataPlugin_Resume()
    {
    EUNIT_ASSERT( iPlugin->IsActive() );    
    }

// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
void UT_SapiDataPlugin::UT_SapiDataPlugin_NetworkStatus()
    {
    iPlugin->SetOnline();    
    CSapiDataPlugin::TPluginNetworkStatus networkStatus = 
        iPlugin->NetworkStatus();
    EUNIT_ASSERT_EQUALS( networkStatus == CSapiDataPlugin::EOnline, ETrue );

    iPlugin->SetOffline();
    networkStatus = iPlugin->NetworkStatus();
    EUNIT_ASSERT_EQUALS( networkStatus == CSapiDataPlugin::EOffline, ETrue );
    }

// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
void UT_SapiDataPlugin::UT_SapiDataPlugin_GetProperty()
    {
    TAny* anyPtr = iPlugin->GetProperty( CSapiDataPlugin::EPublisherContent );
    MAiContentItemIterator* iter = 
        static_cast<MAiContentItemIterator*>( anyPtr);
    EUNIT_ASSERT( iter );
    }

// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
void UT_SapiDataPlugin::UT_SapiDataPlugin_HasMenuItem()
    {
    TBool res = iPlugin->HasMenuItem( KTest );
    EUNIT_ASSERT( res == EFalse );
    }

// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
void UT_SapiDataPlugin::UT_SapiDataPlugin_Clean()
    {
    iObserver = Observer::NewL();
    TInt id = 1;

    iPlugin->SubscribeL( *iObserver );
    EUNIT_ASSERT_NO_LEAVE( iPlugin->Clean( iObserver, id ) );
    }

//  TEST TABLE


EUNIT_BEGIN_TEST_TABLE
    (
    UT_SapiDataPlugin,
    "Sapidata plugin tests",
    "UNIT"
    )

EUNIT_TEST
    (
    "Data",
    "CSapiDataPlugin",
    "Data",
    "FUNCTIONALITY",
    SetupL, UT_SapiDataPlugin_Data, Teardown
    )

EUNIT_TEST
    (
    "Resume",
    "CSapiDataPlugin",
    "Resume",
    "FUNCTIONALITY",
    SetupL, UT_SapiDataPlugin_Resume, Teardown
    )

EUNIT_TEST
    (
    "GetTypeL",
    "CSapiDataPlugin",
    "GetTypeL",
    "FUNCTIONALITY",
    SetupL, UT_SapiDataPlugin_GetTypeL, Teardown
    )

EUNIT_TEST
    (
    "GetIdL",
    "CSapiDataPlugin",
    "GetIdL",
    "FUNCTIONALITY",
    SetupL, UT_SapiDataPlugin_GetIdL, Teardown
    )

EUNIT_TEST
    (
    "NetworkStatus",
    "CSapiDataPlugin",
    "NetworkStatus",
    "FUNCTIONALITY",
    SetupL, UT_SapiDataPlugin_NetworkStatus, Teardown
    )

EUNIT_TEST
    (
    "GetProperty",
    "CSapiDataPlugin",
    "GetProperty",
    "FUNCTIONALITY",
    SetupL, UT_SapiDataPlugin_GetProperty, Teardown
    )

EUNIT_TEST
    (
    "HasMenuItem",
    "CSapiDataPlugin",
    "HasMenuItem",
    "FUNCTIONALITY",
    SetupL, UT_SapiDataPlugin_HasMenuItem, Teardown
    )
    
EUNIT_TEST
    (
    "Clean",
    "CSapiDataPlugin",
    "Clean",
    "FUNCTIONALITY",
    SetupL, UT_SapiDataPlugin_Clean, Teardown
    )   
    
EUNIT_END_TEST_TABLE

//  END OF FILE