cmmanager/cpwlanapplugin/tsrc/ut/testcpwlanapplugin.cpp
branchRCL_3
changeset 57 05bc53fe583b
equal deleted inserted replaced
55:fc7b30ed2058 57:05bc53fe583b
       
     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:
       
    15 * Control Panel WLAN AP plugin unit testing.
       
    16 */
       
    17 
       
    18 #include <HbApplication>
       
    19 #include <HbMainWindow>
       
    20 #include <HbView>
       
    21 #include <HbDialog>
       
    22 #include <HbRadioButtonList>
       
    23 #include <HbAction>
       
    24 #include <HbDataForm>
       
    25 #include <HbDataFormModel>
       
    26 #include <HbDataFormModelItem>
       
    27 #include <HbDataFormViewItem>
       
    28 #include <HbModelIterator>
       
    29 #include <QSharedPointer>
       
    30 #include <QtTest/QtTest>
       
    31 #include <cpbearerapplugininterface.h>
       
    32 #include <cmmanager_shim.h>
       
    33 #include <cmconnectionmethod_shim.h>
       
    34 
       
    35 #include "cpwlanapview.h"
       
    36 #include "cpwlanapadvancedview.h"
       
    37 
       
    38 #include "hbautotest.h"
       
    39 #include "testcpwlanapplugin.h"
       
    40 
       
    41 // Following flag must be defined if WLAN security settings plugins
       
    42 // (WEP, WPA/WPA2 and WPA2) are available. Flag can be removed when the
       
    43 // plugins are released.
       
    44 #define WLAN_SECURITY_PLUGINS_AVAILABLE
       
    45 
       
    46 // -----------------------------------------------------------------------------
       
    47 // STATIC TEST DATA
       
    48 // -----------------------------------------------------------------------------
       
    49 
       
    50 // Connection method (AP) ID used for testing
       
    51 static const uint testApId = 5;
       
    52 
       
    53 static const QString pluginDir =
       
    54     "\\resource\\qt\\plugins\\controlpanel\\bearerap";
       
    55 
       
    56 static const QString pluginName = "cpwlanapplugin.dll";
       
    57 
       
    58 // Time to wait before continuing after an UI step
       
    59 static const int waitTime = 10;
       
    60 
       
    61 // UI coordinates
       
    62 static const QPoint scrollMiddle(350, 280);
       
    63 static const QPoint scrollTop(350, 30);
       
    64 static const QPoint scrollBottom(350, 540);
       
    65 
       
    66 // Use positive offset if dropdown opens under the combobox
       
    67 static const QPoint comboBoxFirstItemOffset(80, 75);
       
    68 static const QPoint comboBoxItemOffset(0, 51);
       
    69 // Use negative offset if dropdown opens above the combobox
       
    70 static const QPoint comboBoxFirstItemNegativeOffset(80, -29);
       
    71 static const QPoint comboBoxItemNegativeOffset(0, -51);
       
    72 
       
    73 static const QPoint exitEditorOffset(-10, -20);
       
    74 
       
    75 static const QPoint messageBoxOkButtonOffset(160, 140);
       
    76 
       
    77 // Advanced settings groups
       
    78 static const QPoint ipv4Group(160, 10);
       
    79 static const QPoint ipv6Group(160, 60);
       
    80 static const QPoint proxyGroup(160, 110);
       
    81 
       
    82 // -----------------------------------------------------------------------------
       
    83 // FRAMEWORK FUNCTIONS
       
    84 // -----------------------------------------------------------------------------
       
    85 
       
    86 /**
       
    87  * Test main function. Runs all test cases.
       
    88  */
       
    89 #ifndef TESTCMAPPLSETTINGSUI_NO_OUTPUT_REDIRECT
       
    90 int main(int argc, char *argv[])
       
    91 {
       
    92     HbApplication app(argc, argv);
       
    93     app.setApplicationName("TestCpWlanApPlugin");
       
    94     
       
    95     char *pass[3];  
       
    96     pass[0] = argv[0];
       
    97     pass[1] = "-o"; 
       
    98     pass[2] = "c:\\data\\TestCpWlanApPlugin.txt";
       
    99  
       
   100     TestCpWlanApPlugin tc;
       
   101     int res = QTest::qExec(&tc, 3, pass);
       
   102  
       
   103     return res;
       
   104 }
       
   105 #else
       
   106 QTEST_MAIN(TestCpWlanApPlugin)
       
   107 #endif
       
   108 
       
   109 /**
       
   110  * This function is be called before the first test case is executed.
       
   111  */
       
   112 void TestCpWlanApPlugin::initTestCase()
       
   113 {
       
   114     mMainWindow = new HbAutoTestMainWindow;
       
   115     //mMainWindow = new HbMainWindow;
       
   116     mMainWindow->show();
       
   117     
       
   118     // Load plugin
       
   119     QDir dir(pluginDir);
       
   120     mPluginLoader = new QPluginLoader(dir.absoluteFilePath(pluginName));
       
   121     mPlugin = qobject_cast<CpBearerApPluginInterface *>(mPluginLoader->instance());
       
   122     QVERIFY(mPlugin != NULL);
       
   123     
       
   124     // Verify plugin bearer type
       
   125     QVERIFY(mPlugin->bearerType() == CMManagerShim::BearerTypeWlan);
       
   126     
       
   127     // Create WLAN settings view (connection method ID given)
       
   128     subCreateSettingsView(testApId);
       
   129     
       
   130     subGetUiWidgets();
       
   131 }
       
   132 
       
   133 /**
       
   134  * This function is be called after the last test case was executed.
       
   135  */
       
   136 void TestCpWlanApPlugin::cleanupTestCase()
       
   137 {
       
   138     delete mMainWindow;
       
   139     mMainWindow = 0;
       
   140     
       
   141     // Force unloading of plugin
       
   142     mPluginLoader->unload();
       
   143     delete mPluginLoader;
       
   144     mPluginLoader = 0;
       
   145 }
       
   146 
       
   147 /**
       
   148  * This function is be called before each test case is executed.
       
   149  */
       
   150 void TestCpWlanApPlugin::init()
       
   151 {
       
   152     QTest::qWait(1000);
       
   153 }
       
   154 
       
   155 /**
       
   156  * This function is be called after each test case is executed.
       
   157  */
       
   158 void TestCpWlanApPlugin::cleanup()
       
   159 {
       
   160 }
       
   161 
       
   162 // -----------------------------------------------------------------------------
       
   163 // TEST CASES
       
   164 // -----------------------------------------------------------------------------
       
   165 
       
   166 /**
       
   167  * Tests changing of connection name.
       
   168  */
       
   169 void TestCpWlanApPlugin::tcChangeConnectionName()
       
   170 {
       
   171     QFETCH(QString, string);
       
   172     QFETCH(QString, result);
       
   173     
       
   174     HbAutoTest::mouseClick(mMainWindow, mConnectionNameWidget);
       
   175     
       
   176     // Erase old string
       
   177     QString text = mTestView->mConnectionNameItem->contentWidgetData("text").toString();
       
   178     subClearLineEdit(text.size());
       
   179     
       
   180     // Enter new string
       
   181     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
       
   182 
       
   183     HbAutoTest::mouseClick(mMainWindow, mConnectionNameWidget, exitEditorOffset);
       
   184 
       
   185     // Verify both commsdat and UI widget
       
   186     subVerifyString(
       
   187         CMManagerShim::CmName,
       
   188         mTestView->mConnectionNameItem,
       
   189         result);
       
   190 }
       
   191 
       
   192 /**
       
   193  * Test data for connection name change test case.
       
   194  */
       
   195 void TestCpWlanApPlugin::tcChangeConnectionName_data()
       
   196 {
       
   197     QTest::addColumn<QString>("string");
       
   198     QTest::addColumn<QString>("result");
       
   199     
       
   200     QTest::newRow("maximum length")
       
   201         << "really long name 123456789012345678901234567890123"
       
   202         << "really long name 123456789012345678901234567890123";
       
   203     QTest::newRow("too long")
       
   204         << "too long name 12345678901234567890123456789012345678901234"
       
   205         << "too long name 123456789012345678901234567890123456";
       
   206     QTest::newRow("basic") // last one must always fit on one line in UI
       
   207         << "test WLAN AP"
       
   208         << "test WLAN AP";
       
   209 }
       
   210 
       
   211 /**
       
   212  * Tests that empty connection name is not accepted.
       
   213  */
       
   214 void TestCpWlanApPlugin::tcConnectionNameEmpty()
       
   215 {
       
   216     QString previous = 
       
   217         mTestView->mConnectionNameItem->contentWidgetData("text").toString();
       
   218     
       
   219     HbAutoTest::mouseClick(mMainWindow, mConnectionNameWidget);
       
   220 
       
   221     // Erase old string
       
   222     QString text = mTestView->mConnectionNameItem->contentWidgetData("text").toString();
       
   223     subClearLineEdit(text.size());
       
   224     
       
   225     HbAutoTest::mouseClick(mMainWindow, mConnectionNameWidget, exitEditorOffset);
       
   226 
       
   227     QTest::qWait(100);
       
   228     // Dismiss messagebox
       
   229     HbAutoTest::mouseClick(
       
   230         mMainWindow,
       
   231         mTestView->mMessageBox.data(),
       
   232         messageBoxOkButtonOffset);
       
   233     
       
   234     // Verify both commsdat and UI widget
       
   235     subVerifyString(
       
   236         CMManagerShim::CmName,
       
   237         mTestView->mConnectionNameItem,
       
   238         previous);
       
   239 }
       
   240 
       
   241 /**
       
   242  * Tests changing of WLAN network name.
       
   243  */
       
   244 void TestCpWlanApPlugin::tcChangeWlanNetworkName()
       
   245 {
       
   246     QFETCH(QString, string);
       
   247     QFETCH(QString, result);
       
   248     
       
   249     HbAutoTest::mouseClick(mMainWindow, mWlanNetworkNameWidget);
       
   250     
       
   251     // Erase old string
       
   252     QString text = mTestView->mWlanNetworkNameItem->contentWidgetData("text").toString();
       
   253     subClearLineEdit(text.size());
       
   254     
       
   255     // Enter new string
       
   256     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
       
   257 
       
   258     HbAutoTest::mouseClick(mMainWindow, mWlanNetworkNameWidget, exitEditorOffset);
       
   259 
       
   260     // Verify both commsdat and UI widget
       
   261     subVerifyString(
       
   262         CMManagerShim::WlanSSID,
       
   263         mTestView->mWlanNetworkNameItem,
       
   264         result);
       
   265 }
       
   266 
       
   267 /**
       
   268  * Test data for WLAN network name change test case.
       
   269  */
       
   270 void TestCpWlanApPlugin::tcChangeWlanNetworkName_data()
       
   271 {
       
   272     QTest::addColumn<QString>("string");
       
   273     QTest::addColumn<QString>("result");
       
   274     
       
   275     QTest::newRow("maximum length")
       
   276         << "really long name 123456789012345"
       
   277         << "really long name 123456789012345";
       
   278     QTest::newRow("too long")
       
   279         << "too long name 123456789012345678901234567890"
       
   280         << "too long name 123456789012345678";
       
   281     QTest::newRow("basic") // last one must always fit on one line in UI
       
   282         << "test SSID"
       
   283         << "test SSID";
       
   284 }
       
   285 
       
   286 /**
       
   287  * Tests that empty WLAN network name is not accepted.
       
   288  */
       
   289 void TestCpWlanApPlugin::tcWlanNetworkNameEmpty()
       
   290 {
       
   291     QString previous = 
       
   292         mTestView->mWlanNetworkNameItem->contentWidgetData("text").toString();
       
   293     
       
   294     HbAutoTest::mouseClick(mMainWindow, mWlanNetworkNameWidget);
       
   295     
       
   296     // Erase old string
       
   297     QString text = mTestView->mWlanNetworkNameItem->contentWidgetData("text").toString();
       
   298     subClearLineEdit(text.size());
       
   299     
       
   300     HbAutoTest::mouseClick(mMainWindow, mWlanNetworkNameWidget, exitEditorOffset);
       
   301 
       
   302     QTest::qWait(100);
       
   303     // Dismiss messagebox
       
   304     HbAutoTest::mouseClick(
       
   305         mMainWindow,
       
   306         mTestView->mMessageBox.data(),
       
   307         messageBoxOkButtonOffset);
       
   308     
       
   309     // Verify both commsdat and UI widget
       
   310     subVerifyString(
       
   311         CMManagerShim::WlanSSID,
       
   312         mTestView->mWlanNetworkNameItem,
       
   313         previous);
       
   314 }
       
   315 
       
   316 /**
       
   317  * Tests changing of WLAN network status.
       
   318  */
       
   319 void TestCpWlanApPlugin::tcChangeNetworkStatus()
       
   320 {
       
   321     QPointF publicPointOffset = comboBoxFirstItemOffset;
       
   322     QPointF hiddenPointOffset = comboBoxFirstItemOffset + comboBoxItemOffset;
       
   323     
       
   324     // Set network status to hidden
       
   325     HbAutoTest::mouseClick(mMainWindow, mNetworkStatusWidget);
       
   326     HbAutoTest::mouseClick(mMainWindow, mNetworkStatusWidget, hiddenPointOffset, 100);
       
   327     subVerifyNetworkStatus(HiddenStatus);
       
   328 
       
   329     // Set network status to public
       
   330     HbAutoTest::mouseClick(mMainWindow, mNetworkStatusWidget);
       
   331     HbAutoTest::mouseClick(mMainWindow, mNetworkStatusWidget, publicPointOffset, 100);
       
   332     subVerifyNetworkStatus(PublicStatus);
       
   333 }
       
   334 
       
   335 /**
       
   336  * Tests changing of WLAN network mode.
       
   337  */
       
   338 void TestCpWlanApPlugin::tcChangeNetworkMode()
       
   339 {
       
   340     QPointF infraPointOffset = comboBoxFirstItemOffset;
       
   341     QPointF adHocPointOffset = comboBoxFirstItemOffset + comboBoxItemOffset;
       
   342     
       
   343     // Set network mode to ad-hoc
       
   344     HbAutoTest::mouseClick(mMainWindow, mNetworkModeWidget);
       
   345     HbAutoTest::mouseClick(mMainWindow, mNetworkModeWidget, adHocPointOffset, 100);
       
   346     subVerifyUint(CMManagerShim::WlanConnectionMode, CMManagerShim::Adhoc);
       
   347 
       
   348     // Set network mode to infrastructure
       
   349     HbAutoTest::mouseClick(mMainWindow, mNetworkModeWidget);
       
   350     HbAutoTest::mouseClick(mMainWindow, mNetworkModeWidget, infraPointOffset, 100);
       
   351     subVerifyUint(CMManagerShim::WlanConnectionMode, CMManagerShim::Infra);
       
   352 }
       
   353 
       
   354 /**
       
   355  * Tests changing of WLAN security mode.
       
   356  */
       
   357 void TestCpWlanApPlugin::tcChangeSecurityMode()
       
   358 {
       
   359 #ifdef WLAN_SECURITY_PLUGINS_AVAILABLE
       
   360     QPointF openPointOffset = comboBoxFirstItemNegativeOffset + comboBoxItemNegativeOffset * 3;
       
   361     QPointF wepPointOffset = comboBoxFirstItemNegativeOffset + comboBoxItemNegativeOffset * 2;
       
   362     QPointF wpaPointOffset = comboBoxFirstItemNegativeOffset + comboBoxItemNegativeOffset;
       
   363     QPointF wpa2PointOffset = comboBoxFirstItemNegativeOffset;
       
   364 #else
       
   365     QPointF openPointOffset = comboBoxFirstItemNegativeOffset;
       
   366 #endif
       
   367     
       
   368 #ifdef WLAN_SECURITY_PLUGINS_AVAILABLE
       
   369     // Set security mode to WEP
       
   370     HbAutoTest::mouseClick(mMainWindow, mSecurityModeWidget);
       
   371     QTest::qWait(100);
       
   372     HbAutoTest::mouseClick(mMainWindow, mSecurityModeWidget, wepPointOffset, 100);
       
   373     subVerifyUint(
       
   374         CMManagerShim::WlanSecurityMode,
       
   375         CMManagerShim::WlanSecModeWep);
       
   376     
       
   377     QTest::qWait(1000);
       
   378 #endif
       
   379     // Set security mode to open
       
   380     HbAutoTest::mouseClick(mMainWindow, mSecurityModeWidget);
       
   381     QTest::qWait(100);
       
   382     HbAutoTest::mouseClick(mMainWindow, mSecurityModeWidget, openPointOffset, 100);
       
   383     subVerifyUint(
       
   384         CMManagerShim::WlanSecurityMode,
       
   385         CMManagerShim::WlanSecModeOpen);
       
   386 }
       
   387 
       
   388 /**
       
   389  * Scrolls the tested view to the bottom.
       
   390  */
       
   391 void TestCpWlanApPlugin::tcScrollToBottom()
       
   392 {
       
   393     subScrollToBottom();
       
   394 }
       
   395 
       
   396 /**
       
   397  * Gets UI widget pointers because homepage view item may have been
       
   398  * created before it was visible on the UI.
       
   399  */
       
   400 void TestCpWlanApPlugin::tcGetUiWidgets()
       
   401 {
       
   402     subGetUiWidgets();
       
   403 }
       
   404 
       
   405 /**
       
   406  * Tests changing of homepage.
       
   407  */
       
   408 void TestCpWlanApPlugin::tcChangeHomepage()
       
   409 {
       
   410     QFETCH(QString, string);
       
   411     QFETCH(QString, result);
       
   412     
       
   413     HbAutoTest::mouseClick(mMainWindow, mHomepageWidget);
       
   414     
       
   415     // Erase old string
       
   416     QString text = mTestView->mHomepageItem->contentWidgetData("text").toString();
       
   417     subClearLineEdit(text.size());
       
   418     
       
   419     // Enter new string
       
   420     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
       
   421 
       
   422     HbAutoTest::mouseClick(mMainWindow, mHomepageWidget, exitEditorOffset);
       
   423 
       
   424     // Verify both commsdat and UI widget
       
   425     subVerifyString(
       
   426         CMManagerShim::CmStartPage,
       
   427         mTestView->mHomepageItem,
       
   428         result);
       
   429 }
       
   430 
       
   431 /**
       
   432  * Test data for homepage change test case.
       
   433  */
       
   434 void TestCpWlanApPlugin::tcChangeHomepage_data()
       
   435 {
       
   436     QTest::addColumn<QString>("string");
       
   437     QTest::addColumn<QString>("result");
       
   438   
       
   439     QTest::newRow("long")
       
   440         << "http://developer.symbian.org/main/documentation/reference/s^3/doc_source/AboutSymbianOSLibrary9.6/index.html"
       
   441         << "http://developer.symbian.org/main/documentation/reference/s^3/doc_source/AboutSymbianOSLibrary9.6/index.html";
       
   442     QTest::newRow("basic") // last one should always fit on one line in UI
       
   443         << "http://www.symbian.org/"
       
   444         << "http://www.symbian.org/";
       
   445     QTest::newRow("empty")
       
   446         << ""
       
   447         << "";
       
   448 }
       
   449 
       
   450 /**
       
   451  * Opens advanced settings view.
       
   452  */
       
   453 void TestCpWlanApPlugin::tcOpenAdvancedSettingsView()
       
   454 {
       
   455     // Launch advanced settings view
       
   456     bool status = connect(
       
   457         this,
       
   458         SIGNAL(menuActionTriggered(HbAction *)),
       
   459         mTestView,
       
   460         SLOT(menuActionTriggered(HbAction *)));
       
   461     Q_ASSERT(status);
       
   462     emit menuActionTriggered(mTestView->mAdvancedSettingsAction);
       
   463     
       
   464     QTest::qWait(1000);
       
   465     
       
   466     mTestViewAdvanced = static_cast<CpWlanApAdvancedView *>(mMainWindow->currentView());
       
   467 }
       
   468 
       
   469 /**
       
   470  * Expands the IPv4 settings group and gets UI widget pointers.
       
   471  */
       
   472 void TestCpWlanApPlugin::tcExpandIpv4SettingsAndGetUiWidgets()
       
   473 {
       
   474     HbAutoTest::mouseClick(mMainWindow, mTestViewAdvanced, ipv4Group);
       
   475     
       
   476     QTest::qWait(500);
       
   477 
       
   478     subGetAdvancedUiWidgets(0);
       
   479 }
       
   480 
       
   481 /**
       
   482  * Tests enabling of automatic phone IP address.
       
   483  */
       
   484 void TestCpWlanApPlugin::tcEnableAutomaticIpv4Address()
       
   485 {
       
   486     Qt::CheckState state = static_cast<Qt::CheckState>
       
   487         (mTestViewAdvanced->mIpv4Automatic->contentWidgetData("checkState").toInt());
       
   488     if (state == Qt::Checked) {
       
   489         // Disable automatic IP address
       
   490         HbAutoTest::mouseClick(mMainWindow, mIpv4AddressAutomaticWidget);
       
   491     }
       
   492     // Enable automatic IP address
       
   493     HbAutoTest::mouseClick(mMainWindow, mIpv4AddressAutomaticWidget);
       
   494     subVerifyBool(
       
   495         CMManagerShim::CmIPAddrFromServer,
       
   496         true);
       
   497     
       
   498     // Ensure that editing the IP address is not allowed
       
   499     HbAutoTest::mouseClick(mMainWindow, mIpv4AddressWidget);
       
   500     HbAutoTest::mouseClick(mMainWindow, mIpv4SubnetMaskWidget);
       
   501     HbAutoTest::mouseClick(mMainWindow, mIpv4GatewayWidget);
       
   502 }
       
   503 
       
   504 /**
       
   505  * Tests disabling of automatic phone IP address.
       
   506  */
       
   507 void TestCpWlanApPlugin::tcEnableUserDefinedIpv4Address()
       
   508 {
       
   509     Qt::CheckState state = static_cast<Qt::CheckState>
       
   510         (mTestViewAdvanced->mIpv4Automatic->contentWidgetData("checkState").toInt());
       
   511     if (state == Qt::Checked) {
       
   512         // Disable automatic IP address
       
   513         HbAutoTest::mouseClick(mMainWindow, mIpv4AddressAutomaticWidget);
       
   514     }
       
   515     // Can't verify the setting from CommsDat here, because CMManager will
       
   516     // set it back to true if no valid IP address is yet defined. The flag
       
   517     // is verified in tcChangeIpAddress().
       
   518 }
       
   519 
       
   520 /**
       
   521  * Tests changing of IP address.
       
   522  */
       
   523 void TestCpWlanApPlugin::tcChangeIpAddress()
       
   524 {
       
   525     QFETCH(QString, string);
       
   526     QFETCH(QString, result);
       
   527     
       
   528     HbAutoTest::mouseClick(mMainWindow, mIpv4AddressWidget);
       
   529     
       
   530     // Erase old string
       
   531     QString text = mTestViewAdvanced->mIpv4Address->contentWidgetData("text").toString();
       
   532     subClearLineEdit(text.size());
       
   533     
       
   534     // Enter new string
       
   535     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
       
   536 
       
   537     HbAutoTest::mouseClick(mMainWindow, mIpv4AddressWidget, exitEditorOffset);
       
   538 
       
   539     // Verify both commsdat and UI widget
       
   540     subVerifyString(
       
   541         CMManagerShim::CmIPAddress,
       
   542         mTestViewAdvanced->mIpv4Address,
       
   543         result);
       
   544     subVerifyBool(
       
   545         CMManagerShim::CmIPAddrFromServer,
       
   546         false);
       
   547 }
       
   548 
       
   549 /**
       
   550  * Test data for IP address change test case.
       
   551  */
       
   552 void TestCpWlanApPlugin::tcChangeIpAddress_data()
       
   553 {
       
   554     QTest::addColumn<QString>("string");
       
   555     QTest::addColumn<QString>("result");
       
   556   
       
   557     QTest::newRow("too long")
       
   558         << "255.255.255.2551234"
       
   559         << "255.255.255.255";
       
   560     QTest::newRow("normal")
       
   561         << "192.168.0.1"
       
   562         << "192.168.0.1";
       
   563 }
       
   564 
       
   565 /**
       
   566  * Tests changing of subnet mask.
       
   567  */
       
   568 void TestCpWlanApPlugin::tcChangeSubnetMask()
       
   569 {
       
   570     QFETCH(QString, string);
       
   571     QFETCH(QString, result);
       
   572     
       
   573     HbAutoTest::mouseClick(mMainWindow, mIpv4SubnetMaskWidget);
       
   574     
       
   575     // Erase old string
       
   576     QString text = mTestViewAdvanced->mIpv4SubnetMask->contentWidgetData("text").toString();
       
   577     subClearLineEdit(text.size());
       
   578     
       
   579     // Enter new string
       
   580     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
       
   581 
       
   582     HbAutoTest::mouseClick(mMainWindow, mIpv4SubnetMaskWidget, exitEditorOffset);
       
   583 
       
   584     // Verify both commsdat and UI widget
       
   585     subVerifyString(
       
   586         CMManagerShim::CmIPNetmask,
       
   587         mTestViewAdvanced->mIpv4SubnetMask,
       
   588         result);
       
   589 }
       
   590 
       
   591 /**
       
   592  * Test data for subnet mask change test case.
       
   593  */
       
   594 void TestCpWlanApPlugin::tcChangeSubnetMask_data()
       
   595 {
       
   596     QTest::addColumn<QString>("string");
       
   597     QTest::addColumn<QString>("result");
       
   598   
       
   599     QTest::newRow("empty")
       
   600         << ""
       
   601         << "0.0.0.0";
       
   602     QTest::newRow("zero")
       
   603         << "0.0.0.0"
       
   604         << "0.0.0.0";
       
   605     QTest::newRow("too long")
       
   606         << "255.255.255.2551234"
       
   607         << "255.255.255.255";
       
   608     QTest::newRow("normal")
       
   609         << "192.168.0.1"
       
   610         << "192.168.0.1";
       
   611 }
       
   612 
       
   613 /**
       
   614  * Tests invalid subnet mask.
       
   615  */
       
   616 void TestCpWlanApPlugin::tcInvalidSubnetMask()
       
   617 {
       
   618     QString previous = 
       
   619         mTestViewAdvanced->mIpv4SubnetMask->contentWidgetData("text").toString();
       
   620     
       
   621     HbAutoTest::mouseClick(mMainWindow, mIpv4SubnetMaskWidget);
       
   622     
       
   623     // Erase old string
       
   624     QString text = mTestViewAdvanced->mIpv4SubnetMask->contentWidgetData("text").toString();
       
   625     subClearLineEdit(text.size());
       
   626     
       
   627     // Enter new string
       
   628     HbAutoTest::keyClicks(mMainWindow, "999.999.999.999", 0, waitTime);
       
   629 
       
   630     HbAutoTest::mouseClick(mMainWindow, mIpv4SubnetMaskWidget, exitEditorOffset);
       
   631 
       
   632     QTest::qWait(100);
       
   633     // Dismiss messagebox
       
   634     HbAutoTest::mouseClick(
       
   635         mMainWindow,
       
   636         mTestViewAdvanced->mMessageBox.data(),
       
   637         messageBoxOkButtonOffset);
       
   638     
       
   639     // Verify both commsdat and UI widget
       
   640     subVerifyString(
       
   641         CMManagerShim::CmIPNetmask,
       
   642         mTestViewAdvanced->mIpv4SubnetMask,
       
   643         previous);
       
   644 }
       
   645 
       
   646 /**
       
   647  * Tests changing of gateway.
       
   648  */
       
   649 void TestCpWlanApPlugin::tcChangeGateway()
       
   650 {
       
   651     QFETCH(QString, string);
       
   652     QFETCH(QString, result);
       
   653     
       
   654     HbAutoTest::mouseClick(mMainWindow, mIpv4GatewayWidget);
       
   655     
       
   656     // Erase old string
       
   657     QString text = mTestViewAdvanced->mIpv4Gateway->contentWidgetData("text").toString();
       
   658     subClearLineEdit(text.size());
       
   659     
       
   660     // Enter new string
       
   661     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
       
   662 
       
   663     HbAutoTest::mouseClick(mMainWindow, mIpv4GatewayWidget, exitEditorOffset);
       
   664 
       
   665     // Verify both commsdat and UI widget
       
   666     subVerifyString(
       
   667         CMManagerShim::CmIPGateway,
       
   668         mTestViewAdvanced->mIpv4Gateway,
       
   669         result);
       
   670 }
       
   671 
       
   672 /**
       
   673  * Test data for gateway change test case.
       
   674  */
       
   675 void TestCpWlanApPlugin::tcChangeGateway_data()
       
   676 {
       
   677     QTest::addColumn<QString>("string");
       
   678     QTest::addColumn<QString>("result");
       
   679   
       
   680     QTest::newRow("empty")
       
   681         << ""
       
   682         << "0.0.0.0";
       
   683     QTest::newRow("zero")
       
   684         << "0.0.0.0"
       
   685         << "0.0.0.0";
       
   686     QTest::newRow("too long")
       
   687         << "255.255.255.2551234"
       
   688         << "255.255.255.255";
       
   689     QTest::newRow("normal")
       
   690         << "192.168.0.1"
       
   691         << "192.168.0.1";
       
   692 }
       
   693 
       
   694 /**
       
   695  * Tests invalid gateway address.
       
   696  */
       
   697 void TestCpWlanApPlugin::tcInvalidGateway()
       
   698 {
       
   699     QString previous = 
       
   700         mTestViewAdvanced->mIpv4Gateway->contentWidgetData("text").toString();
       
   701     
       
   702     HbAutoTest::mouseClick(mMainWindow, mIpv4GatewayWidget);
       
   703     
       
   704     // Erase old string
       
   705     QString text = mTestViewAdvanced->mIpv4Gateway->contentWidgetData("text").toString();
       
   706     subClearLineEdit(text.size());
       
   707     
       
   708     // Enter new string
       
   709     HbAutoTest::keyClicks(mMainWindow, "999.999.999.999", 0, waitTime);
       
   710 
       
   711     HbAutoTest::mouseClick(mMainWindow, mIpv4GatewayWidget, exitEditorOffset);
       
   712 
       
   713     QTest::qWait(100);
       
   714     // Dismiss messagebox
       
   715     HbAutoTest::mouseClick(
       
   716         mMainWindow,
       
   717         mTestViewAdvanced->mMessageBox.data(),
       
   718         messageBoxOkButtonOffset);
       
   719     
       
   720     // Verify both commsdat and UI widget
       
   721     subVerifyString(
       
   722         CMManagerShim::CmIPGateway,
       
   723         mTestViewAdvanced->mIpv4Gateway,
       
   724         previous);
       
   725 }
       
   726 
       
   727 /**
       
   728  * Scrolls the tested view to the bottom.
       
   729  */
       
   730 void TestCpWlanApPlugin::tcScrollToBottom2()
       
   731 {
       
   732     subScrollToBottom();
       
   733 }
       
   734 
       
   735 /**
       
   736  * Tests enabling of automatic IPv4 DNS addresses.
       
   737  */
       
   738 void TestCpWlanApPlugin::tcEnableAutomaticIpv4DnsAddress()
       
   739 {
       
   740     Qt::CheckState state = static_cast<Qt::CheckState>
       
   741         (mTestViewAdvanced->mIpv4DnsAutomatic->contentWidgetData("checkState").toInt());
       
   742     if (state == Qt::Checked) {
       
   743         // Disable automatic IPv4 DNS address
       
   744         HbAutoTest::mouseClick(mMainWindow, mIpv4DnsAddressAutomaticWidget);
       
   745     }
       
   746     // Enable automatic IPv4 DNS address
       
   747     HbAutoTest::mouseClick(mMainWindow, mIpv4DnsAddressAutomaticWidget);
       
   748     subVerifyBool(
       
   749         CMManagerShim::CmIPDNSAddrFromServer,
       
   750         true);
       
   751     
       
   752     // Ensure that editing the IP address is not allowed
       
   753     HbAutoTest::mouseClick(mMainWindow, mIpv4PrimaryDnsAddressWidget);
       
   754     HbAutoTest::mouseClick(mMainWindow, mIpv4SecondaryDnsAddressWidget);
       
   755 }
       
   756 
       
   757 /**
       
   758  * Tests disabling of automatic IPv4 DNS addresses.
       
   759  */
       
   760 void TestCpWlanApPlugin::tcEnableUserDefinedIpv4DnsAddress()
       
   761 {
       
   762     Qt::CheckState state = static_cast<Qt::CheckState>
       
   763         (mTestViewAdvanced->mIpv4DnsAutomatic->contentWidgetData("checkState").toInt());
       
   764     if (state == Qt::Checked) {
       
   765         // Disable automatic IPv4 DNS address
       
   766         HbAutoTest::mouseClick(mMainWindow, mIpv4DnsAddressAutomaticWidget);
       
   767     }
       
   768     // Can't verify the setting from CommsDat here, because CMManager will
       
   769     // set it back to true if no valid IP address is yet defined. The flag
       
   770     // is verified in tcChangeIpv4DnsAddress().
       
   771 }
       
   772 
       
   773 /**
       
   774  * Tests changing of IPv4 DNS addresses.
       
   775  */
       
   776 void TestCpWlanApPlugin::tcChangeIpv4DnsAddress()
       
   777 {
       
   778     QFETCH(QString, string);
       
   779     QFETCH(QString, result);
       
   780     
       
   781     // Primary DNS address
       
   782     HbAutoTest::mouseClick(mMainWindow, mIpv4PrimaryDnsAddressWidget);
       
   783     
       
   784     // Erase old string
       
   785     QString text = mTestViewAdvanced->mIpv4DnsAddress1->contentWidgetData("text").toString();
       
   786     subClearLineEdit(text.size());
       
   787     
       
   788     // Enter new string
       
   789     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
       
   790 
       
   791     HbAutoTest::mouseClick(mMainWindow, mIpv4PrimaryDnsAddressWidget, exitEditorOffset);
       
   792 
       
   793     // Verify both commsdat and UI widget
       
   794     subVerifyString(
       
   795         CMManagerShim::CmIPNameServer1,
       
   796         mTestViewAdvanced->mIpv4DnsAddress1,
       
   797         result);
       
   798     
       
   799     // Secondary DNS address
       
   800     HbAutoTest::mouseClick(mMainWindow, mIpv4SecondaryDnsAddressWidget);
       
   801     
       
   802     // Erase old string
       
   803     text = mTestViewAdvanced->mIpv4DnsAddress2->contentWidgetData("text").toString();
       
   804     subClearLineEdit(text.size());
       
   805     
       
   806     // Enter new string
       
   807     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
       
   808 
       
   809     HbAutoTest::mouseClick(mMainWindow, mIpv4SecondaryDnsAddressWidget, exitEditorOffset);
       
   810 
       
   811     // Verify both commsdat and UI widget
       
   812     subVerifyString(
       
   813         CMManagerShim::CmIPNameServer2,
       
   814         mTestViewAdvanced->mIpv4DnsAddress2,
       
   815         result);
       
   816     
       
   817     // Verify user defined address is in use
       
   818     subVerifyBool(
       
   819         CMManagerShim::CmIPDNSAddrFromServer,
       
   820         false);
       
   821 }
       
   822 
       
   823 /**
       
   824  * Test data for IPv4 DNS address change test case.
       
   825  */
       
   826 void TestCpWlanApPlugin::tcChangeIpv4DnsAddress_data()
       
   827 {
       
   828     QTest::addColumn<QString>("string");
       
   829     QTest::addColumn<QString>("result");
       
   830   
       
   831     QTest::newRow("too long")
       
   832         << "255.255.255.2551234"
       
   833         << "255.255.255.255";
       
   834     QTest::newRow("normal")
       
   835         << "192.168.0.1"
       
   836         << "192.168.0.1";
       
   837 }
       
   838 
       
   839 /**
       
   840  * Tests invalid IPv4 DNS address.
       
   841  */
       
   842 void TestCpWlanApPlugin::tcInvalidIpv4DnsAddress()
       
   843 {
       
   844     QString previous = 
       
   845         mTestViewAdvanced->mIpv4DnsAddress1->contentWidgetData("text").toString();
       
   846     
       
   847     HbAutoTest::mouseClick(mMainWindow, mIpv4PrimaryDnsAddressWidget);
       
   848     
       
   849     // Erase old string
       
   850     QString text = mTestViewAdvanced->mIpv4DnsAddress1->contentWidgetData("text").toString();
       
   851     subClearLineEdit(text.size());
       
   852     
       
   853     // Enter new string
       
   854     HbAutoTest::keyClicks(mMainWindow, "999.999.999.999", 0, waitTime);
       
   855 
       
   856     HbAutoTest::mouseClick(mMainWindow, mIpv4PrimaryDnsAddressWidget, exitEditorOffset);
       
   857 
       
   858     QTest::qWait(100);
       
   859     // Dismiss messagebox
       
   860     HbAutoTest::mouseClick(
       
   861         mMainWindow,
       
   862         mTestViewAdvanced->mMessageBox.data(),
       
   863         messageBoxOkButtonOffset);
       
   864     
       
   865     // Verify both commsdat and UI widget
       
   866     subVerifyString(
       
   867         CMManagerShim::CmIPNameServer1,
       
   868         mTestViewAdvanced->mIpv4DnsAddress1,
       
   869         previous);
       
   870 }
       
   871 
       
   872 /**
       
   873  * Scrolls the tested view to the top.
       
   874  */
       
   875 void TestCpWlanApPlugin::tcScrollToTop()
       
   876 {
       
   877     subScrollToTop();
       
   878 }
       
   879 
       
   880 /**
       
   881  * Collapses the IPv4 settings group.
       
   882  */
       
   883 void TestCpWlanApPlugin::tcCollapseIpv4Settings()
       
   884 {
       
   885     HbAutoTest::mouseClick(mMainWindow, mTestViewAdvanced, ipv4Group);
       
   886 }
       
   887 
       
   888 /**
       
   889  * Expands the IPv6 settings group and gets UI widget pointers.
       
   890  */
       
   891 void TestCpWlanApPlugin::tcExpandIpv6SettingsAndGetUiWidgets()
       
   892 {
       
   893     HbAutoTest::mouseClick(mMainWindow, mTestViewAdvanced, ipv6Group);
       
   894 
       
   895     QTest::qWait(500);
       
   896     
       
   897     subGetAdvancedUiWidgets(1);
       
   898 }
       
   899 
       
   900 /**
       
   901  * Tests enabling of automatic IPv6 DNS addresses.
       
   902  */
       
   903 void TestCpWlanApPlugin::tcEnableAutomaticIpv6DnsAddress()
       
   904 {
       
   905     // Enable automatic IPv6 DNS address
       
   906     QPointF automaticPointOffset = comboBoxFirstItemOffset;
       
   907     HbAutoTest::mouseClick(mMainWindow, mIpv6DnsAddressAutomaticWidget);
       
   908     QTest::qWait(100);
       
   909     HbAutoTest::mouseClick(mMainWindow, mIpv6DnsAddressAutomaticWidget, automaticPointOffset, 100);
       
   910     QTest::qWait(100);
       
   911     subVerifyBool(
       
   912         CMManagerShim::CmIP6DNSAddrFromServer,
       
   913         true);
       
   914     
       
   915     // Ensure that editing the IP address is not allowed
       
   916     HbAutoTest::mouseClick(mMainWindow, mIpv6PrimaryDnsAddressWidget);
       
   917     HbAutoTest::mouseClick(mMainWindow, mIpv6SecondaryDnsAddressWidget);
       
   918 }
       
   919 
       
   920 /**
       
   921  * Tests enabling of well-known IPv6 DNS addresses.
       
   922  */
       
   923 void TestCpWlanApPlugin::tcEnableWellKnownIpv6DnsAddress()
       
   924 {
       
   925     // Enable well-known IPv6 DNS address
       
   926     QPointF wellKnownPointOffset = comboBoxFirstItemOffset + comboBoxItemOffset;
       
   927     HbAutoTest::mouseClick(mMainWindow, mIpv6DnsAddressAutomaticWidget);
       
   928     QTest::qWait(100);
       
   929     HbAutoTest::mouseClick(mMainWindow, mIpv6DnsAddressAutomaticWidget, wellKnownPointOffset, 100);
       
   930     QTest::qWait(100);
       
   931     subVerifyBool(
       
   932         CMManagerShim::CmIP6DNSAddrFromServer,
       
   933         false);
       
   934     subVerifyString(
       
   935         CMManagerShim::CmIP6NameServer1,
       
   936         mTestViewAdvanced->mIpv6DnsAddress1,
       
   937         "fec0:000:0000:ffff::1");
       
   938     subVerifyString(
       
   939         CMManagerShim::CmIP6NameServer2,
       
   940         mTestViewAdvanced->mIpv6DnsAddress2,
       
   941         "fec0:000:0000:ffff::2");
       
   942     
       
   943     // Ensure that editing the IP address is not allowed
       
   944     HbAutoTest::mouseClick(mMainWindow, mIpv6PrimaryDnsAddressWidget);
       
   945     HbAutoTest::mouseClick(mMainWindow, mIpv6SecondaryDnsAddressWidget);
       
   946 }
       
   947 
       
   948 /**
       
   949  * Tests enabling of user defined IPv6 DNS addresses.
       
   950  */
       
   951 void TestCpWlanApPlugin::tcEnableUserDefinedIpv6DnsAddress()
       
   952 {
       
   953     // Select user defined IPv6 DNS address
       
   954     QPointF userDefinedPointOffset = comboBoxFirstItemOffset + comboBoxItemOffset * 2;
       
   955     //QPointF userDefinedPointOffset(0, 160);
       
   956     HbAutoTest::mouseClick(mMainWindow, mIpv6DnsAddressAutomaticWidget);
       
   957     QTest::qWait(100);
       
   958     HbAutoTest::mouseClick(mMainWindow, mIpv6DnsAddressAutomaticWidget, userDefinedPointOffset, 100);
       
   959     QTest::qWait(100);
       
   960     // Can't verify the setting from CommsDat here, because CMManager will
       
   961     // set it back to true if no valid IP address is yet defined. The flag
       
   962     // is verified in tcChangeIpv4DnsAddress().
       
   963 }
       
   964 
       
   965 /**
       
   966  * Tests changing of IPv6 DNS addresses.
       
   967  */
       
   968 void TestCpWlanApPlugin::tcChangeIpv6DnsAddress()
       
   969 {
       
   970     QFETCH(QString, string);
       
   971     QFETCH(QString, result);
       
   972     
       
   973     // Primary DNS address
       
   974     HbAutoTest::mouseClick(mMainWindow, mIpv6PrimaryDnsAddressWidget);
       
   975     
       
   976     // Erase old string
       
   977     QString text = mTestViewAdvanced->mIpv6DnsAddress1->contentWidgetData("text").toString();
       
   978     subClearLineEdit(text.size());
       
   979     
       
   980     // Enter new string
       
   981     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
       
   982 
       
   983     HbAutoTest::mouseClick(mMainWindow, mIpv6PrimaryDnsAddressWidget, exitEditorOffset);
       
   984 
       
   985     // Verify both commsdat and UI widget
       
   986     subVerifyString(
       
   987         CMManagerShim::CmIP6NameServer1,
       
   988         mTestViewAdvanced->mIpv6DnsAddress1,
       
   989         result);
       
   990     
       
   991     // Secondary DNS address
       
   992     HbAutoTest::mouseClick(mMainWindow, mIpv6SecondaryDnsAddressWidget);
       
   993     
       
   994     // Erase old string
       
   995     text = mTestViewAdvanced->mIpv6DnsAddress2->contentWidgetData("text").toString();
       
   996     subClearLineEdit(text.size());
       
   997     
       
   998     // Enter new string
       
   999     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
       
  1000 
       
  1001     HbAutoTest::mouseClick(mMainWindow, mIpv6SecondaryDnsAddressWidget, exitEditorOffset);
       
  1002 
       
  1003     // Verify both commsdat and UI widget
       
  1004     subVerifyString(
       
  1005         CMManagerShim::CmIP6NameServer2,
       
  1006         mTestViewAdvanced->mIpv6DnsAddress2,
       
  1007         result);
       
  1008     
       
  1009     // Verify user defined address is in use
       
  1010     subVerifyBool(
       
  1011         CMManagerShim::CmIP6DNSAddrFromServer,
       
  1012         false);
       
  1013 }
       
  1014 
       
  1015 /**
       
  1016  * Test data for IPv6 DNS address change test case.
       
  1017  */
       
  1018 void TestCpWlanApPlugin::tcChangeIpv6DnsAddress_data()
       
  1019 {
       
  1020     QTest::addColumn<QString>("string");
       
  1021     QTest::addColumn<QString>("result");
       
  1022   
       
  1023     QTest::newRow("normal")
       
  1024         << "2001:db8:85a3::8a2e:370:7334"
       
  1025         << "2001:db8:85a3:0:0:8a2e:370:7334";
       
  1026 }
       
  1027 
       
  1028 /**
       
  1029  * Tests invalid IPv6 DNS address.
       
  1030  */
       
  1031 void TestCpWlanApPlugin::tcInvalidIpv6DnsAddress()
       
  1032 {
       
  1033     QString previous = 
       
  1034         mTestViewAdvanced->mIpv6DnsAddress1->contentWidgetData("text").toString();
       
  1035     
       
  1036     HbAutoTest::mouseClick(mMainWindow, mIpv6PrimaryDnsAddressWidget);
       
  1037     
       
  1038     // Erase old string
       
  1039     QString text = mTestViewAdvanced->mIpv6DnsAddress1->contentWidgetData("text").toString();
       
  1040     subClearLineEdit(text.size());
       
  1041     
       
  1042     // Enter new string
       
  1043     HbAutoTest::keyClicks(mMainWindow, "abcdef:fedcba", 0, waitTime);
       
  1044 
       
  1045     HbAutoTest::mouseClick(mMainWindow, mIpv6PrimaryDnsAddressWidget, exitEditorOffset);
       
  1046 
       
  1047     QTest::qWait(100);
       
  1048     // Dismiss messagebox
       
  1049     HbAutoTest::mouseClick(
       
  1050         mMainWindow,
       
  1051         mTestViewAdvanced->mMessageBox.data(),
       
  1052         messageBoxOkButtonOffset);
       
  1053     
       
  1054     // Verify both commsdat and UI widget
       
  1055     subVerifyString(
       
  1056         CMManagerShim::CmIP6NameServer1,
       
  1057         mTestViewAdvanced->mIpv6DnsAddress1,
       
  1058         previous);
       
  1059 }
       
  1060 
       
  1061 /**
       
  1062  * Collapses the IPv6 settings group.
       
  1063  */
       
  1064 void TestCpWlanApPlugin::tcCollapseIpv6Settings()
       
  1065 {
       
  1066     HbAutoTest::mouseClick(mMainWindow, mTestViewAdvanced, ipv6Group);
       
  1067 }
       
  1068 
       
  1069 /**
       
  1070  * Expands the proxy settings group and gets UI widget pointers.
       
  1071  */
       
  1072 void TestCpWlanApPlugin::tcExpandProxySettingsAndGetUiWidgets()
       
  1073 {
       
  1074     HbAutoTest::mouseClick(mMainWindow, mTestViewAdvanced, proxyGroup);
       
  1075 
       
  1076     QTest::qWait(500);
       
  1077     
       
  1078     subGetAdvancedUiWidgets(2);
       
  1079 }
       
  1080 
       
  1081 /**
       
  1082  * Tests changing of proxy server address.
       
  1083  */
       
  1084 void TestCpWlanApPlugin::tcChangeProxyServerAddress()
       
  1085 {
       
  1086     QFETCH(QString, string);
       
  1087     QFETCH(QString, result);
       
  1088     
       
  1089     HbAutoTest::mouseClick(mMainWindow, mProxyServerAddressWidget);
       
  1090     
       
  1091     // Erase old string
       
  1092     QString text = mTestViewAdvanced->mProxyServer->contentWidgetData("text").toString();
       
  1093     subClearLineEdit(text.size());
       
  1094     
       
  1095     // Enter new string
       
  1096     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
       
  1097 
       
  1098     HbAutoTest::mouseClick(mMainWindow, mProxyServerAddressWidget, exitEditorOffset);
       
  1099 
       
  1100     QTest::qWait(100);
       
  1101     
       
  1102     // Verify both commsdat and UI widget
       
  1103     subVerifyString(
       
  1104         CMManagerShim::CmProxyServerName,
       
  1105         mTestViewAdvanced->mProxyServer,
       
  1106         result);
       
  1107     // Verify user defined address flag is set correctly
       
  1108     if (result.isEmpty()) {
       
  1109         subVerifyBool(
       
  1110             CMManagerShim::CmProxyUsageEnabled,
       
  1111             false);
       
  1112     } else {
       
  1113         subVerifyBool(
       
  1114             CMManagerShim::CmProxyUsageEnabled,
       
  1115             true);
       
  1116     }
       
  1117 }
       
  1118 
       
  1119 /**
       
  1120  * Test data for proxy server address change test case.
       
  1121  */
       
  1122 void TestCpWlanApPlugin::tcChangeProxyServerAddress_data()
       
  1123 {
       
  1124     QTest::addColumn<QString>("string");
       
  1125     QTest::addColumn<QString>("result");
       
  1126   
       
  1127     QTest::newRow("long")
       
  1128         << "http://developer.symbian.org/main/documentation/reference/s^3/doc_source/AboutSymbianOSLibrary9.6/index.html"
       
  1129         << "http://developer.symbian.org/main/documentation/reference/s^3/doc_source/AboutSymbianOSLibrary9.6/index.html";
       
  1130     QTest::newRow("empty")
       
  1131         << ""
       
  1132         << "";
       
  1133     QTest::newRow("basic") // last one should always fit on one line in UI
       
  1134         << "http://www.symbian.org/"
       
  1135         << "http://www.symbian.org/";
       
  1136 }
       
  1137 
       
  1138 /**
       
  1139  * Tests changing of proxy port number.
       
  1140  */
       
  1141 void TestCpWlanApPlugin::tcChangeProxyPortNumber()
       
  1142 {
       
  1143     QFETCH(QString, string);
       
  1144     QFETCH(QString, result);
       
  1145     
       
  1146     HbAutoTest::mouseClick(mMainWindow, mProxyPortNumberWidget);
       
  1147     
       
  1148     // Erase old string
       
  1149     QString text = mTestViewAdvanced->mProxyPort->contentWidgetData("text").toString();
       
  1150     subClearLineEdit(text.size());
       
  1151     
       
  1152     // Enter new string
       
  1153     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
       
  1154 
       
  1155     HbAutoTest::mouseClick(mMainWindow, mProxyPortNumberWidget, exitEditorOffset);
       
  1156 
       
  1157     QTest::qWait(100);
       
  1158 
       
  1159     // Verify both commsdat and UI widget
       
  1160     subVerifyUint(
       
  1161         CMManagerShim::CmProxyPortNumber,
       
  1162         result.toInt());
       
  1163     QCOMPARE(
       
  1164         mTestViewAdvanced->mProxyPort->contentWidgetData("text").toInt(),
       
  1165         result.toInt());
       
  1166 }
       
  1167 
       
  1168 /**
       
  1169  * Test data for proxy port number change test case.
       
  1170  */
       
  1171 void TestCpWlanApPlugin::tcChangeProxyPortNumber_data()
       
  1172 {
       
  1173     QTest::addColumn<QString>("string");
       
  1174     QTest::addColumn<QString>("result");
       
  1175   
       
  1176     QTest::newRow("basic")
       
  1177         << "8080"
       
  1178         << "8080";
       
  1179     QTest::newRow("too long")
       
  1180         << "1234567890"
       
  1181         << "12345";
       
  1182     QTest::newRow("zero")
       
  1183         << "0"
       
  1184         << "";
       
  1185     QTest::newRow("empty")
       
  1186         << ""
       
  1187         << "";
       
  1188 }
       
  1189 
       
  1190 /**
       
  1191  * Tests invalid proxy port number.
       
  1192  */
       
  1193 void TestCpWlanApPlugin::tcInvalidProxyPortNumber()
       
  1194 {
       
  1195     int previous = 
       
  1196         mTestViewAdvanced->mProxyPort->contentWidgetData("text").toInt();
       
  1197     
       
  1198     HbAutoTest::mouseClick(mMainWindow, mProxyPortNumberWidget);
       
  1199     
       
  1200     // Erase old string
       
  1201     QString text = mTestViewAdvanced->mProxyPort->contentWidgetData("text").toString();
       
  1202     subClearLineEdit(text.size());
       
  1203     
       
  1204     // Enter new string
       
  1205     HbAutoTest::keyClicks(mMainWindow, "65536", 0, waitTime);
       
  1206 
       
  1207     HbAutoTest::mouseClick(mMainWindow, mProxyPortNumberWidget, exitEditorOffset);
       
  1208 
       
  1209     QTest::qWait(100);
       
  1210     // Dismiss messagebox
       
  1211     HbAutoTest::mouseClick(
       
  1212         mMainWindow,
       
  1213         mTestViewAdvanced->mMessageBox.data(),
       
  1214         messageBoxOkButtonOffset);
       
  1215     
       
  1216     // Verify both commsdat and UI widget
       
  1217     subVerifyUint(
       
  1218         CMManagerShim::CmProxyPortNumber,
       
  1219         previous);
       
  1220     QCOMPARE(
       
  1221         mTestViewAdvanced->mProxyPort->contentWidgetData("text").toInt(),
       
  1222         previous);
       
  1223 }
       
  1224 
       
  1225 /**
       
  1226  * Collapses the proxy settings group.
       
  1227  */
       
  1228 void TestCpWlanApPlugin::tcCollapseProxySettings()
       
  1229 {
       
  1230     HbAutoTest::mouseClick(mMainWindow, mTestViewAdvanced, proxyGroup);
       
  1231 }
       
  1232 
       
  1233 /**
       
  1234  * Returns from advanced settings view.
       
  1235  */
       
  1236 void TestCpWlanApPlugin::tcCloseAdvancedSettingsView()
       
  1237 {
       
  1238     // Return from advanced settings view
       
  1239     subClickWidget("HbNavigationButton");
       
  1240 }
       
  1241 
       
  1242 // -----------------------------------------------------------------------------
       
  1243 // SUB TEST CASES
       
  1244 // -----------------------------------------------------------------------------
       
  1245 
       
  1246 /**
       
  1247  * Gets UI widget pointers.
       
  1248  */
       
  1249 void TestCpWlanApPlugin::subGetUiWidgets()
       
  1250 {
       
  1251     HbModelIterator iterator(mTestView->mModel);
       
  1252     
       
  1253     // Get "Access point settings" group item
       
  1254     QModelIndex apGroupIndex = iterator.index(0);
       
  1255     
       
  1256     // Get UI widgets
       
  1257     mConnectionNameWidget = subGetWidgetByIndex(
       
  1258         mTestView->mForm,
       
  1259         iterator.index(0, apGroupIndex));
       
  1260     mWlanNetworkNameWidget = subGetWidgetByIndex(
       
  1261         mTestView->mForm,
       
  1262         iterator.index(1, apGroupIndex));
       
  1263     mNetworkStatusWidget = subGetWidgetByIndex(
       
  1264         mTestView->mForm,
       
  1265         iterator.index(2, apGroupIndex));
       
  1266     mNetworkModeWidget = subGetWidgetByIndex(
       
  1267         mTestView->mForm,
       
  1268         iterator.index(3, apGroupIndex));
       
  1269     mSecurityModeWidget = subGetWidgetByIndex(
       
  1270         mTestView->mForm,
       
  1271         iterator.index(4, apGroupIndex));
       
  1272     mHomepageWidget = subGetWidgetByIndex(
       
  1273         mTestView->mForm,
       
  1274         iterator.index(5, apGroupIndex));
       
  1275 }
       
  1276 
       
  1277 /**
       
  1278  * Gets advanced settings view UI widget pointers by group index.
       
  1279  */
       
  1280 void TestCpWlanApPlugin::subGetAdvancedUiWidgets(
       
  1281     uint index)
       
  1282 {
       
  1283     // Get the group item
       
  1284     HbModelIterator iterator(mTestViewAdvanced->mModel);
       
  1285     QModelIndex groupIndex = iterator.index(index);
       
  1286     
       
  1287     // Get UI widgets
       
  1288     if (index == 0) {
       
  1289         // IPv4 settings group
       
  1290         mIpv4AddressAutomaticWidget = subGetWidgetByIndex(
       
  1291             mTestViewAdvanced->mForm,
       
  1292             iterator.index(0, groupIndex));
       
  1293         mIpv4AddressWidget = subGetWidgetByIndex(
       
  1294             mTestViewAdvanced->mForm,
       
  1295             iterator.index(1, groupIndex));
       
  1296         mIpv4SubnetMaskWidget = subGetWidgetByIndex(
       
  1297             mTestViewAdvanced->mForm,
       
  1298             iterator.index(2, groupIndex));
       
  1299         mIpv4GatewayWidget = subGetWidgetByIndex(
       
  1300             mTestViewAdvanced->mForm,
       
  1301             iterator.index(3, groupIndex));
       
  1302         mIpv4DnsAddressAutomaticWidget = subGetWidgetByIndex(
       
  1303             mTestViewAdvanced->mForm,
       
  1304             iterator.index(4, groupIndex));
       
  1305         mIpv4PrimaryDnsAddressWidget = subGetWidgetByIndex(
       
  1306             mTestViewAdvanced->mForm,
       
  1307             iterator.index(5, groupIndex));
       
  1308         mIpv4SecondaryDnsAddressWidget = subGetWidgetByIndex(
       
  1309             mTestViewAdvanced->mForm,
       
  1310             iterator.index(6, groupIndex));
       
  1311     } else if (index == 1) {
       
  1312         // IPv6 settings group
       
  1313         mIpv6DnsAddressAutomaticWidget = subGetWidgetByIndex(
       
  1314             mTestViewAdvanced->mForm,
       
  1315             iterator.index(0, groupIndex));
       
  1316         mIpv6PrimaryDnsAddressWidget = subGetWidgetByIndex(
       
  1317             mTestViewAdvanced->mForm,
       
  1318             iterator.index(1, groupIndex));
       
  1319         mIpv6SecondaryDnsAddressWidget = subGetWidgetByIndex(
       
  1320             mTestViewAdvanced->mForm,
       
  1321             iterator.index(2, groupIndex));    
       
  1322     } else {
       
  1323         // Proxy settings group
       
  1324         mProxyServerAddressWidget = subGetWidgetByIndex(
       
  1325             mTestViewAdvanced->mForm,
       
  1326             iterator.index(0, groupIndex));
       
  1327         mProxyPortNumberWidget = subGetWidgetByIndex(
       
  1328             mTestViewAdvanced->mForm,
       
  1329             iterator.index(1, groupIndex));
       
  1330     }
       
  1331 }
       
  1332 
       
  1333 /**
       
  1334  * Gets an UI widget from HbDataForm by index. 
       
  1335  */
       
  1336 HbWidget *TestCpWlanApPlugin::subGetWidgetByIndex(
       
  1337     HbDataForm *form,
       
  1338     const QModelIndex &index)
       
  1339 {
       
  1340     HbDataFormViewItem *viewItem = qobject_cast<HbDataFormViewItem *>
       
  1341         (form->itemByIndex(index));
       
  1342     HbWidget *widget = viewItem->dataItemContentWidget();
       
  1343     //QString widgetClassName(widget->metaObject()->className());
       
  1344     //qDebug() << widgetClassName;
       
  1345     return widget;
       
  1346 }
       
  1347 
       
  1348 /**
       
  1349  * Verifies that given string is correctly stored in CommsDat and shown on UI. 
       
  1350  */
       
  1351 void TestCpWlanApPlugin::subVerifyString(
       
  1352     CMManagerShim::ConnectionMethodAttribute attribute,
       
  1353     HbDataFormModelItem *item,
       
  1354     QString expected)
       
  1355 {
       
  1356     // Read attribute value from CommsDat
       
  1357     QScopedPointer<CmManagerShim> cmManager(new CmManagerShim);
       
  1358     QScopedPointer<CmConnectionMethodShim> connectionMethod( 
       
  1359         cmManager->connectionMethod(testApId));
       
  1360     QString commsdat = connectionMethod->getStringAttribute(attribute);
       
  1361 
       
  1362     QCOMPARE(commsdat, expected);
       
  1363 
       
  1364     // Get value from UI widget
       
  1365     QString widget = item->contentWidgetData("text").toString();
       
  1366 
       
  1367     QCOMPARE(widget, expected);
       
  1368 }
       
  1369 
       
  1370 /**
       
  1371  * Verifies that given attribute contains expected integer value in CommsDat. 
       
  1372  */
       
  1373 void TestCpWlanApPlugin::subVerifyUint(
       
  1374     CMManagerShim::ConnectionMethodAttribute attribute,
       
  1375     uint expected)
       
  1376 {
       
  1377     // Read attribute value from CommsDat
       
  1378     QScopedPointer<CmManagerShim> cmManager(new CmManagerShim);
       
  1379     QScopedPointer<CmConnectionMethodShim> connectionMethod( 
       
  1380         cmManager->connectionMethod(testApId));
       
  1381     uint commsdat = connectionMethod->getIntAttribute(attribute);
       
  1382     
       
  1383     QCOMPARE(commsdat, expected);
       
  1384 }
       
  1385 
       
  1386 /**
       
  1387  * Verifies that WLAN network status in CommsDat is correct.
       
  1388  */
       
  1389 void TestCpWlanApPlugin::subVerifyNetworkStatus(
       
  1390     NetworkStatus expected)
       
  1391 {
       
  1392     // Read attribute value from CommsDat
       
  1393     QScopedPointer<CmManagerShim> cmManager(new CmManagerShim);
       
  1394     QScopedPointer<CmConnectionMethodShim> connectionMethod( 
       
  1395         cmManager->connectionMethod(testApId));
       
  1396     bool commsdatScanSsid = connectionMethod->getBoolAttribute(
       
  1397         CMManagerShim::WlanScanSSID);
       
  1398     
       
  1399     if (expected == HiddenStatus) {
       
  1400         QVERIFY(commsdatScanSsid == true);
       
  1401     } else if (expected == PublicStatus) {
       
  1402         QVERIFY(commsdatScanSsid == false);
       
  1403     } else {
       
  1404         Q_ASSERT(false);
       
  1405     }
       
  1406 }
       
  1407 
       
  1408 /**
       
  1409  * Clears a HbLineEdit.
       
  1410  */
       
  1411 void TestCpWlanApPlugin::subClearLineEdit(
       
  1412     uint length)
       
  1413 {
       
  1414     // Move cursor to end of string
       
  1415     //HbAutoTest::keyClick(mMainWindow, Qt::Key_End, Qt::ControlModifier, waitTime); // doesn't seem to do anything? 
       
  1416     HbAutoTest::keyClick(mMainWindow, Qt::Key_Down, 0, waitTime);
       
  1417     HbAutoTest::keyClick(mMainWindow, Qt::Key_Down, 0, waitTime);
       
  1418     HbAutoTest::keyClick(mMainWindow, Qt::Key_Down, 0, waitTime);
       
  1419     for (int i=0; i<25; i++) {
       
  1420         HbAutoTest::keyClick(mMainWindow, Qt::Key_Right, 0, waitTime);
       
  1421     }
       
  1422     // Erase string
       
  1423     for (int i=0; i<length; i++) {
       
  1424         HbAutoTest::keyClick(mMainWindow, Qt::Key_Backspace, 0, waitTime);
       
  1425     }
       
  1426 }
       
  1427 
       
  1428 /**
       
  1429  * Creates the settings view and shows it.
       
  1430  */
       
  1431 void TestCpWlanApPlugin::subCreateSettingsView(uint connectionMethodId)
       
  1432 {
       
  1433     // Create settings view
       
  1434     HbView *view = mPlugin->createSettingView(connectionMethodId);
       
  1435     QVERIFY(view != NULL);
       
  1436     
       
  1437     // Display the view
       
  1438     mMainWindow->addView(view);
       
  1439     mMainWindow->setCurrentView(view);
       
  1440     // Store pointer to settings view class
       
  1441     mTestView = static_cast<CpWlanApView *>(view);    
       
  1442 }
       
  1443 
       
  1444 /**
       
  1445  * Clicks a widget currently on UI by class name.
       
  1446  */
       
  1447 void TestCpWlanApPlugin::subClickWidget(const QString &name)
       
  1448 {
       
  1449     QList<QGraphicsItem *> itemList = mMainWindow->scene()->items();
       
  1450 
       
  1451     QGraphicsItem *target = 0;
       
  1452     foreach (QGraphicsItem* item, itemList) {
       
  1453         if (item->isWidget()) {
       
  1454             QString widgetClassName(static_cast<QGraphicsWidget*>(item)->metaObject()->className());
       
  1455             //qDebug() << widgetClassName;
       
  1456             
       
  1457             if (widgetClassName == name) {
       
  1458                 target = item;
       
  1459                 break;
       
  1460             }
       
  1461         }
       
  1462     }
       
  1463 
       
  1464     Q_ASSERT(target);
       
  1465     HbAutoTest::mouseClick(mMainWindow, static_cast<HbWidget *>(target));
       
  1466 }
       
  1467 
       
  1468 /**
       
  1469  * Returns the middle point of a widget.
       
  1470  */
       
  1471 QPointF TestCpWlanApPlugin::subMiddlePointOfWidget(const HbWidget *widget)
       
  1472 {
       
  1473     QRectF widgetRect = widget->rect();
       
  1474     QRectF widgetSceneRect = widget->mapRectToScene(widgetRect);
       
  1475     qreal middleX = ((widgetSceneRect.right() - widgetSceneRect.left()) / 2) + widgetSceneRect.left();
       
  1476     qreal middleY = ((widgetSceneRect.bottom() - widgetSceneRect.top()) / 2) + widgetSceneRect.top();
       
  1477     
       
  1478     return QPointF(middleX, middleY);
       
  1479 }
       
  1480 
       
  1481 /**
       
  1482  * Verifies that given attribute contains expected boolean value in CommsDat. 
       
  1483  */
       
  1484 void TestCpWlanApPlugin::subVerifyBool(
       
  1485     CMManagerShim::ConnectionMethodAttribute attribute,
       
  1486     bool expected)
       
  1487 {
       
  1488     // Read attribute value from CommsDat
       
  1489     QScopedPointer<CmManagerShim> cmManager(new CmManagerShim);
       
  1490     QScopedPointer<CmConnectionMethodShim> connectionMethod( 
       
  1491         cmManager->connectionMethod(testApId));
       
  1492     bool commsdat = connectionMethod->getBoolAttribute(attribute);
       
  1493     
       
  1494     QCOMPARE(commsdat, expected);
       
  1495 }
       
  1496 
       
  1497 /**
       
  1498  * Scrolls the tested view to the bottom.
       
  1499  */
       
  1500 void TestCpWlanApPlugin::subScrollToBottom()
       
  1501 {
       
  1502     // Scroll to the bottom of the view
       
  1503     HbAutoTest::mousePress(mMainWindow, mTestView, scrollMiddle);
       
  1504     QTest::qWait(1000);
       
  1505     HbAutoTest::mouseMove(mMainWindow, mTestView, scrollTop);
       
  1506     HbAutoTest::mouseRelease(mMainWindow, mTestView, scrollTop);
       
  1507 }
       
  1508 
       
  1509 /**
       
  1510  * Scrolls the tested view to the top.
       
  1511  */
       
  1512 void TestCpWlanApPlugin::subScrollToTop()
       
  1513 {
       
  1514     // Scroll to the top of the view
       
  1515     HbAutoTest::mousePress(mMainWindow, mTestView, scrollMiddle);
       
  1516     QTest::qWait(1000);
       
  1517     HbAutoTest::mouseMove(mMainWindow, mTestView, scrollBottom);
       
  1518     HbAutoTest::mouseRelease(mMainWindow, mTestView, scrollBottom);
       
  1519 }