diff -r fc7b30ed2058 -r 05bc53fe583b cmmanager/cpdestinationplugin/tsrc/ut/testcpdestinationplugin.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cmmanager/cpdestinationplugin/tsrc/ut/testcpdestinationplugin.cpp Tue Aug 31 15:35:44 2010 +0300 @@ -0,0 +1,663 @@ +/* +* 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: +* Control Panel WLAN AP plugin unit testing. +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//#include "cmapplsettingsui_p.h" +//#include "cmradiodialog.h" +//#include "cpdestinationplugin.h" + +#include "hbautotest.h" +#include "testcpdestinationplugin.h" + +// ----------------------------------------------------------------------------- +// STATIC TEST DATA +// ----------------------------------------------------------------------------- + +static const QString pluginDir = + "\\resource\\qt\\plugins\\controlpanel"; + +static const QString pluginName = "cpdestinationplugin.dll"; + +// Time to wait before continuing after an UI step +static const int waitTime = 10; + +static const QString navigationButton = "HbNavigationButton"; + +// UI coordinates +static const QPoint destinationGroup(175,30); +static const QPoint internetDestination(175,100); +static const QPoint internetFirstAp(175,130); +static const QPoint internetFirstApMove(175,160); +static const QPoint internetFirstApDelete(175,210); +static const QPoint internetFirstApShare(175,260); + +static const QPoint deleteDialogOk(100,300); + +static const QPoint tbButton(175,550); +static const QPoint arrangeFirstAp(175,30); +static const QPoint arrangeDragEnd(175,140); + +static const QPoint uncatDestination(175,455); +static const QPoint uncatAp(175,120); +static const QPoint uncatMenuMove(175,140); +static const QPoint uncatMenuDelete(175,180); + +static const QPoint destDialogOk(100,370); +static const QPoint destDialogSecond(100,255); +static const QPoint destDialogThird(100,315); +static const QPoint destDialogNewDest(100,345); + +static const QPoint addDestination(175,410); +static const QPoint addDialog(175,235); +static const QPoint addDialogOk(100,300); +static const QPoint newDestinationRename(175,445); +static const QPoint newDestinationDelete(175,490); + +static const QPoint addDialogKb(175,155); +static const QPoint addDialogOkKb(100,225); + +static const QPoint secondDestination(175,195); +static const QPoint thirdDestination(175,275); +static const QPoint fourthDestination(175,355); + + + +#if 0 +// Destination list item for Connection Method selection +static const QString dedicatedAccessPoint = "Dedicated access point"; + +static const QStringList allDestinations = QStringList() << + "Internet" << + "My Snap" << + dedicatedAccessPoint; + +static const QStringList allConnectionMethods = QStringList() + << "Home WLAN" + << "packet data 1" + << "packet data 2" + << "packet data 3" + << "Streaming" + << "WLAN IAP 1" + << "WLAN IAP 2" + << "WLAN IAP 3"; + +static const QStringList gprsConnectionMethods = QStringList() + << "packet data 1" + << "packet data 2" + << "packet data 3" + << "Streaming"; + +static const QStringList wlanConnectionMethods = QStringList() + << "Home WLAN" + << "WLAN IAP 1" + << "WLAN IAP 2" + << "WLAN IAP 3"; +#endif + +// ----------------------------------------------------------------------------- +// FRAMEWORK FUNCTIONS +// ----------------------------------------------------------------------------- + +/** + * Test main function. Runs all test cases. + */ +#ifndef TESTCMAPPLSETTINGSUI_NO_OUTPUT_REDIRECT +int main(int argc, char *argv[]) +{ + HbApplication app(argc, argv); + app.setApplicationName("TestCpDestinationPlugin"); + + char *pass[3]; + pass[0] = argv[0]; + pass[1] = "-o"; + pass[2] = "c:\\data\\TestCpDestinationPlugin.txt"; + + TestCpDestinationPlugin tc; + int res = QTest::qExec(&tc, 3, pass); + + return res; +} +#else +QTEST_MAIN(TestCpDestinationPlugin) +#endif + +/** + * This function is be called before the first test case is executed. + */ +void TestCpDestinationPlugin::initTestCase() +{ + mMainWindow = new HbAutoTestMainWindow; + mMainWindow->show(); + + // Load plugin + QDir dir(pluginDir); + QPluginLoader loader(dir.absoluteFilePath(pluginName)); + mPlugin = QSharedPointer + (qobject_cast(loader.instance())); + //QVERIFY(mPlugin != NULL); + + + // Create destinations view + subCreateSettingsView(); + + HbAutoTest::mouseClick(mMainWindow, mView, destinationGroup, waitTime); + QTest::qWait(200); +} + +/** + * This function is be called after the last test case was executed. + */ +void TestCpDestinationPlugin::cleanupTestCase() +{ + delete mMainWindow; + mMainWindow = 0; +} + +/** + * This function is be called before each test case is executed. + */ +void TestCpDestinationPlugin::init() +{ + // Expand settings group + // mTestView->mForm->setExpanded( + // mTestView->mModel->indexFromItem(mTestView->mApSettingsGroupItem), + // true); +} + +/** + * This function is be called after each test case is executed. + */ +void TestCpDestinationPlugin::cleanup() +{ + +} + +// ----------------------------------------------------------------------------- +// TEST CASES +// ----------------------------------------------------------------------------- +void TestCpDestinationPlugin::tcArrangeAps() +{ + // Open Internet destination + HbAutoTest::mouseClick(mMainWindow, mView, internetDestination, waitTime); + QTest::qWait(500); + + // Activate arrange mode + HbAutoTest::mouseClick(mMainWindow, mView, tbButton, waitTime); + QTest::qWait(500); + + // Drag + HbAutoTest::mousePress(mMainWindow, mView, arrangeFirstAp, waitTime); + QTest::qWait(300); + HbAutoTest::mouseMove(mMainWindow, mView, arrangeDragEnd, waitTime); + QTest::qWait(300); + HbAutoTest::mouseRelease(mMainWindow, mView, arrangeDragEnd, waitTime); + + HbAutoTest::mouseClick(mMainWindow, mView, arrangeDragEnd, waitTime); + QTest::qWait(500); + + // Cancel + subClickWidget(navigationButton); + QTest::qWait(500); + + // Activate arrange mode again + HbAutoTest::mouseClick(mMainWindow, mView, tbButton, waitTime); + QTest::qWait(500); + + // Drag + HbAutoTest::mousePress(mMainWindow, mView, arrangeFirstAp, waitTime); + QTest::qWait(300); + HbAutoTest::mouseMove(mMainWindow, mView, arrangeDragEnd, waitTime); + QTest::qWait(300); + // HbAutoTest::mouseRelease(mMainWindow, mView, arrangeDragEnd, waitTime); + + HbAutoTest::mouseClick(mMainWindow, mView, arrangeDragEnd, waitTime); + QTest::qWait(500); + + // OK + HbAutoTest::mouseClick(mMainWindow, mView, tbButton, waitTime); + QTest::qWait(500); + + // Back to main view + subClickWidget(navigationButton); + QTest::qWait(500); + +} + +void TestCpDestinationPlugin::tcMoveAp() +{ + // Open uncategorised aps + HbAutoTest::mouseClick(mMainWindow, mView, uncatDestination, waitTime); + QTest::qWait(500); + + // Activate context menu + HbAutoTest::mouseClick(mMainWindow, mView, uncatAp, 700); + QTest::qWait(50); + + // Select move + HbAutoTest::mouseClick(mMainWindow, mView, uncatMenuMove, waitTime); + QTest::qWait(300); + + // Select ok + HbAutoTest::mouseClick(mMainWindow, mView, destDialogOk, waitTime); + QTest::qWait(2000); + + // Back to destination view + subClickWidget(navigationButton); + QTest::qWait(500); +} + +void TestCpDestinationPlugin::tcShareDeleteAp() +{ + // Open Internet destination + HbAutoTest::mouseClick(mMainWindow, mView, internetDestination, waitTime); + QTest::qWait(500); + + // Activate context menu + HbAutoTest::mouseClick(mMainWindow, mView, internetFirstAp, 700); + QTest::qWait(50); + + // Select share + HbAutoTest::mouseClick(mMainWindow, mView, internetFirstApShare, waitTime); + QTest::qWait(300); + + // Select ok + HbAutoTest::mouseClick(mMainWindow, mView, destDialogOk, waitTime); + QTest::qWait(2000); + + // Activate context menu + HbAutoTest::mouseClick(mMainWindow, mView, internetFirstAp, 700); + QTest::qWait(50); + + // Select share + HbAutoTest::mouseClick(mMainWindow, mView, internetFirstApDelete, waitTime); + QTest::qWait(300); + + // Select ok + HbAutoTest::mouseClick(mMainWindow, mView, deleteDialogOk, waitTime); + QTest::qWait(2000); + + // Back to destination view + subClickWidget(navigationButton); + QTest::qWait(500); +} + +void TestCpDestinationPlugin::tcAddDestination() +{ + // Add Destination + HbAutoTest::mouseClick(mMainWindow, mView, addDestination, waitTime); + QTest::qWait(500); + + // Click OK -> Error note + HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime); + QTest::qWait(500); + + // Click OK -> errorNote disappears + HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime); + QTest::qWait(500); + + // Activate keyboard + HbAutoTest::mouseClick(mMainWindow, mView, addDialog, waitTime); + QTest::qWait(500); + + // Activate line-edit + HbAutoTest::mouseClick(mMainWindow, mView, addDialogKb, waitTime); + QTest::qWait(500); + + // Input text + HbAutoTest::keyClicks(mMainWindow, "Internet", 0, waitTime); + QTest::qWait(2000); + + // Select ok + HbAutoTest::mouseClick(mMainWindow, mView, addDialogOkKb, waitTime); + QTest::qWait(500); + + // Select ok again -> Error note + HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime); + QTest::qWait(500); + + // Click OK -> errorNote disappears + HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime); + QTest::qWait(500); + + // Activate keyboard + HbAutoTest::mouseClick(mMainWindow, mView, addDialog, waitTime); + QTest::qWait(500); + + // Activate line-edit + HbAutoTest::mouseClick(mMainWindow, mView, addDialogKb, waitTime); + QTest::qWait(500); + + // Input text + HbAutoTest::keyClicks(mMainWindow, "foo", 0, waitTime); + QTest::qWait(2000); + + // Select ok + HbAutoTest::mouseClick(mMainWindow, mView, addDialogOkKb, waitTime); + QTest::qWait(500); + + // Select ok again + HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime); + QTest::qWait(500); +} + +void TestCpDestinationPlugin::tcDestinationRename() +{ + // Open context menu + HbAutoTest::mouseClick(mMainWindow, mView, addDestination, 700); + QTest::qWait(50); + + // Click OK -> Error note + HbAutoTest::mouseClick(mMainWindow, mView, newDestinationRename, waitTime); + QTest::qWait(300); + + // Click OK -> error note shown + HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime); + QTest::qWait(300); + + // Click OK -> errorNote disappears + HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime); + QTest::qWait(500); + + // Activate keyboard + HbAutoTest::mouseClick(mMainWindow, mView, addDialog, waitTime); + QTest::qWait(500); + + // Activate line-edit + HbAutoTest::mouseClick(mMainWindow, mView, addDialogKb, waitTime); + QTest::qWait(500); + + // Input text + HbAutoTest::keyClicks(mMainWindow, "Internet", 0, waitTime); + QTest::qWait(2000); + + // Select ok + HbAutoTest::mouseClick(mMainWindow, mView, addDialogOkKb, waitTime); + QTest::qWait(500); + + // Select ok again -> Error note + HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime); + QTest::qWait(500); + + // Click OK -> errorNote disappears + HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime); + QTest::qWait(500); + + // Activate keyboard + HbAutoTest::mouseClick(mMainWindow, mView, addDialog, waitTime); + QTest::qWait(500); + + // Activate line-edit + HbAutoTest::mouseClick(mMainWindow, mView, addDialogKb, waitTime); + QTest::qWait(500); + + // Input text + HbAutoTest::keyClicks(mMainWindow, "bar", 0, waitTime); + QTest::qWait(2000); + + // Select ok + HbAutoTest::mouseClick(mMainWindow, mView, addDialogOkKb, waitTime); + QTest::qWait(500); + + // Select ok again + HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime); + QTest::qWait(500); + + // TODO: remove + subClickWidget(navigationButton); + QTest::qWait(500); +} + +void TestCpDestinationPlugin::tcDestinationDelete() +{ + // Open context menu + HbAutoTest::mouseClick(mMainWindow, mView, addDestination, 700); + QTest::qWait(50); + + // Click OK -> Error note + HbAutoTest::mouseClick(mMainWindow, mView, newDestinationDelete, waitTime); + QTest::qWait(300); + + // Click OK -> error note shown + HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime); + QTest::qWait(1000); + + // TODO: remove + subClickWidget(navigationButton); + QTest::qWait(500); +} + +void TestCpDestinationPlugin::tcCreateAndDeleteDestination() +{ + // Add Destination + HbAutoTest::mouseClick(mMainWindow, mView, addDestination, waitTime); + QTest::qWait(500); + + // Activate keyboard + HbAutoTest::mouseClick(mMainWindow, mView, addDialog, waitTime); + QTest::qWait(500); + + // Activate line-edit + HbAutoTest::mouseClick(mMainWindow, mView, addDialogKb, waitTime); + QTest::qWait(500); + + // Input text + HbAutoTest::keyClicks(mMainWindow, "foo", 0, waitTime); + QTest::qWait(2000); + + // Select ok + HbAutoTest::mouseClick(mMainWindow, mView, addDialogOkKb, waitTime); + QTest::qWait(500); + + // Select ok again + HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime); + QTest::qWait(500); + + // Open Internet destination + HbAutoTest::mouseClick(mMainWindow, mView, internetDestination, waitTime); + QTest::qWait(500); + + // Activate context menu + HbAutoTest::mouseClick(mMainWindow, mView, internetFirstAp, 700); + QTest::qWait(50); + + // Select move + HbAutoTest::mouseClick(mMainWindow, mView, internetFirstApMove, waitTime); + QTest::qWait(300); + + // Select destination + HbAutoTest::mouseClick(mMainWindow, mView, destDialogNewDest, waitTime); + QTest::qWait(300); + + // Select ok + HbAutoTest::mouseClick(mMainWindow, mView, destDialogOk, waitTime); + QTest::qWait(2000); + + // Back to destination view + subClickWidget(navigationButton); + QTest::qWait(500); + + // Open context menu + HbAutoTest::mouseClick(mMainWindow, mView, addDestination, 700); + QTest::qWait(50); + + // Click OK -> Error note + HbAutoTest::mouseClick(mMainWindow, mView, newDestinationDelete, waitTime); + QTest::qWait(300); + + // Click OK -> error note shown + HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime); + QTest::qWait(1000); + + // TODO: remove + subClickWidget(navigationButton); + QTest::qWait(500); +} + +void TestCpDestinationPlugin::tcOpenDestinations() +{ + // Open uncategorised aps + HbAutoTest::mouseClick(mMainWindow, mView, secondDestination, waitTime); + QTest::qWait(500); + + // Back to destination view + subClickWidget(navigationButton); + QTest::qWait(500); + + // Open uncategorised aps + HbAutoTest::mouseClick(mMainWindow, mView, thirdDestination, waitTime); + QTest::qWait(500); + + // Back to destination view + subClickWidget(navigationButton); + QTest::qWait(500); + + // Open uncategorised aps + HbAutoTest::mouseClick(mMainWindow, mView, fourthDestination, waitTime); + QTest::qWait(500); + + // Back to destination view + subClickWidget(navigationButton); + QTest::qWait(500); + + // Activate context menu + HbAutoTest::mouseClick(mMainWindow, mView, uncatAp, 700); + QTest::qWait(50); + + // TODO: remove + subClickWidget(navigationButton); + QTest::qWait(500); +} + +void TestCpDestinationPlugin::tcDeleteUncat() +{ + // Open uncategorised aps + HbAutoTest::mouseClick(mMainWindow, mView, uncatDestination, waitTime); + QTest::qWait(500); + + // Activate context menu + HbAutoTest::mouseClick(mMainWindow, mView, uncatAp, 700); + QTest::qWait(50); + + // Select move + HbAutoTest::mouseClick(mMainWindow, mView, uncatMenuDelete, waitTime); + QTest::qWait(500); + + // Select ok + HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime); + QTest::qWait(2000); + + // Back to destination view + subClickWidget(navigationButton); + QTest::qWait(500); +} + +void TestCpDestinationPlugin::tcMoveProtected() +{ + // Open Internet destination + HbAutoTest::mouseClick(mMainWindow, mView, internetDestination, waitTime); + QTest::qWait(500); + + // Activate context menu + HbAutoTest::mouseClick(mMainWindow, mView, internetFirstAp, 700); + QTest::qWait(50); + + // Select move + HbAutoTest::mouseClick(mMainWindow, mView, internetFirstApMove, waitTime); + QTest::qWait(300); + + // Select destination + HbAutoTest::mouseClick(mMainWindow, mView, destDialogSecond, waitTime); + QTest::qWait(300); + + // Select ok + HbAutoTest::mouseClick(mMainWindow, mView, destDialogOk, waitTime); + QTest::qWait(2000); + + HbAutoTest::mouseClick(mMainWindow, mView, addDialogOk, waitTime); + QTest::qWait(2000); + + // Back to destination view + subClickWidget(navigationButton); + QTest::qWait(500); +} + +// ----------------------------------------------------------------------------- +// SUB TEST CASES +// ----------------------------------------------------------------------------- + +void TestCpDestinationPlugin::subCreateSettingsView() +{ + // Create settings view + HbView *view = new HbView(); + CpItemDataHelper *itemDataHelper = new CpItemDataHelper(); + itemDataHelper->setParent(view); + HbDataForm *form = new HbDataForm(); + HbDataFormModel *model = new HbDataFormModel; + CpPluginUtility::addCpItemPrototype(form); + QList list = mPlugin->createSettingFormItemData(*itemDataHelper); + HbDataFormModelItem *modelItem = NULL; + modelItem = list[0]; + model->appendDataFormItem(modelItem); + form->setModel(model); + model->setParent(form); + view->setWidget(form); + itemDataHelper->bindToForm(form); + + // Display the view + // TODO: connect aboutToClose() signal + mMainWindow->addView(view); + mMainWindow->setCurrentView(view); + + mView = view; +} + +void TestCpDestinationPlugin::subClickWidget(const QString &name) +{ + QList itemList = mMainWindow->scene()->items(); + + QGraphicsItem *target = 0; + foreach (QGraphicsItem* item, itemList) { + if (item->isWidget()) { + QString widgetClassName(static_cast(item)->metaObject()->className()); + qDebug() << widgetClassName; + + if (widgetClassName == name) { + target = item; + //break; + } + } + } + + Q_ASSERT(target); + HbAutoTest::mouseClick(mMainWindow, static_cast(target)); +}