cmmanager/cppacketdataapplugin/tsrc/ut/testcppacketdataapplugin.cpp
branchGCC_SURGE
changeset 49 faa5ef4f80da
parent 47 cb7afde124a3
equal deleted inserted replaced
39:f10336de0cd6 49:faa5ef4f80da
    22 #include <HbRadioButtonList>
    22 #include <HbRadioButtonList>
    23 #include <HbAction>
    23 #include <HbAction>
    24 #include <HbDataForm>
    24 #include <HbDataForm>
    25 #include <HbDataFormModel>
    25 #include <HbDataFormModel>
    26 #include <HbDataFormModelItem>
    26 #include <HbDataFormModelItem>
       
    27 #include <HbDataFormViewItem>
       
    28 #include <HbModelIterator>
       
    29 #include <HbComboBox>
    27 #include <QtTest/QtTest>
    30 #include <QtTest/QtTest>
       
    31 #include <etelpckt.h>
    28 #include <cpbearerapplugininterface.h>
    32 #include <cpbearerapplugininterface.h>
    29 #include <cmmanager_shim.h>
    33 #include <cmmanager_shim.h>
    30 #include <cmconnectionmethod_shim.h>
    34 #include <cmconnectionmethod_shim.h>
    31 
    35 
    32 #include "cppacketdataapview.h"
    36 #include "cppacketdataapview.h"
       
    37 #include "cppacketdataapadvancedview.h"
    33 
    38 
    34 #include "hbautotest.h"
    39 #include "hbautotest.h"
    35 #include "testcppacketdataapplugin.h"
    40 #include "testcppacketdataapplugin.h"
    36 
    41 
    37 // -----------------------------------------------------------------------------
    42 // -----------------------------------------------------------------------------
    48 
    53 
    49 // Time to wait before continuing after an UI step
    54 // Time to wait before continuing after an UI step
    50 static const int waitTime = 10;
    55 static const int waitTime = 10;
    51 
    56 
    52 // UI coordinates
    57 // UI coordinates
    53 static const QPoint sideTop(350, 60);
    58 static const QPoint scrollMiddle(350, 280);
    54 static const QPoint scrollStart(350, 300);
    59 static const QPoint scrollTop(350, 30);
    55 static const QPoint scrollStop(350, 240);
    60 static const QPoint scrollBottom(350, 540);
    56 
    61 
    57 static const QPoint messageBoxOkButton(170, 320);
    62 // Use positive offset if dropdown opens under the combobox
    58 
    63 static const QPoint comboBoxFirstItemOffset(80, 75);
    59 // These are measured when view is scrolled to top
    64 static const QPoint comboBoxItemOffset(0, 51);
    60 static const QPoint connectionNameLineEdit(330, 110);
    65 // Use negative offset if dropdown opens above the combobox
    61 
    66 static const QPoint comboBoxFirstItemNegativeOffset(80, -29);
    62 static const QPoint accessPointNameLineEdit(330, 190);
    67 static const QPoint comboBoxItemNegativeOffset(0, -51);
    63 
    68 
    64 static const QPoint userNameLineEdit(330, 265);
    69 static const QPoint exitEditorOffset(-10, -20);
    65 
    70 
    66 // These are measured when view is scrolled to bottom
    71 static const QPoint messageBoxOkButtonOffset(160, 140);
    67 static const QPoint passwordPromptCheckbox(50, 295);
    72 
    68 static const QPoint passwordLineEdit(330, 380);
    73 // Advanced settings groups
    69 
    74 static const QPoint ipGroup(160, 10);
    70 static const QPoint authenticationComboBox(175, 470);
    75 static const QPoint proxyGroup(160, 60);
    71 static const QPoint authenticationSecure(100, 420);
    76 
    72 static const QPoint authenticationNormal(100, 365);
    77 // Test strings
    73 
    78 static const QString tooLongUserName =
    74 static const QPoint homepageLineEdit(330, 555);
    79     "too long name 123456789012345678901234567890123456THISISEXTRA";
       
    80 static const QString truncatedUserName =
       
    81     "too long name 123456789012345678901234567890123456";
    75 
    82 
    76 // -----------------------------------------------------------------------------
    83 // -----------------------------------------------------------------------------
    77 // FRAMEWORK FUNCTIONS
    84 // FRAMEWORK FUNCTIONS
    78 // -----------------------------------------------------------------------------
    85 // -----------------------------------------------------------------------------
    79 
    86 
   109     //mMainWindow = new HbMainWindow;
   116     //mMainWindow = new HbMainWindow;
   110     mMainWindow->show();
   117     mMainWindow->show();
   111     
   118     
   112     // Load plugin
   119     // Load plugin
   113     QDir dir(pluginDir);
   120     QDir dir(pluginDir);
   114     QPluginLoader loader(dir.absoluteFilePath(pluginName));
   121     mPluginLoader = new QPluginLoader(dir.absoluteFilePath(pluginName));
   115     mPlugin = qobject_cast<CpBearerApPluginInterface *>(loader.instance());
   122     mPlugin = qobject_cast<CpBearerApPluginInterface *>(mPluginLoader->instance());
   116     QVERIFY(mPlugin != NULL);
   123     QVERIFY(mPlugin != NULL);
   117     
   124     
   118     // Verify plugin bearer type
   125     // Verify plugin bearer type
   119     QVERIFY(mPlugin->bearerType() == CMManagerShim::BearerTypePacketData);
   126     QVERIFY(mPlugin->bearerType() == CMManagerShim::BearerTypePacketData);
   120     
   127     
       
   128     // Write initial settings to CommsDat
       
   129     subInitializeCommsDat();
       
   130     
   121     // Create packet data settings view (connection method ID given)
   131     // Create packet data settings view (connection method ID given)
   122     subCreateSettingsView(testApId);
   132     subCreateSettingsView(testApId);
       
   133     
       
   134     subGetUiWidgets();
   123 }
   135 }
   124 
   136 
   125 /**
   137 /**
   126  * This function is be called after the last test case was executed.
   138  * This function is be called after the last test case was executed.
   127  */
   139  */
   128 void TestCpPacketDataApPlugin::cleanupTestCase()
   140 void TestCpPacketDataApPlugin::cleanupTestCase()
   129 {
   141 {
   130     delete mMainWindow;
   142     delete mMainWindow;
   131     mMainWindow = 0;
   143     mMainWindow = 0;
       
   144     
       
   145     // Force unloading of plugin
       
   146     mPluginLoader->unload();
       
   147     delete mPluginLoader;
       
   148     mPluginLoader = 0;
   132 }
   149 }
   133 
   150 
   134 /**
   151 /**
   135  * This function is be called before each test case is executed.
   152  * This function is be called before each test case is executed.
   136  */
   153  */
   156 void TestCpPacketDataApPlugin::tcChangeConnectionName()
   173 void TestCpPacketDataApPlugin::tcChangeConnectionName()
   157 {
   174 {
   158     QFETCH(QString, string);
   175     QFETCH(QString, string);
   159     QFETCH(QString, result);
   176     QFETCH(QString, result);
   160     
   177     
   161     HbAutoTest::mouseClick(mMainWindow, mTestView, connectionNameLineEdit);
   178     HbAutoTest::mouseClick(mMainWindow, mConnectionNameWidget);
   162     
   179     
   163     // Erase old string
   180     // Erase old string
   164     subClearLineEdit(CMManagerShim::CmNameLength);
   181     QString text = mTestView->mConnectionNameItem->contentWidgetData("text").toString();
       
   182     subClearLineEdit(text.size());
   165     
   183     
   166     // Enter new string
   184     // Enter new string
   167     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
   185     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
   168 
   186 
   169     HbAutoTest::mouseClick(mMainWindow, mTestView, sideTop);
   187     HbAutoTest::mouseClick(mMainWindow, mConnectionNameWidget, exitEditorOffset);
   170 
   188 
   171     // Verify both commsdat and UI widget
   189     // Verify both commsdat and UI widget
   172     subVerifyString(
   190     subVerifyString(
   173         CMManagerShim::CmName,
   191         CMManagerShim::CmName,
   174         mTestView->mConnectionNameItem,
   192         mTestView->mConnectionNameItem,
   182 {
   200 {
   183     QTest::addColumn<QString>("string");
   201     QTest::addColumn<QString>("string");
   184     QTest::addColumn<QString>("result");
   202     QTest::addColumn<QString>("result");
   185     
   203     
   186     QTest::newRow("maximum length")
   204     QTest::newRow("maximum length")
   187         << "really long name 1234567890123"
   205         << "really long name 123456789012345678901234567890123"
   188         << "really long name 1234567890123";
   206         << "really long name 123456789012345678901234567890123";
   189     QTest::newRow("too long")
   207     QTest::newRow("too long")
   190         << "too long name 123456789012345678901234567890"
   208         << "too long name 12345678901234567890123456789012345678901234"
   191         << "too long name 1234567890123456";
   209         << "too long name 123456789012345678901234567890123456";
   192     QTest::newRow("basic") // last one must always fit on one line in UI
   210     QTest::newRow("basic") // last one must always fit on one line in UI
   193         << "test packet AP"
   211         << "test packet AP"
   194         << "test packet AP";
   212         << "test packet AP";
   195 }
   213 }
   196 
   214 
   200 void TestCpPacketDataApPlugin::tcConnectionNameEmpty()
   218 void TestCpPacketDataApPlugin::tcConnectionNameEmpty()
   201 {
   219 {
   202     QString previous = 
   220     QString previous = 
   203         mTestView->mConnectionNameItem->contentWidgetData("text").toString();
   221         mTestView->mConnectionNameItem->contentWidgetData("text").toString();
   204     
   222     
   205     HbAutoTest::mouseClick(mMainWindow, mTestView, connectionNameLineEdit);
   223     HbAutoTest::mouseClick(mMainWindow, mConnectionNameWidget);
   206     
   224     
   207     // Erase old string
   225     // Erase old string
   208     subClearLineEdit(CMManagerShim::CmNameLength);
   226     QString text = mTestView->mConnectionNameItem->contentWidgetData("text").toString();
   209     
   227     subClearLineEdit(text.size());
   210     HbAutoTest::mouseClick(mMainWindow, mTestView, sideTop);
   228     
       
   229     HbAutoTest::mouseClick(mMainWindow, mConnectionNameWidget, exitEditorOffset);
   211 
   230 
   212     QTest::qWait(100);
   231     QTest::qWait(100);
   213     // Dismiss messagebox
   232     // Dismiss messagebox
   214     HbAutoTest::mouseClick(mMainWindow, mTestView, messageBoxOkButton);
   233     HbAutoTest::mouseClick(
       
   234         mMainWindow,
       
   235         mTestView->mMessageBox.data(),
       
   236         messageBoxOkButtonOffset);
   215     
   237     
   216     // Verify both commsdat and UI widget
   238     // Verify both commsdat and UI widget
   217     subVerifyString(
   239     subVerifyString(
   218         CMManagerShim::CmName,
   240         CMManagerShim::CmName,
   219         mTestView->mConnectionNameItem,
   241         mTestView->mConnectionNameItem,
   226 void TestCpPacketDataApPlugin::tcChangeAccessPointName()
   248 void TestCpPacketDataApPlugin::tcChangeAccessPointName()
   227 {
   249 {
   228     QFETCH(QString, string);
   250     QFETCH(QString, string);
   229     QFETCH(QString, result);
   251     QFETCH(QString, result);
   230     
   252     
   231     HbAutoTest::mouseClick(mMainWindow, mTestView, accessPointNameLineEdit);
   253     HbAutoTest::mouseClick(mMainWindow, mAccessPointNameWidget);
   232     
   254     
   233     // Erase old string
   255     // Erase old string
   234     subClearLineEdit(CMManagerShim::PacketDataAPNameLength);
   256     QString text = mTestView->mAccessPointNameItem->contentWidgetData("text").toString();
       
   257     subClearLineEdit(text.size());
   235     
   258     
   236     // Enter new string
   259     // Enter new string
   237     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
   260     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
   238 
   261 
   239     HbAutoTest::mouseClick(mMainWindow, mTestView, sideTop);
   262     HbAutoTest::mouseClick(mMainWindow, mAccessPointNameWidget, exitEditorOffset);
   240 
   263 
   241     // Verify both commsdat and UI widget
   264     // Verify both commsdat and UI widget
   242     subVerifyString(
   265     subVerifyString(
   243         CMManagerShim::PacketDataAPName,
   266         CMManagerShim::PacketDataAPName,
   244         mTestView->mAccessPointNameItem,
   267         mTestView->mAccessPointNameItem,
   270 void TestCpPacketDataApPlugin::tcAccessPointNameEmpty()
   293 void TestCpPacketDataApPlugin::tcAccessPointNameEmpty()
   271 {
   294 {
   272     QString previous = 
   295     QString previous = 
   273         mTestView->mAccessPointNameItem->contentWidgetData("text").toString();
   296         mTestView->mAccessPointNameItem->contentWidgetData("text").toString();
   274     
   297     
   275     HbAutoTest::mouseClick(mMainWindow, mTestView, accessPointNameLineEdit);
   298     HbAutoTest::mouseClick(mMainWindow, mAccessPointNameWidget);
   276     
   299     
   277     // Erase old string
   300     // Erase old string
   278     subClearLineEdit(CMManagerShim::PacketDataAPNameLength);
   301     QString text = mTestView->mAccessPointNameItem->contentWidgetData("text").toString();
   279     
   302     subClearLineEdit(text.size());
   280     HbAutoTest::mouseClick(mMainWindow, mTestView, sideTop);
   303     
       
   304     HbAutoTest::mouseClick(mMainWindow, mAccessPointNameWidget, exitEditorOffset);
   281 
   305 
   282     QTest::qWait(100);
   306     QTest::qWait(100);
   283     // Dismiss messagebox
   307     // Dismiss messagebox
   284     HbAutoTest::mouseClick(mMainWindow, mTestView, messageBoxOkButton);
   308     HbAutoTest::mouseClick(
       
   309         mMainWindow,
       
   310         mTestView->mMessageBox.data(),
       
   311         messageBoxOkButtonOffset);
   285     
   312     
   286     // Verify both commsdat and UI widget
   313     // Verify both commsdat and UI widget
   287     subVerifyString(
   314     subVerifyString(
   288         CMManagerShim::PacketDataAPName,
   315         CMManagerShim::PacketDataAPName,
   289         mTestView->mAccessPointNameItem,
   316         mTestView->mAccessPointNameItem,
   290         previous);
   317         previous);
   291 }
   318 }
   292 
   319 
       
   320 
       
   321 /**
       
   322  * Tests handling of too long string from CommsDat (longer than UI accepts).
       
   323  */
       
   324 void TestCpPacketDataApPlugin::tcTooLongUserNameInCommsDat()
       
   325 {
       
   326     // Verify UI text, the widget contains the too long string, even though
       
   327     // it is not shown completely on UI
       
   328     QString text = mTestView->mUserNameItem->contentWidgetData("text").toString();
       
   329     QCOMPARE(tooLongUserName, text);
       
   330 
       
   331     QTest::qWait(1000);
       
   332     
       
   333     // Visit editing state, truncated string should be saved to CommsDat
       
   334     HbAutoTest::mouseClick(mMainWindow, mUserNameWidget);
       
   335     
       
   336     QTest::qWait(1000);
       
   337     
       
   338     HbAutoTest::mouseClick(mMainWindow, mUserNameWidget, exitEditorOffset);
       
   339 
       
   340     // Verify both commsdat and UI widget
       
   341     subVerifyString(
       
   342         CMManagerShim::PacketDataIFAuthName,
       
   343         mTestView->mUserNameItem,
       
   344         truncatedUserName);
       
   345 }
       
   346 
   293 /**
   347 /**
   294  * Tests changing of user name.
   348  * Tests changing of user name.
   295  */
   349  */
   296 void TestCpPacketDataApPlugin::tcChangeUserName()
   350 void TestCpPacketDataApPlugin::tcChangeUserName()
   297 {
   351 {
   298     QFETCH(QString, string);
   352     QFETCH(QString, string);
   299     QFETCH(QString, result);
   353     QFETCH(QString, result);
   300     
   354     
   301     HbAutoTest::mouseClick(mMainWindow, mTestView, userNameLineEdit);
   355     HbAutoTest::mouseClick(mMainWindow, mUserNameWidget);
   302     
   356     
   303     // Erase old string
   357     // Erase old string
   304     subClearLineEdit(CMManagerShim::PacketDataIFAuthNameLength);
   358     QString text = mTestView->mUserNameItem->contentWidgetData("text").toString();
       
   359     subClearLineEdit(text.size());
   305     
   360     
   306     // Enter new string
   361     // Enter new string
   307     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
   362     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
   308 
   363 
   309     HbAutoTest::mouseClick(mMainWindow, mTestView, sideTop);
   364     HbAutoTest::mouseClick(mMainWindow, mUserNameWidget, exitEditorOffset);
   310 
   365 
   311     // Verify both commsdat and UI widget
   366     // Verify both commsdat and UI widget
   312     subVerifyString(
   367     subVerifyString(
   313         CMManagerShim::PacketDataIFAuthName,
   368         CMManagerShim::PacketDataIFAuthName,
   314         mTestView->mUserNameItem,
   369         mTestView->mUserNameItem,
   321 void TestCpPacketDataApPlugin::tcChangeUserName_data()
   376 void TestCpPacketDataApPlugin::tcChangeUserName_data()
   322 {
   377 {
   323     QTest::addColumn<QString>("string");
   378     QTest::addColumn<QString>("string");
   324     QTest::addColumn<QString>("result");
   379     QTest::addColumn<QString>("result");
   325 
   380 
   326 // Long strings don't work, Orbit bug? Screen goes blank
   381     QTest::newRow("maximum length")
   327 //    QTest::newRow("maximum length")
   382         << "really long name 123456789012345678901234567890123"
   328 //        << "really long name 123456789012345678901234567890123"
   383         << "really long name 123456789012345678901234567890123";
   329 //        << "really long name 123456789012345678901234567890123";
   384     QTest::newRow("too long")
   330 //    QTest::newRow("too long")
   385         << "too long name 1234567890123456789012345678901234567890123"
   331 //        << "too long name 1234567890123456789012345678901234567890123"
   386         << "too long name 123456789012345678901234567890123456";
   332 //        << "too long name 123456789012345678901234567890123456";
       
   333     QTest::newRow("basic")
   387     QTest::newRow("basic")
   334         << "username"
   388         << "username"
   335         << "username";
   389         << "username";
   336     QTest::newRow("empty") // last one must always fit on one line in UI
   390     QTest::newRow("empty") // last one must always fit on one line in UI
   337         << ""
   391         << ""
   341 /**
   395 /**
   342  * Scrolls the tested view to the bottom.
   396  * Scrolls the tested view to the bottom.
   343  */
   397  */
   344 void TestCpPacketDataApPlugin::tcScrollToBottom()
   398 void TestCpPacketDataApPlugin::tcScrollToBottom()
   345 {
   399 {
   346     // Scroll to the bottom of the view
   400     subScrollToBottom();
   347     HbAutoTest::mousePress(mMainWindow, mTestView, scrollStart);
       
   348     QTest::qWait(500);
       
   349     HbAutoTest::mouseMove(mMainWindow, mTestView, scrollStop);
       
   350     HbAutoTest::mouseRelease(mMainWindow, mTestView, scrollStop);
       
   351 }
       
   352 
       
   353 /**
       
   354  * Tests "prompt" password checkbox.
       
   355  */
       
   356 void TestCpPacketDataApPlugin::tcChangePromptPassword()
       
   357 {
       
   358     // Ensure prompt for password is unchecked
       
   359     bool prompt = subGetBool(CMManagerShim::PacketDataIFPromptForAuth);
       
   360     if (prompt) {
       
   361         // Disable prompt for password
       
   362         HbAutoTest::mouseClick(
       
   363             mMainWindow,
       
   364             mTestView,
       
   365             passwordPromptCheckbox);
       
   366     }
       
   367     
       
   368     // Enable prompt for password and verify
       
   369     HbAutoTest::mouseClick(mMainWindow, mTestView, passwordPromptCheckbox);
       
   370     subVerifyBool(
       
   371         CMManagerShim::PacketDataIFPromptForAuth,
       
   372         true);
       
   373     
       
   374     // Verify that password lineedit is disabled, following steps will
       
   375     // fail if editing is allowed
       
   376     HbAutoTest::mouseClick(mMainWindow, mTestView, passwordLineEdit);
       
   377     QTest::qWait(waitTime);
       
   378 
       
   379     // Disable prompt for password and verify
       
   380     HbAutoTest::mouseClick(mMainWindow, mTestView, passwordPromptCheckbox);
       
   381     subVerifyBool(
       
   382         CMManagerShim::PacketDataIFPromptForAuth,
       
   383         false);
       
   384 }
   401 }
   385 
   402 
   386 /**
   403 /**
   387  * Tests changing of password.
   404  * Tests changing of password.
   388  */
   405  */
   389 void TestCpPacketDataApPlugin::tcChangePassword()
   406 void TestCpPacketDataApPlugin::tcChangePassword()
   390 {
   407 {
   391     QFETCH(QString, string);
   408     QFETCH(QString, string);
   392     QFETCH(QString, result);
   409     QFETCH(QString, result);
   393     
   410     
   394     HbAutoTest::mouseClick(mMainWindow, mTestView, passwordLineEdit);
   411     HbAutoTest::mouseClick(mMainWindow, mPasswordWidget);
   395     
   412     
   396     // Erase old string
   413     // Erase old string
   397     subClearLineEdit(CMManagerShim::PacketDataIFAuthPassLength);
   414     QString text = mTestView->mPasswordItem->contentWidgetData("text").toString();
       
   415     subClearLineEdit(text.size());
   398     
   416     
   399     // Enter new string
   417     // Enter new string
   400     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
   418     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
   401 
   419 
   402     HbAutoTest::mouseClick(mMainWindow, mTestView, sideTop);
   420     HbAutoTest::mouseClick(mMainWindow, mPasswordWidget, exitEditorOffset);
   403 
   421 
   404     // Verify both commsdat and UI widget
   422     // Verify both commsdat and UI widget
   405     subVerifyString(
   423     subVerifyString(
   406         CMManagerShim::PacketDataIFAuthPass,
   424         CMManagerShim::PacketDataIFAuthPass,
   407         mTestView->mPasswordItem,
   425         mTestView->mPasswordItem,
   414 void TestCpPacketDataApPlugin::tcChangePassword_data()
   432 void TestCpPacketDataApPlugin::tcChangePassword_data()
   415 {
   433 {
   416     QTest::addColumn<QString>("string");
   434     QTest::addColumn<QString>("string");
   417     QTest::addColumn<QString>("result");
   435     QTest::addColumn<QString>("result");
   418 
   436 
   419 // Long strings don't work, Orbit bug? Screen goes blank
   437     QTest::newRow("maximum length")
   420 //    QTest::newRow("maximum length")
   438         << "really long name 123456789012345678901234567890123"
   421 //        << "really long name 123456789012345678901234567890123"
   439         << "really long name 123456789012345678901234567890123";
   422 //        << "really long name 123456789012345678901234567890123";
   440     QTest::newRow("too long")
   423 //    QTest::newRow("too long")
   441         << "too long name 1234567890123456789012345678901234567890123"
   424 //        << "too long name 1234567890123456789012345678901234567890123"
   442         << "too long name 123456789012345678901234567890123456";
   425 //        << "too long name 123456789012345678901234567890123456";
       
   426     QTest::newRow("basic")
   443     QTest::newRow("basic")
   427         << "password"
   444         << "password"
   428         << "password";
   445         << "password";
   429     QTest::newRow("empty") // last one must always fit on one line in UI
   446     QTest::newRow("empty") // last one must always fit on one line in UI
   430         << ""
   447         << ""
   434 /**
   451 /**
   435  * Tests changing of authentication mode.
   452  * Tests changing of authentication mode.
   436  */
   453  */
   437 void TestCpPacketDataApPlugin::tcChangeAuthenticationMode()
   454 void TestCpPacketDataApPlugin::tcChangeAuthenticationMode()
   438 {
   455 {
       
   456     QPointF normalPointOffset = comboBoxFirstItemOffset;
       
   457     QPointF securePointOffset = comboBoxFirstItemOffset + comboBoxItemOffset;
       
   458     
   439     // Set authentication mode to secure
   459     // Set authentication mode to secure
   440     HbAutoTest::mouseClick(mMainWindow, mTestView, authenticationComboBox, 100);
   460     HbAutoTest::mouseClick(mMainWindow, mAuthenticationWidget);
   441     QTest::qWait(100);
   461     QTest::qWait(100);
   442     HbAutoTest::mouseClick(mMainWindow, mTestView, authenticationSecure, 100);
   462     HbAutoTest::mouseClick(mMainWindow, mAuthenticationWidget, securePointOffset);
   443 
   463 
   444     subVerifyBool(
   464     subVerifyBool(
   445         CMManagerShim::PacketDataDisablePlainTextAuth,
   465         CMManagerShim::PacketDataDisablePlainTextAuth,
   446         true);
   466         true);
   447     
   467     
   448     // Set authentication mode to normal
   468     // Set authentication mode to normal
   449     HbAutoTest::mouseClick(mMainWindow, mTestView, authenticationComboBox, 100);
   469     HbAutoTest::mouseClick(mMainWindow, mAuthenticationWidget);
   450     QTest::qWait(100);
   470     QTest::qWait(100);
   451     HbAutoTest::mouseClick(mMainWindow, mTestView, authenticationNormal, 100);
   471     HbAutoTest::mouseClick(mMainWindow, mAuthenticationWidget, normalPointOffset);
   452 
   472 
   453     subVerifyBool(
   473     subVerifyBool(
   454         CMManagerShim::PacketDataDisablePlainTextAuth,
   474         CMManagerShim::PacketDataDisablePlainTextAuth,
   455         false);
   475         false);
   456 }
   476 }
   461 void TestCpPacketDataApPlugin::tcChangeHomepage()
   481 void TestCpPacketDataApPlugin::tcChangeHomepage()
   462 {
   482 {
   463     QFETCH(QString, string);
   483     QFETCH(QString, string);
   464     QFETCH(QString, result);
   484     QFETCH(QString, result);
   465     
   485     
   466     HbAutoTest::mouseClick(mMainWindow, mTestView, homepageLineEdit);
   486     HbAutoTest::mouseClick(mMainWindow, mHomepageWidget);
   467     
   487     
   468     // Erase old string
   488     // Erase old string
   469     QString text = mTestView->mHomepageItem->contentWidgetData("text").toString();
   489     QString text = mTestView->mHomepageItem->contentWidgetData("text").toString();
   470     subClearLineEdit(text.size());
   490     subClearLineEdit(text.size());
   471     
   491     
   472     // Enter new string
   492     // Enter new string
   473     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
   493     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
   474 
   494 
   475     HbAutoTest::mouseClick(mMainWindow, mTestView, sideTop);
   495     HbAutoTest::mouseClick(mMainWindow, mHomepageWidget, exitEditorOffset);
   476 
   496 
   477     // Verify both commsdat and UI widget
   497     // Verify both commsdat and UI widget
   478     subVerifyString(
   498     subVerifyString(
   479         CMManagerShim::CmStartPage,
   499         CMManagerShim::CmStartPage,
   480         mTestView->mHomepageItem,
   500         mTestView->mHomepageItem,
   487 void TestCpPacketDataApPlugin::tcChangeHomepage_data()
   507 void TestCpPacketDataApPlugin::tcChangeHomepage_data()
   488 {
   508 {
   489     QTest::addColumn<QString>("string");
   509     QTest::addColumn<QString>("string");
   490     QTest::addColumn<QString>("result");
   510     QTest::addColumn<QString>("result");
   491   
   511   
   492 // Doesn't work always, view goes blank sometimes, Orbit bug?
   512     QTest::newRow("long")
   493 //    QTest::newRow("long")
   513         << "http://developer.symbian.org/main/documentation/reference/s^3/doc_source/AboutSymbianOSLibrary9.6/index.html"
   494 //        << "http://developer.symbian.org/main/documentation/reference/s^3/doc_source/AboutSymbianOSLibrary9.6/index.html"
   514         << "http://developer.symbian.org/main/documentation/reference/s^3/doc_source/AboutSymbianOSLibrary9.6/index.html";
   495 //        << "http://developer.symbian.org/main/documentation/reference/s^3/doc_source/AboutSymbianOSLibrary9.6/index.html";
       
   496     QTest::newRow("basic") // last one should always fit on one line in UI
   515     QTest::newRow("basic") // last one should always fit on one line in UI
   497         << "http://www.symbian.org/"
   516         << "http://www.symbian.org/"
   498         << "http://www.symbian.org/";
   517         << "http://www.symbian.org/";
   499     QTest::newRow("empty")
   518     QTest::newRow("empty")
   500         << ""
   519         << ""
   501         << "";
   520         << "";
   502 }
   521 }
   503 
   522 
   504 /**
   523 /**
   505  * Tests advanced settings view (which is currently empty).
   524  * Opens advanced settings view.
   506  */
   525  */
   507 void TestCpPacketDataApPlugin::tcAdvancedSettings()
   526 void TestCpPacketDataApPlugin::tcOpenAdvancedSettingsView()
   508 {
   527 {
   509     // Launch advanced settings view
   528     // Launch advanced settings view
   510     bool status = connect(
   529     bool status = connect(
   511         this,
   530         this,
   512         SIGNAL(menuActionTriggered(HbAction *)),
   531         SIGNAL(menuActionTriggered(HbAction *)),
   513         mTestView,
   532         mTestView,
   514         SLOT(menuActionTriggered(HbAction *)));
   533         SLOT(menuActionTriggered(HbAction *)));
   515     Q_ASSERT(status);
   534     Q_ASSERT(status);
   516     emit menuActionTriggered(mTestView->mAdvancedSettingsAction);
   535     emit menuActionTriggered(mTestView->mAdvancedSettingsAction);
   517 
   536 
   518     QTest::qWait(2000);
   537     QTest::qWait(1000);
   519     
   538     
       
   539     mTestViewAdvanced = static_cast<CpPacketDataApAdvancedView *>(mMainWindow->currentView());
       
   540 }
       
   541 
       
   542 /**
       
   543  * Expands the IP settings group.
       
   544  */
       
   545 void TestCpPacketDataApPlugin::tcExpandIpSettings()
       
   546 {
       
   547     HbAutoTest::mouseClick(mMainWindow, mTestViewAdvanced, ipGroup);
       
   548     
       
   549     subGetAdvancedUiWidgets(0);
       
   550 }
       
   551 
       
   552 /**
       
   553  * Sets the network type to IPv4 and gets UI widget pointers.
       
   554  */
       
   555 void TestCpPacketDataApPlugin::tcSetIpv4NetworkType()
       
   556 {
       
   557     QPointF ipv4PointOffset = comboBoxFirstItemOffset;
       
   558     
       
   559     // Set network type to IPv4
       
   560     HbAutoTest::mouseClick(mMainWindow, mNetworkTypeWidget);
       
   561     HbAutoTest::mouseClick(mMainWindow, mNetworkTypeWidget, ipv4PointOffset, 100);
       
   562     subVerifyUint(CMManagerShim::PacketDataPDPType, RPacketContext::EPdpTypeIPv4);
       
   563     
       
   564     subGetAdvancedUiWidgets(0);
       
   565 }
       
   566 
       
   567 /**
       
   568  * Tests enabling of automatic phone IP address.
       
   569  */
       
   570 void TestCpPacketDataApPlugin::tcEnableAutomaticIpv4Address()
       
   571 {
       
   572     Qt::CheckState state = static_cast<Qt::CheckState>
       
   573         (mTestViewAdvanced->mIpv4Automatic->contentWidgetData("checkState").toInt());
       
   574     if (state == Qt::Checked) {
       
   575         // Disable automatic IP address
       
   576         HbAutoTest::mouseClick(mMainWindow, mIpv4AddressAutomaticWidget);
       
   577     }
       
   578     // Enable automatic IP address
       
   579     HbAutoTest::mouseClick(mMainWindow, mIpv4AddressAutomaticWidget);
       
   580     subVerifyBool(
       
   581         CMManagerShim::PacketDataIPAddrFromServer,
       
   582         true);
       
   583     
       
   584     // Ensure that editing the IP address is not allowed
       
   585     HbAutoTest::mouseClick(mMainWindow, mIpv4AddressWidget);
       
   586 }
       
   587 
       
   588 /**
       
   589  * Tests disabling of automatic phone IP address.
       
   590  */
       
   591 void TestCpPacketDataApPlugin::tcEnableUserDefinedIpv4Address()
       
   592 {
       
   593     Qt::CheckState state = static_cast<Qt::CheckState>
       
   594         (mTestViewAdvanced->mIpv4Automatic->contentWidgetData("checkState").toInt());
       
   595     if (state == Qt::Checked) {
       
   596         // Disable automatic IP address
       
   597         HbAutoTest::mouseClick(mMainWindow, mIpv4AddressAutomaticWidget);
       
   598     }
       
   599     // Can't verify the setting from CommsDat here, because CMManager will
       
   600     // set it back to true if no valid IP address is yet defined. The flag
       
   601     // is verified in tcChangeIpAddress().
       
   602 }
       
   603 
       
   604 /**
       
   605  * Tests changing of IP address.
       
   606  */
       
   607 void TestCpPacketDataApPlugin::tcChangeIpAddress()
       
   608 {
       
   609     QFETCH(QString, string);
       
   610     QFETCH(QString, result);
       
   611     
       
   612     HbAutoTest::mouseClick(mMainWindow, mIpv4AddressWidget);
       
   613     
       
   614     // Erase old string
       
   615     QString text = mTestViewAdvanced->mIpv4Address->contentWidgetData("text").toString();
       
   616     subClearLineEdit(text.size());
       
   617     
       
   618     // Enter new string
       
   619     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
       
   620 
       
   621     HbAutoTest::mouseClick(mMainWindow, mIpv4AddressWidget, exitEditorOffset);
       
   622 
       
   623     // Verify both commsdat and UI widget
       
   624     subVerifyString(
       
   625         CMManagerShim::PacketDataIPAddr,
       
   626         mTestViewAdvanced->mIpv4Address,
       
   627         result);
       
   628     subVerifyBool(
       
   629         CMManagerShim::PacketDataIPAddrFromServer,
       
   630         false);
       
   631 }
       
   632 
       
   633 /**
       
   634  * Test data for IP address change test case.
       
   635  */
       
   636 void TestCpPacketDataApPlugin::tcChangeIpAddress_data()
       
   637 {
       
   638     QTest::addColumn<QString>("string");
       
   639     QTest::addColumn<QString>("result");
       
   640   
       
   641     QTest::newRow("too long")
       
   642         << "255.255.255.2551234"
       
   643         << "255.255.255.255";
       
   644     QTest::newRow("normal")
       
   645         << "192.168.0.1"
       
   646         << "192.168.0.1";
       
   647 }
       
   648 
       
   649 /**
       
   650  * Scrolls the tested view to the bottom.
       
   651  */
       
   652 void TestCpPacketDataApPlugin::tcScrollToBottom2()
       
   653 {
       
   654     subScrollToBottom();
       
   655     
       
   656     subGetAdvancedUiWidgets(0);
       
   657 }
       
   658 
       
   659 /**
       
   660  * Tests enabling of automatic IPv4 DNS addresses.
       
   661  */
       
   662 void TestCpPacketDataApPlugin::tcEnableAutomaticIpv4DnsAddress()
       
   663 {
       
   664     Qt::CheckState state = static_cast<Qt::CheckState>
       
   665         (mTestViewAdvanced->mIpv4DnsAutomatic->contentWidgetData("checkState").toInt());
       
   666     if (state == Qt::Checked) {
       
   667         // Disable automatic IPv4 DNS address
       
   668         HbAutoTest::mouseClick(mMainWindow, mIpv4DnsAddressAutomaticWidget);
       
   669     }
       
   670     // Enable automatic IPv4 DNS address
       
   671     HbAutoTest::mouseClick(mMainWindow, mIpv4DnsAddressAutomaticWidget);
       
   672     subVerifyBool(
       
   673         CMManagerShim::PacketDataIPDNSAddrFromServer,
       
   674         true);
       
   675     
       
   676     // Ensure that editing the IP address is not allowed
       
   677     HbAutoTest::mouseClick(mMainWindow, mIpv4PrimaryDnsAddressWidget);
       
   678     HbAutoTest::mouseClick(mMainWindow, mIpv4SecondaryDnsAddressWidget);
       
   679 }
       
   680 
       
   681 /**
       
   682  * Tests disabling of automatic IPv4 DNS addresses.
       
   683  */
       
   684 void TestCpPacketDataApPlugin::tcEnableUserDefinedIpv4DnsAddress()
       
   685 {
       
   686     Qt::CheckState state = static_cast<Qt::CheckState>
       
   687         (mTestViewAdvanced->mIpv4DnsAutomatic->contentWidgetData("checkState").toInt());
       
   688     if (state == Qt::Checked) {
       
   689         // Disable automatic IPv4 DNS address
       
   690         HbAutoTest::mouseClick(mMainWindow, mIpv4DnsAddressAutomaticWidget);
       
   691     }
       
   692     // Can't verify the setting from CommsDat here, because CMManager will
       
   693     // set it back to true if no valid IP address is yet defined. The flag
       
   694     // is verified in tcChangeIpv4DnsAddress().
       
   695 }
       
   696 
       
   697 /**
       
   698  * Tests changing of IPv4 DNS addresses.
       
   699  */
       
   700 void TestCpPacketDataApPlugin::tcChangeIpv4DnsAddress()
       
   701 {
       
   702     QFETCH(QString, string);
       
   703     QFETCH(QString, result);
       
   704     
       
   705     // Primary DNS address
       
   706     HbAutoTest::mouseClick(mMainWindow, mIpv4PrimaryDnsAddressWidget);
       
   707     
       
   708     // Erase old string
       
   709     QString text = mTestViewAdvanced->mIpv4DnsAddress1->contentWidgetData("text").toString();
       
   710     subClearLineEdit(text.size());
       
   711     
       
   712     // Enter new string
       
   713     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
       
   714 
       
   715     HbAutoTest::mouseClick(mMainWindow, mIpv4PrimaryDnsAddressWidget, exitEditorOffset);
       
   716 
       
   717     // Verify both commsdat and UI widget
       
   718     subVerifyString(
       
   719         CMManagerShim::PacketDataIPNameServer1,
       
   720         mTestViewAdvanced->mIpv4DnsAddress1,
       
   721         result);
       
   722     
       
   723     // Secondary DNS address
       
   724     HbAutoTest::mouseClick(mMainWindow, mIpv4SecondaryDnsAddressWidget);
       
   725     
       
   726     // Erase old string
       
   727     text = mTestViewAdvanced->mIpv4DnsAddress2->contentWidgetData("text").toString();
       
   728     subClearLineEdit(text.size());
       
   729     
       
   730     // Enter new string
       
   731     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
       
   732 
       
   733     HbAutoTest::mouseClick(mMainWindow, mIpv4SecondaryDnsAddressWidget, exitEditorOffset);
       
   734 
       
   735     // Verify both commsdat and UI widget
       
   736     subVerifyString(
       
   737         CMManagerShim::PacketDataIPNameServer2,
       
   738         mTestViewAdvanced->mIpv4DnsAddress2,
       
   739         result);
       
   740     
       
   741     // Verify user defined address is in use
       
   742     subVerifyBool(
       
   743         CMManagerShim::PacketDataIPDNSAddrFromServer,
       
   744         false);
       
   745 }
       
   746 
       
   747 /**
       
   748  * Test data for IPv4 DNS address change test case.
       
   749  */
       
   750 void TestCpPacketDataApPlugin::tcChangeIpv4DnsAddress_data()
       
   751 {
       
   752     QTest::addColumn<QString>("string");
       
   753     QTest::addColumn<QString>("result");
       
   754   
       
   755     QTest::newRow("too long")
       
   756         << "255.255.255.2551234"
       
   757         << "255.255.255.255";
       
   758     QTest::newRow("normal")
       
   759         << "192.168.0.1"
       
   760         << "192.168.0.1";
       
   761 }
       
   762 
       
   763 /**
       
   764  * Tests invalid IPv4 DNS address.
       
   765  */
       
   766 void TestCpPacketDataApPlugin::tcInvalidIpv4DnsAddress()
       
   767 {
       
   768     QString previous = 
       
   769         mTestViewAdvanced->mIpv4DnsAddress1->contentWidgetData("text").toString();
       
   770     
       
   771     HbAutoTest::mouseClick(mMainWindow, mIpv4PrimaryDnsAddressWidget);
       
   772     
       
   773     // Erase old string
       
   774     QString text = mTestViewAdvanced->mIpv4DnsAddress1->contentWidgetData("text").toString();
       
   775     subClearLineEdit(text.size());
       
   776     
       
   777     // Enter new string
       
   778     HbAutoTest::keyClicks(mMainWindow, "999.999.999.999", 0, waitTime);
       
   779 
       
   780     HbAutoTest::mouseClick(mMainWindow, mIpv4PrimaryDnsAddressWidget, exitEditorOffset);
       
   781 
       
   782     QTest::qWait(100);
       
   783     // Dismiss messagebox
       
   784     HbAutoTest::mouseClick(
       
   785         mMainWindow,
       
   786         mTestViewAdvanced->mMessageBox.data(),
       
   787         messageBoxOkButtonOffset);
       
   788     
       
   789     // Verify both commsdat and UI widget
       
   790     subVerifyString(
       
   791         CMManagerShim::PacketDataIPNameServer1,
       
   792         mTestViewAdvanced->mIpv4DnsAddress1,
       
   793         previous);
       
   794 }
       
   795 
       
   796 /**
       
   797  * Scrolls the tested view to the top.
       
   798  */
       
   799 void TestCpPacketDataApPlugin::tcScrollToTop()
       
   800 {
       
   801     subScrollToTop();
       
   802 }
       
   803 
       
   804 /**
       
   805  * Sets the network type to IPv6 and gets UI widget pointers.
       
   806  */
       
   807 void TestCpPacketDataApPlugin::tcSetIpv6NetworkType()
       
   808 {
       
   809     QPointF ipv6PointOffset = comboBoxFirstItemOffset + comboBoxItemOffset;
       
   810     
       
   811     // Set network type to IPv6
       
   812     HbAutoTest::mouseClick(mMainWindow, mNetworkTypeWidget);
       
   813     HbAutoTest::mouseClick(mMainWindow, mNetworkTypeWidget, ipv6PointOffset, 100);
       
   814     subVerifyUint(CMManagerShim::PacketDataPDPType, RPacketContext::EPdpTypeIPv6);
       
   815 
       
   816     subGetAdvancedUiWidgets(0);
       
   817 }
       
   818 
       
   819 /**
       
   820  * Tests enabling of automatic IPv6 DNS addresses.
       
   821  */
       
   822 void TestCpPacketDataApPlugin::tcEnableAutomaticIpv6DnsAddress()
       
   823 {
       
   824     // Enable automatic IPv6 DNS address
       
   825     QPointF automaticPointOffset = comboBoxFirstItemOffset;
       
   826     HbAutoTest::mouseClick(mMainWindow, mIpv6DnsAddressAutomaticWidget);
       
   827     QTest::qWait(100);
       
   828     HbAutoTest::mouseClick(mMainWindow, mIpv6DnsAddressAutomaticWidget, automaticPointOffset, 100);
       
   829     QTest::qWait(100);
       
   830     subVerifyBool(
       
   831         CMManagerShim::PacketDataIPIP6DNSAddrFromServer,
       
   832         true);
       
   833     
       
   834     // Ensure that editing the IP address is not allowed
       
   835     HbAutoTest::mouseClick(mMainWindow, mIpv6PrimaryDnsAddressWidget);
       
   836     HbAutoTest::mouseClick(mMainWindow, mIpv6SecondaryDnsAddressWidget);
       
   837 }
       
   838 
       
   839 /**
       
   840  * Tests enabling of well-known IPv6 DNS addresses.
       
   841  */
       
   842 void TestCpPacketDataApPlugin::tcEnableWellKnownIpv6DnsAddress()
       
   843 {
       
   844     // Enable well-known IPv6 DNS address
       
   845     QPointF wellKnownPointOffset = comboBoxFirstItemOffset + comboBoxItemOffset;
       
   846     HbAutoTest::mouseClick(mMainWindow, mIpv6DnsAddressAutomaticWidget);
       
   847     QTest::qWait(100);
       
   848     HbAutoTest::mouseClick(mMainWindow, mIpv6DnsAddressAutomaticWidget, wellKnownPointOffset, 100);
       
   849     QTest::qWait(100);
       
   850     subVerifyBool(
       
   851         CMManagerShim::PacketDataIPIP6DNSAddrFromServer,
       
   852         false);
       
   853     subVerifyString(
       
   854         CMManagerShim::PacketDataIPIP6NameServer1,
       
   855         mTestViewAdvanced->mIpv6DnsAddress1,
       
   856         "fec0:000:0000:ffff::1");
       
   857     subVerifyString(
       
   858         CMManagerShim::PacketDataIPIP6NameServer2,
       
   859         mTestViewAdvanced->mIpv6DnsAddress2,
       
   860         "fec0:000:0000:ffff::2");
       
   861     
       
   862     // Ensure that editing the IP address is not allowed
       
   863     HbAutoTest::mouseClick(mMainWindow, mIpv6PrimaryDnsAddressWidget);
       
   864     HbAutoTest::mouseClick(mMainWindow, mIpv6SecondaryDnsAddressWidget);
       
   865 }
       
   866 
       
   867 /**
       
   868  * Tests enabling of user defined IPv6 DNS addresses.
       
   869  */
       
   870 void TestCpPacketDataApPlugin::tcEnableUserDefinedIpv6DnsAddress()
       
   871 {
       
   872     // Select user defined IPv6 DNS address
       
   873     QPointF userDefinedPointOffset = comboBoxFirstItemOffset + comboBoxItemOffset * 2;
       
   874     //QPointF userDefinedPointOffset(0, 160);
       
   875     HbAutoTest::mouseClick(mMainWindow, mIpv6DnsAddressAutomaticWidget);
       
   876     QTest::qWait(100);
       
   877     HbAutoTest::mouseClick(mMainWindow, mIpv6DnsAddressAutomaticWidget, userDefinedPointOffset, 100);
       
   878     QTest::qWait(100);
       
   879     // Can't verify the setting from CommsDat here, because CMManager will
       
   880     // set it back to true if no valid IP address is yet defined. The flag
       
   881     // is verified in tcChangeIpv4DnsAddress().
       
   882 }
       
   883 
       
   884 /**
       
   885  * Tests changing of IPv6 DNS addresses.
       
   886  */
       
   887 void TestCpPacketDataApPlugin::tcChangeIpv6DnsAddress()
       
   888 {
       
   889     QFETCH(QString, string);
       
   890     QFETCH(QString, result);
       
   891     
       
   892     // Primary DNS address
       
   893     HbAutoTest::mouseClick(mMainWindow, mIpv6PrimaryDnsAddressWidget);
       
   894     
       
   895     // Erase old string
       
   896     QString text = mTestViewAdvanced->mIpv6DnsAddress1->contentWidgetData("text").toString();
       
   897     subClearLineEdit(text.size());
       
   898     
       
   899     // Enter new string
       
   900     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
       
   901 
       
   902     HbAutoTest::mouseClick(mMainWindow, mIpv6PrimaryDnsAddressWidget, exitEditorOffset);
       
   903 
       
   904     // Verify both commsdat and UI widget
       
   905     subVerifyString(
       
   906         CMManagerShim::PacketDataIPIP6NameServer1,
       
   907         mTestViewAdvanced->mIpv6DnsAddress1,
       
   908         result);
       
   909     
       
   910     // Secondary DNS address
       
   911     HbAutoTest::mouseClick(mMainWindow, mIpv6SecondaryDnsAddressWidget);
       
   912     
       
   913     // Erase old string
       
   914     text = mTestViewAdvanced->mIpv6DnsAddress2->contentWidgetData("text").toString();
       
   915     subClearLineEdit(text.size());
       
   916     
       
   917     // Enter new string
       
   918     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
       
   919 
       
   920     HbAutoTest::mouseClick(mMainWindow, mIpv6SecondaryDnsAddressWidget, exitEditorOffset);
       
   921 
       
   922     // Verify both commsdat and UI widget
       
   923     subVerifyString(
       
   924         CMManagerShim::PacketDataIPIP6NameServer2,
       
   925         mTestViewAdvanced->mIpv6DnsAddress2,
       
   926         result);
       
   927     
       
   928     // Verify user defined address is in use
       
   929     subVerifyBool(
       
   930         CMManagerShim::PacketDataIPIP6DNSAddrFromServer,
       
   931         false);
       
   932 }
       
   933 
       
   934 /**
       
   935  * Test data for IPv6 DNS address change test case.
       
   936  */
       
   937 void TestCpPacketDataApPlugin::tcChangeIpv6DnsAddress_data()
       
   938 {
       
   939     QTest::addColumn<QString>("string");
       
   940     QTest::addColumn<QString>("result");
       
   941   
       
   942     QTest::newRow("normal")
       
   943         << "2001:db8:85a3::8a2e:370:7334"
       
   944         << "2001:db8:85a3:0:0:8a2e:370:7334";
       
   945 }
       
   946 
       
   947 /**
       
   948  * Tests invalid IPv6 DNS address.
       
   949  */
       
   950 void TestCpPacketDataApPlugin::tcInvalidIpv6DnsAddress()
       
   951 {
       
   952     QString previous = 
       
   953         mTestViewAdvanced->mIpv6DnsAddress1->contentWidgetData("text").toString();
       
   954     
       
   955     HbAutoTest::mouseClick(mMainWindow, mIpv6PrimaryDnsAddressWidget);
       
   956     
       
   957     // Erase old string
       
   958     QString text = mTestViewAdvanced->mIpv6DnsAddress1->contentWidgetData("text").toString();
       
   959     subClearLineEdit(text.size());
       
   960     
       
   961     // Enter new string
       
   962     HbAutoTest::keyClicks(mMainWindow, "abcdef:fedcba", 0, waitTime);
       
   963 
       
   964     HbAutoTest::mouseClick(mMainWindow, mIpv6PrimaryDnsAddressWidget, exitEditorOffset);
       
   965 
       
   966     QTest::qWait(100);
       
   967     // Dismiss messagebox
       
   968     HbAutoTest::mouseClick(
       
   969         mMainWindow,
       
   970         mTestViewAdvanced->mMessageBox.data(),
       
   971         messageBoxOkButtonOffset);
       
   972     
       
   973     // Verify both commsdat and UI widget
       
   974     subVerifyString(
       
   975         CMManagerShim::PacketDataIPIP6NameServer1,
       
   976         mTestViewAdvanced->mIpv6DnsAddress1,
       
   977         previous);
       
   978 }
       
   979 
       
   980 /**
       
   981  * Collapses the IP settings group.
       
   982  */
       
   983 void TestCpPacketDataApPlugin::tcCollapseIpSettings()
       
   984 {
       
   985     HbAutoTest::mouseClick(mMainWindow, mTestViewAdvanced, ipGroup);
       
   986 }
       
   987 
       
   988 /**
       
   989  * Expands the proxy settings group and gets UI widget pointers.
       
   990  */
       
   991 void TestCpPacketDataApPlugin::tcExpandProxySettingsAndGetUiWidgets()
       
   992 {
       
   993     HbAutoTest::mouseClick(mMainWindow, mTestViewAdvanced, proxyGroup);
       
   994 
       
   995     QTest::qWait(500);
       
   996     
       
   997     subGetAdvancedUiWidgets(1);
       
   998 }
       
   999 
       
  1000 /**
       
  1001  * Tests changing of proxy server address.
       
  1002  */
       
  1003 void TestCpPacketDataApPlugin::tcChangeProxyServerAddress()
       
  1004 {
       
  1005     QFETCH(QString, string);
       
  1006     QFETCH(QString, result);
       
  1007     
       
  1008     HbAutoTest::mouseClick(mMainWindow, mProxyServerAddressWidget);
       
  1009     
       
  1010     // Erase old string
       
  1011     QString text = mTestViewAdvanced->mProxyServer->contentWidgetData("text").toString();
       
  1012     subClearLineEdit(text.size());
       
  1013     
       
  1014     // Enter new string
       
  1015     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
       
  1016 
       
  1017     HbAutoTest::mouseClick(mMainWindow, mProxyServerAddressWidget, exitEditorOffset);
       
  1018 
       
  1019     // Verify both commsdat and UI widget
       
  1020     subVerifyString(
       
  1021         CMManagerShim::CmProxyServerName,
       
  1022         mTestViewAdvanced->mProxyServer,
       
  1023         result);
       
  1024     // Verify user defined address flag is set correctly
       
  1025     if (result.isEmpty()) {
       
  1026         subVerifyBool(
       
  1027             CMManagerShim::CmProxyUsageEnabled,
       
  1028             false);
       
  1029     } else {
       
  1030         subVerifyBool(
       
  1031             CMManagerShim::CmProxyUsageEnabled,
       
  1032             true);
       
  1033     }
       
  1034 }
       
  1035 
       
  1036 /**
       
  1037  * Test data for proxy server address change test case.
       
  1038  */
       
  1039 void TestCpPacketDataApPlugin::tcChangeProxyServerAddress_data()
       
  1040 {
       
  1041     QTest::addColumn<QString>("string");
       
  1042     QTest::addColumn<QString>("result");
       
  1043   
       
  1044     QTest::newRow("long")
       
  1045         << "http://developer.symbian.org/main/documentation/reference/s^3/doc_source/AboutSymbianOSLibrary9.6/index.html"
       
  1046         << "http://developer.symbian.org/main/documentation/reference/s^3/doc_source/AboutSymbianOSLibrary9.6/index.html";
       
  1047     QTest::newRow("empty")
       
  1048         << ""
       
  1049         << "";
       
  1050     QTest::newRow("basic") // last one should always fit on one line in UI
       
  1051         << "http://www.symbian.org/"
       
  1052         << "http://www.symbian.org/";
       
  1053 }
       
  1054 
       
  1055 /**
       
  1056  * Tests changing of proxy port number.
       
  1057  */
       
  1058 void TestCpPacketDataApPlugin::tcChangeProxyPortNumber()
       
  1059 {
       
  1060     QFETCH(QString, string);
       
  1061     QFETCH(QString, result);
       
  1062     
       
  1063     HbAutoTest::mouseClick(mMainWindow, mProxyPortNumberWidget);
       
  1064     
       
  1065     // Erase old string
       
  1066     QString text = mTestViewAdvanced->mProxyPort->contentWidgetData("text").toString();
       
  1067     subClearLineEdit(text.size());
       
  1068     
       
  1069     // Enter new string
       
  1070     HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
       
  1071 
       
  1072     HbAutoTest::mouseClick(mMainWindow, mProxyPortNumberWidget, exitEditorOffset);
       
  1073 
       
  1074     // Verify both commsdat and UI widget
       
  1075     subVerifyUint(
       
  1076         CMManagerShim::CmProxyPortNumber,
       
  1077         result.toInt());
       
  1078     QCOMPARE(
       
  1079         mTestViewAdvanced->mProxyPort->contentWidgetData("text").toInt(),
       
  1080         result.toInt());
       
  1081 }
       
  1082 
       
  1083 /**
       
  1084  * Test data for proxy port number change test case.
       
  1085  */
       
  1086 void TestCpPacketDataApPlugin::tcChangeProxyPortNumber_data()
       
  1087 {
       
  1088     QTest::addColumn<QString>("string");
       
  1089     QTest::addColumn<QString>("result");
       
  1090   
       
  1091     QTest::newRow("basic")
       
  1092         << "8080"
       
  1093         << "8080";
       
  1094     QTest::newRow("too long")
       
  1095         << "1234567890"
       
  1096         << "12345";
       
  1097     QTest::newRow("zero")
       
  1098         << "0"
       
  1099         << "";
       
  1100     QTest::newRow("empty")
       
  1101         << ""
       
  1102         << "";
       
  1103 }
       
  1104 
       
  1105 /**
       
  1106  * Tests invalid proxy port number.
       
  1107  */
       
  1108 void TestCpPacketDataApPlugin::tcInvalidProxyPortNumber()
       
  1109 {
       
  1110     int previous = 
       
  1111         mTestViewAdvanced->mProxyPort->contentWidgetData("text").toInt();
       
  1112     
       
  1113     HbAutoTest::mouseClick(mMainWindow, mProxyPortNumberWidget);
       
  1114     
       
  1115     // Erase old string
       
  1116     QString text = mTestViewAdvanced->mProxyPort->contentWidgetData("text").toString();
       
  1117     subClearLineEdit(text.size());
       
  1118     
       
  1119     // Enter new string
       
  1120     HbAutoTest::keyClicks(mMainWindow, "65536", 0, waitTime);
       
  1121 
       
  1122     HbAutoTest::mouseClick(mMainWindow, mProxyPortNumberWidget, exitEditorOffset);
       
  1123 
       
  1124     QTest::qWait(100);
       
  1125     // Dismiss messagebox
       
  1126     HbAutoTest::mouseClick(
       
  1127         mMainWindow,
       
  1128         mTestViewAdvanced->mMessageBox.data(),
       
  1129         messageBoxOkButtonOffset);
       
  1130     
       
  1131     // Verify both commsdat and UI widget
       
  1132     subVerifyUint(
       
  1133         CMManagerShim::CmProxyPortNumber,
       
  1134         previous);
       
  1135     QCOMPARE(
       
  1136         mTestViewAdvanced->mProxyPort->contentWidgetData("text").toInt(),
       
  1137         previous);
       
  1138 }
       
  1139 
       
  1140 /**
       
  1141  * Collapses the proxy settings group.
       
  1142  */
       
  1143 void TestCpPacketDataApPlugin::tcCollapseProxySettings()
       
  1144 {
       
  1145     HbAutoTest::mouseClick(mMainWindow, mTestViewAdvanced, proxyGroup);
       
  1146 }
       
  1147 
       
  1148 /**
       
  1149  * Returns from advanced settings view.
       
  1150  */
       
  1151 void TestCpPacketDataApPlugin::tcCloseAdvancedSettingsView()
       
  1152 {
   520     // Return from advanced settings view
  1153     // Return from advanced settings view
   521     subClickWidget("HbNavigationButton");
  1154     subClickWidget("HbNavigationButton");
   522 }
  1155 }
   523 
  1156 
   524 // -----------------------------------------------------------------------------
  1157 // -----------------------------------------------------------------------------
   525 // SUB TEST CASES
  1158 // SUB TEST CASES
   526 // -----------------------------------------------------------------------------
  1159 // -----------------------------------------------------------------------------
       
  1160 
       
  1161 /**
       
  1162  * Gets UI widget pointers.
       
  1163  */
       
  1164 void TestCpPacketDataApPlugin::subGetUiWidgets()
       
  1165 {
       
  1166     HbModelIterator iterator(mTestView->mModel);
       
  1167     
       
  1168     // Get "Access point settings" group item
       
  1169     QModelIndex apGroupIndex = iterator.index(0);
       
  1170     
       
  1171     // Get UI widgets
       
  1172     mConnectionNameWidget = subGetWidgetByIndex(
       
  1173         mTestView->mForm,
       
  1174         iterator.index(0, apGroupIndex));
       
  1175     mAccessPointNameWidget = subGetWidgetByIndex(
       
  1176         mTestView->mForm,
       
  1177         iterator.index(1, apGroupIndex));
       
  1178     mUserNameWidget = subGetWidgetByIndex(
       
  1179         mTestView->mForm,
       
  1180         iterator.index(2, apGroupIndex));
       
  1181     mPasswordWidget = subGetWidgetByIndex(
       
  1182         mTestView->mForm,
       
  1183         iterator.index(4, apGroupIndex));
       
  1184     mAuthenticationWidget = subGetWidgetByIndex(
       
  1185         mTestView->mForm,
       
  1186         iterator.index(5, apGroupIndex));
       
  1187     mHomepageWidget = subGetWidgetByIndex(
       
  1188         mTestView->mForm,
       
  1189         iterator.index(6, apGroupIndex));
       
  1190 }
       
  1191 
       
  1192 /**
       
  1193  * Gets advanced settings view UI widget pointers by group index.
       
  1194  */
       
  1195 void TestCpPacketDataApPlugin::subGetAdvancedUiWidgets(
       
  1196     uint index)
       
  1197 {
       
  1198     // Get the group item
       
  1199     HbModelIterator iterator(mTestViewAdvanced->mModel);
       
  1200     QModelIndex groupIndex = iterator.index(index);
       
  1201     
       
  1202     // Get UI widgets
       
  1203     if (index == 0) {
       
  1204         // IP settings group
       
  1205         mNetworkTypeWidget = subGetWidgetByIndex(
       
  1206             mTestViewAdvanced->mForm,
       
  1207             iterator.index(0, groupIndex));
       
  1208         if (qobject_cast<HbComboBox *>(mNetworkTypeWidget)->currentIndex() == 0) {
       
  1209             // IPv4
       
  1210             mIpv4AddressAutomaticWidget = subGetWidgetByIndex(
       
  1211                 mTestViewAdvanced->mForm,
       
  1212                 iterator.index(1, groupIndex));
       
  1213             mIpv4AddressWidget = subGetWidgetByIndex(
       
  1214                 mTestViewAdvanced->mForm,
       
  1215                 iterator.index(2, groupIndex));
       
  1216             mIpv4DnsAddressAutomaticWidget = subGetWidgetByIndex(
       
  1217                 mTestViewAdvanced->mForm,
       
  1218                 iterator.index(3, groupIndex));
       
  1219             mIpv4PrimaryDnsAddressWidget = subGetWidgetByIndex(
       
  1220                 mTestViewAdvanced->mForm,
       
  1221                 iterator.index(4, groupIndex));
       
  1222             mIpv4SecondaryDnsAddressWidget = subGetWidgetByIndex(
       
  1223                 mTestViewAdvanced->mForm,
       
  1224                 iterator.index(5, groupIndex));
       
  1225         } else {
       
  1226             // IPv6
       
  1227             mIpv6DnsAddressAutomaticWidget = subGetWidgetByIndex(
       
  1228                 mTestViewAdvanced->mForm,
       
  1229                 iterator.index(1, groupIndex));
       
  1230             mIpv6PrimaryDnsAddressWidget = subGetWidgetByIndex(
       
  1231                 mTestViewAdvanced->mForm,
       
  1232                 iterator.index(2, groupIndex));
       
  1233             mIpv6SecondaryDnsAddressWidget = subGetWidgetByIndex(
       
  1234                 mTestViewAdvanced->mForm,
       
  1235                 iterator.index(3, groupIndex));
       
  1236         }
       
  1237     } else {
       
  1238         // Proxy settings group
       
  1239         mProxyServerAddressWidget = subGetWidgetByIndex(
       
  1240             mTestViewAdvanced->mForm,
       
  1241             iterator.index(0, groupIndex));
       
  1242         mProxyPortNumberWidget = subGetWidgetByIndex(
       
  1243             mTestViewAdvanced->mForm,
       
  1244             iterator.index(1, groupIndex));
       
  1245     }
       
  1246 }
       
  1247 
       
  1248 /**
       
  1249  * Gets an UI widget from HbDataForm by index. 
       
  1250  */
       
  1251 HbWidget *TestCpPacketDataApPlugin::subGetWidgetByIndex(
       
  1252     HbDataForm *form,
       
  1253     const QModelIndex &index)
       
  1254 {
       
  1255     HbDataFormViewItem *viewItem = qobject_cast<HbDataFormViewItem *>
       
  1256         (form->itemByIndex(index));
       
  1257     HbWidget *widget = viewItem->dataItemContentWidget();
       
  1258     //QString widgetClassName(widget->metaObject()->className());
       
  1259     //qDebug() << widgetClassName;
       
  1260     return widget;
       
  1261 }
       
  1262 
       
  1263 /**
       
  1264  * Writes initial settings to CommsDat needed by some test cases.
       
  1265  */
       
  1266 void TestCpPacketDataApPlugin::subInitializeCommsDat()
       
  1267 {
       
  1268     QScopedPointer<CmManagerShim> cmManager(new CmManagerShim);
       
  1269     QScopedPointer<CmConnectionMethodShim> connectionMethod( 
       
  1270         cmManager->connectionMethod(testApId));
       
  1271     
       
  1272     // Initial settings
       
  1273     connectionMethod->setStringAttribute(
       
  1274         CMManagerShim::PacketDataIFAuthName,
       
  1275         tooLongUserName);
       
  1276     
       
  1277     connectionMethod->update();
       
  1278 }
   527 
  1279 
   528 /**
  1280 /**
   529  * Creates the settings view and shows it.
  1281  * Creates the settings view and shows it.
   530  */
  1282  */
   531 void TestCpPacketDataApPlugin::subCreateSettingsView(uint connectionMethodId)
  1283 void TestCpPacketDataApPlugin::subCreateSettingsView(uint connectionMethodId)
   547 void TestCpPacketDataApPlugin::subVerifyString(
  1299 void TestCpPacketDataApPlugin::subVerifyString(
   548     CMManagerShim::ConnectionMethodAttribute attribute,
  1300     CMManagerShim::ConnectionMethodAttribute attribute,
   549     HbDataFormModelItem *item,
  1301     HbDataFormModelItem *item,
   550     QString expected)
  1302     QString expected)
   551 {
  1303 {
       
  1304     QTest::qWait(waitTime);
       
  1305 
   552     // Read attribute value from CommsDat
  1306     // Read attribute value from CommsDat
   553     QScopedPointer<CmManagerShim> cmManager(new CmManagerShim);
  1307     QScopedPointer<CmManagerShim> cmManager(new CmManagerShim);
   554     QScopedPointer<CmConnectionMethodShim> connectionMethod( 
  1308     QScopedPointer<CmConnectionMethodShim> connectionMethod( 
   555         cmManager->connectionMethod(testApId));
  1309         cmManager->connectionMethod(testApId));
   556     QString commsdat = connectionMethod->getStringAttribute(attribute);
  1310     QString commsdat = connectionMethod->getStringAttribute(attribute);
   567  * Clears a HbLineEdit.
  1321  * Clears a HbLineEdit.
   568  */
  1322  */
   569 void TestCpPacketDataApPlugin::subClearLineEdit(
  1323 void TestCpPacketDataApPlugin::subClearLineEdit(
   570     uint length)
  1324     uint length)
   571 {
  1325 {
   572     // Erase old string
       
   573     QTest::qWait(5000); // TODO: Remove this when item specific menu doesn't pop up anymore
       
   574 
       
   575     // Move cursor to end of string
  1326     // Move cursor to end of string
   576     //HbAutoTest::keyClick(mMainWindow, Qt::Key_End, 0, waitTime); // doesn't seem to do anything? 
  1327     //HbAutoTest::keyClick(mMainWindow, Qt::Key_End, Qt::ControlModifier, waitTime); // doesn't seem to do anything? 
   577     HbAutoTest::keyClick(mMainWindow, Qt::Key_Down, 0, waitTime);
  1328     HbAutoTest::keyClick(mMainWindow, Qt::Key_Down, 0, waitTime);
   578     HbAutoTest::keyClick(mMainWindow, Qt::Key_Down, 0, waitTime);
  1329     HbAutoTest::keyClick(mMainWindow, Qt::Key_Down, 0, waitTime);
   579     HbAutoTest::keyClick(mMainWindow, Qt::Key_Down, 0, waitTime);
  1330     HbAutoTest::keyClick(mMainWindow, Qt::Key_Down, 0, waitTime);
   580     for (int i=0; i<25; i++) {
  1331     for (int i=0; i<25; i++) {
   581         HbAutoTest::keyClick(mMainWindow, Qt::Key_Right, 0, waitTime);
  1332         HbAutoTest::keyClick(mMainWindow, Qt::Key_Right, 0, waitTime);
   582     }
  1333     }
       
  1334     // Erase string
   583     for (int i=0; i<length; i++) {
  1335     for (int i=0; i<length; i++) {
   584         HbAutoTest::keyClick(mMainWindow, Qt::Key_Backspace, 0, waitTime);
  1336         HbAutoTest::keyClick(mMainWindow, Qt::Key_Backspace, 0, waitTime);
   585     }
  1337     }
   586 }
  1338 }
   587 
  1339 
   602  */
  1354  */
   603 void TestCpPacketDataApPlugin::subVerifyBool(
  1355 void TestCpPacketDataApPlugin::subVerifyBool(
   604     CMManagerShim::ConnectionMethodAttribute attribute,
  1356     CMManagerShim::ConnectionMethodAttribute attribute,
   605     bool expected)
  1357     bool expected)
   606 {
  1358 {
       
  1359     QTest::qWait(waitTime);
       
  1360     
   607     // Read attribute value from CommsDat
  1361     // Read attribute value from CommsDat
   608     QScopedPointer<CmManagerShim> cmManager(new CmManagerShim);
  1362     QScopedPointer<CmManagerShim> cmManager(new CmManagerShim);
   609     QScopedPointer<CmConnectionMethodShim> connectionMethod( 
  1363     QScopedPointer<CmConnectionMethodShim> connectionMethod( 
   610         cmManager->connectionMethod(testApId));
  1364         cmManager->connectionMethod(testApId));
   611     bool commsdat = connectionMethod->getBoolAttribute(attribute);
  1365     bool commsdat = connectionMethod->getBoolAttribute(attribute);
       
  1366     
       
  1367     QCOMPARE(commsdat, expected);
       
  1368 }
       
  1369 
       
  1370 /**
       
  1371  * Verifies that given attribute contains expected integer value in CommsDat. 
       
  1372  */
       
  1373 void TestCpPacketDataApPlugin::subVerifyUint(
       
  1374     CMManagerShim::ConnectionMethodAttribute attribute,
       
  1375     uint expected)
       
  1376 {
       
  1377     QTest::qWait(waitTime);
       
  1378 
       
  1379     // Read attribute value from CommsDat
       
  1380     QScopedPointer<CmManagerShim> cmManager(new CmManagerShim);
       
  1381     QScopedPointer<CmConnectionMethodShim> connectionMethod( 
       
  1382         cmManager->connectionMethod(testApId));
       
  1383     uint commsdat = connectionMethod->getIntAttribute(attribute);
   612     
  1384     
   613     QCOMPARE(commsdat, expected);
  1385     QCOMPARE(commsdat, expected);
   614 }
  1386 }
   615 
  1387 
   616 /**
  1388 /**
   634     }
  1406     }
   635 
  1407 
   636     Q_ASSERT(target);
  1408     Q_ASSERT(target);
   637     HbAutoTest::mouseClick(mMainWindow, static_cast<HbWidget *>(target));
  1409     HbAutoTest::mouseClick(mMainWindow, static_cast<HbWidget *>(target));
   638 }
  1410 }
       
  1411 
       
  1412 /**
       
  1413  * Scrolls the tested view to the bottom.
       
  1414  */
       
  1415 void TestCpPacketDataApPlugin::subScrollToBottom()
       
  1416 {
       
  1417     // Scroll to the bottom of the view
       
  1418     HbAutoTest::mousePress(mMainWindow, mTestView, scrollMiddle);
       
  1419     QTest::qWait(1000);
       
  1420     HbAutoTest::mouseMove(mMainWindow, mTestView, scrollTop);
       
  1421     HbAutoTest::mouseRelease(mMainWindow, mTestView, scrollTop);
       
  1422 }
       
  1423 
       
  1424 /**
       
  1425  * Scrolls the tested view to the top.
       
  1426  */
       
  1427 void TestCpPacketDataApPlugin::subScrollToTop()
       
  1428 {
       
  1429     // Scroll to the top of the view
       
  1430     HbAutoTest::mousePress(mMainWindow, mTestView, scrollMiddle);
       
  1431     QTest::qWait(1000);
       
  1432     HbAutoTest::mouseMove(mMainWindow, mTestView, scrollBottom);
       
  1433     HbAutoTest::mouseRelease(mMainWindow, mTestView, scrollBottom);
       
  1434 }