controlpanel/tsrc/unit/ut_cpplugin/src/ut_cpplugin.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:29:50 +0300
branchRCL_3
changeset 53 8ee96d21d9bf
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
* 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:  
*
*/
#include "ut_cpplugin.h"
#include <hbmainwindow.h>
#include <QGraphicsWidget>
#include <qDebug>
#include <QtTest/QtTest>
#include <cpsettingformitemdata.h>

#include <cppluginplatinterface.h>
#include <cppluginloader.h>
#include <cppluginlauncher.h>
#include <cpitemdatahelper.h>

//define plugin uids, need replaced by header file
const int PluginUIDs[] =
{
    //0X20025FE2,	 //viewplugin
    //0X20025FE4,  //tonesplugin		Y
    0X20025FDF,  //communicationplugin.pro  N
    0X20025FDC,  //applicationsettingsplugin.pro    N
    //0xEEF7E3EC,  //3rdpartyappsettingsplugin.pro    Y
    0X20025FE5,  //personalizationplugin.pro    N
    0X20025FE8,  //placeholderplugin    Y
	0X20025FDD,  //placeholder no icon
	0X20025FDE,  //key touch
	0X20025FE0,  // look and feel
	0X20025FDB, // theme
	0X20025FE1, // privatcy


};
//define whether the plugin has exported view or not
const int PluginHasView[] =
{
    0, // communication
    0, // application
    0, //personalization
    1, //placeholder
    1, //placeholdernoicon
    0, //accountsplugin
    0, //privacy
	0, //device
	1, //theme
	1, //keytouch
    0  // look and feel
};

void TestCpPlugin::initTestCase()
{
    pLoader = new CpPluginLoader();
    mainWindow = new HbMainWindow;
    mainWindow->show();
	pluginDlls  << "cpcommunicationplugin"
                << "cpapplicationsettingsplugin"
                << "cppersonalizationplugin"
                << "cpplaceholderplugin"
				<< "cpplaceholdernoiconplugin"
				<< "cpaccountsplugin"
				<< "cpprivacyplugin"
				<< "cpdeviceplugin"
				<< "cpthemeplugin"
				<< "cpkeytouchfdbkplugin"
				<< "cplookfeelplugin";
}

void TestCpPlugin::test_loadPluginsName()
{
    


    int count = pluginDlls.size();
    for( int i=0; i<pluginDlls.size(); ++i )
    {
        CpPluginPlatInterface* plugin = pLoader->loadCpPlugin( pluginDlls[i] );
        qDebug()<< "<DEBUGINFO>Loading plugin ["
                << pluginDlls[i]<< "],result is:"
                << ( (plugin != 0)? "OK":"Fail" );
        QVERIFY( plugin!= 0 );
    }

}
void TestCpPlugin::test_loadPluginsName_N()
{
    CpPluginPlatInterface* plugin = pLoader->loadCpPlugin( "" );
    qDebug()<< "<DEBUGINFO>Loading plugin ["
            << "(empty name)"<< "],result is:"
            << ( (plugin == 0)? "OK":"Fail" );
    QVERIFY( plugin == 0 );
}

void TestCpPlugin::test_createSettingFormItemData()
{
    CpItemDataHelper *pHelper = new CpItemDataHelper();

    for( int i = 0; i< plist.count(); ++i)
    {
        CpPluginPlatInterface* plugin = plist[i];
        if(plugin)
        {
            CpSettingFormItemData *itemData = plugin->createSettingFormItemData(*pHelper);
            bool bToF = (itemData != 0);
            qDebug( "<DEBUGINFO>Plugin [0X%08X], result is %s", PluginUIDs[i], bToF?"OK":"Fail" );
           // delete itemData;
            QVERIFY( bToF );
        }
    }
    delete pHelper;
}

void TestCpPlugin::test_launcher_by_Name()
{
    //clear all existing view firstly
    int vcount = mainWindow->viewCount();
    int i = 0;
    for ( i=vcount-1; i>=0; --i )
    {
        QGraphicsWidget * pwgt = mainWindow->removeView( i );
        delete pwgt;
    }
    //launch plugins list by name
    int count = pluginDlls.size();
    for( i=0; i<pluginDlls.size(); ++i )
    {
        bool bret = CpPluginLauncher::launchCpPluginView( pluginDlls[i] );
        if(!PluginHasView[i])   bret = !bret;
        qDebug()<< "<DEBUGINFO>Loading plugin ["
                << pluginDlls[i]<< "],result is:"
                << ( bret? "OK":"Fail" );
        QVERIFY( bret );
    }
}
void TestCpPlugin::test_launcher_by_Name_N()
{
    bool bret = CpPluginLauncher::launchCpPluginView( "<not_existing>" );
    qDebug()<< "<DEBUGINFO>Loading plugin ["
            << "<not_existing>"<< "],result is:"
            << ( (!bret )? "OK":"Fail" );
        QVERIFY( !bret );
}

void TestCpPlugin::cleanupTestCase()
{
    for (int i = 0; i < plist.count(); ++i)
    {
        CpPluginPlatInterface* plugin = plist[i];
        if (plugin)
        {
            delete plugin;
            plugin = 0;
        }
    }
    if (pLoader)
    {
        delete pLoader;
        pLoader = 0;
    }
    delete mainWindow;
    mainWindow = 0;
}

QTEST_MAIN(TestCpPlugin)