--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cpwlanapplugin/tsrc/ut/testcpwlanapplugin.cpp Tue Aug 31 15:35:44 2010 +0300
@@ -0,0 +1,1519 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Control Panel WLAN AP plugin unit testing.
+*/
+
+#include <HbApplication>
+#include <HbMainWindow>
+#include <HbView>
+#include <HbDialog>
+#include <HbRadioButtonList>
+#include <HbAction>
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <HbDataFormModelItem>
+#include <HbDataFormViewItem>
+#include <HbModelIterator>
+#include <QSharedPointer>
+#include <QtTest/QtTest>
+#include <cpbearerapplugininterface.h>
+#include <cmmanager_shim.h>
+#include <cmconnectionmethod_shim.h>
+
+#include "cpwlanapview.h"
+#include "cpwlanapadvancedview.h"
+
+#include "hbautotest.h"
+#include "testcpwlanapplugin.h"
+
+// Following flag must be defined if WLAN security settings plugins
+// (WEP, WPA/WPA2 and WPA2) are available. Flag can be removed when the
+// plugins are released.
+#define WLAN_SECURITY_PLUGINS_AVAILABLE
+
+// -----------------------------------------------------------------------------
+// STATIC TEST DATA
+// -----------------------------------------------------------------------------
+
+// Connection method (AP) ID used for testing
+static const uint testApId = 5;
+
+static const QString pluginDir =
+ "\\resource\\qt\\plugins\\controlpanel\\bearerap";
+
+static const QString pluginName = "cpwlanapplugin.dll";
+
+// Time to wait before continuing after an UI step
+static const int waitTime = 10;
+
+// UI coordinates
+static const QPoint scrollMiddle(350, 280);
+static const QPoint scrollTop(350, 30);
+static const QPoint scrollBottom(350, 540);
+
+// Use positive offset if dropdown opens under the combobox
+static const QPoint comboBoxFirstItemOffset(80, 75);
+static const QPoint comboBoxItemOffset(0, 51);
+// Use negative offset if dropdown opens above the combobox
+static const QPoint comboBoxFirstItemNegativeOffset(80, -29);
+static const QPoint comboBoxItemNegativeOffset(0, -51);
+
+static const QPoint exitEditorOffset(-10, -20);
+
+static const QPoint messageBoxOkButtonOffset(160, 140);
+
+// Advanced settings groups
+static const QPoint ipv4Group(160, 10);
+static const QPoint ipv6Group(160, 60);
+static const QPoint proxyGroup(160, 110);
+
+// -----------------------------------------------------------------------------
+// FRAMEWORK FUNCTIONS
+// -----------------------------------------------------------------------------
+
+/**
+ * Test main function. Runs all test cases.
+ */
+#ifndef TESTCMAPPLSETTINGSUI_NO_OUTPUT_REDIRECT
+int main(int argc, char *argv[])
+{
+ HbApplication app(argc, argv);
+ app.setApplicationName("TestCpWlanApPlugin");
+
+ char *pass[3];
+ pass[0] = argv[0];
+ pass[1] = "-o";
+ pass[2] = "c:\\data\\TestCpWlanApPlugin.txt";
+
+ TestCpWlanApPlugin tc;
+ int res = QTest::qExec(&tc, 3, pass);
+
+ return res;
+}
+#else
+QTEST_MAIN(TestCpWlanApPlugin)
+#endif
+
+/**
+ * This function is be called before the first test case is executed.
+ */
+void TestCpWlanApPlugin::initTestCase()
+{
+ mMainWindow = new HbAutoTestMainWindow;
+ //mMainWindow = new HbMainWindow;
+ mMainWindow->show();
+
+ // Load plugin
+ QDir dir(pluginDir);
+ mPluginLoader = new QPluginLoader(dir.absoluteFilePath(pluginName));
+ mPlugin = qobject_cast<CpBearerApPluginInterface *>(mPluginLoader->instance());
+ QVERIFY(mPlugin != NULL);
+
+ // Verify plugin bearer type
+ QVERIFY(mPlugin->bearerType() == CMManagerShim::BearerTypeWlan);
+
+ // Create WLAN settings view (connection method ID given)
+ subCreateSettingsView(testApId);
+
+ subGetUiWidgets();
+}
+
+/**
+ * This function is be called after the last test case was executed.
+ */
+void TestCpWlanApPlugin::cleanupTestCase()
+{
+ delete mMainWindow;
+ mMainWindow = 0;
+
+ // Force unloading of plugin
+ mPluginLoader->unload();
+ delete mPluginLoader;
+ mPluginLoader = 0;
+}
+
+/**
+ * This function is be called before each test case is executed.
+ */
+void TestCpWlanApPlugin::init()
+{
+ QTest::qWait(1000);
+}
+
+/**
+ * This function is be called after each test case is executed.
+ */
+void TestCpWlanApPlugin::cleanup()
+{
+}
+
+// -----------------------------------------------------------------------------
+// TEST CASES
+// -----------------------------------------------------------------------------
+
+/**
+ * Tests changing of connection name.
+ */
+void TestCpWlanApPlugin::tcChangeConnectionName()
+{
+ QFETCH(QString, string);
+ QFETCH(QString, result);
+
+ HbAutoTest::mouseClick(mMainWindow, mConnectionNameWidget);
+
+ // Erase old string
+ QString text = mTestView->mConnectionNameItem->contentWidgetData("text").toString();
+ subClearLineEdit(text.size());
+
+ // Enter new string
+ HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
+
+ HbAutoTest::mouseClick(mMainWindow, mConnectionNameWidget, exitEditorOffset);
+
+ // Verify both commsdat and UI widget
+ subVerifyString(
+ CMManagerShim::CmName,
+ mTestView->mConnectionNameItem,
+ result);
+}
+
+/**
+ * Test data for connection name change test case.
+ */
+void TestCpWlanApPlugin::tcChangeConnectionName_data()
+{
+ QTest::addColumn<QString>("string");
+ QTest::addColumn<QString>("result");
+
+ QTest::newRow("maximum length")
+ << "really long name 123456789012345678901234567890123"
+ << "really long name 123456789012345678901234567890123";
+ QTest::newRow("too long")
+ << "too long name 12345678901234567890123456789012345678901234"
+ << "too long name 123456789012345678901234567890123456";
+ QTest::newRow("basic") // last one must always fit on one line in UI
+ << "test WLAN AP"
+ << "test WLAN AP";
+}
+
+/**
+ * Tests that empty connection name is not accepted.
+ */
+void TestCpWlanApPlugin::tcConnectionNameEmpty()
+{
+ QString previous =
+ mTestView->mConnectionNameItem->contentWidgetData("text").toString();
+
+ HbAutoTest::mouseClick(mMainWindow, mConnectionNameWidget);
+
+ // Erase old string
+ QString text = mTestView->mConnectionNameItem->contentWidgetData("text").toString();
+ subClearLineEdit(text.size());
+
+ HbAutoTest::mouseClick(mMainWindow, mConnectionNameWidget, exitEditorOffset);
+
+ QTest::qWait(100);
+ // Dismiss messagebox
+ HbAutoTest::mouseClick(
+ mMainWindow,
+ mTestView->mMessageBox.data(),
+ messageBoxOkButtonOffset);
+
+ // Verify both commsdat and UI widget
+ subVerifyString(
+ CMManagerShim::CmName,
+ mTestView->mConnectionNameItem,
+ previous);
+}
+
+/**
+ * Tests changing of WLAN network name.
+ */
+void TestCpWlanApPlugin::tcChangeWlanNetworkName()
+{
+ QFETCH(QString, string);
+ QFETCH(QString, result);
+
+ HbAutoTest::mouseClick(mMainWindow, mWlanNetworkNameWidget);
+
+ // Erase old string
+ QString text = mTestView->mWlanNetworkNameItem->contentWidgetData("text").toString();
+ subClearLineEdit(text.size());
+
+ // Enter new string
+ HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
+
+ HbAutoTest::mouseClick(mMainWindow, mWlanNetworkNameWidget, exitEditorOffset);
+
+ // Verify both commsdat and UI widget
+ subVerifyString(
+ CMManagerShim::WlanSSID,
+ mTestView->mWlanNetworkNameItem,
+ result);
+}
+
+/**
+ * Test data for WLAN network name change test case.
+ */
+void TestCpWlanApPlugin::tcChangeWlanNetworkName_data()
+{
+ QTest::addColumn<QString>("string");
+ QTest::addColumn<QString>("result");
+
+ QTest::newRow("maximum length")
+ << "really long name 123456789012345"
+ << "really long name 123456789012345";
+ QTest::newRow("too long")
+ << "too long name 123456789012345678901234567890"
+ << "too long name 123456789012345678";
+ QTest::newRow("basic") // last one must always fit on one line in UI
+ << "test SSID"
+ << "test SSID";
+}
+
+/**
+ * Tests that empty WLAN network name is not accepted.
+ */
+void TestCpWlanApPlugin::tcWlanNetworkNameEmpty()
+{
+ QString previous =
+ mTestView->mWlanNetworkNameItem->contentWidgetData("text").toString();
+
+ HbAutoTest::mouseClick(mMainWindow, mWlanNetworkNameWidget);
+
+ // Erase old string
+ QString text = mTestView->mWlanNetworkNameItem->contentWidgetData("text").toString();
+ subClearLineEdit(text.size());
+
+ HbAutoTest::mouseClick(mMainWindow, mWlanNetworkNameWidget, exitEditorOffset);
+
+ QTest::qWait(100);
+ // Dismiss messagebox
+ HbAutoTest::mouseClick(
+ mMainWindow,
+ mTestView->mMessageBox.data(),
+ messageBoxOkButtonOffset);
+
+ // Verify both commsdat and UI widget
+ subVerifyString(
+ CMManagerShim::WlanSSID,
+ mTestView->mWlanNetworkNameItem,
+ previous);
+}
+
+/**
+ * Tests changing of WLAN network status.
+ */
+void TestCpWlanApPlugin::tcChangeNetworkStatus()
+{
+ QPointF publicPointOffset = comboBoxFirstItemOffset;
+ QPointF hiddenPointOffset = comboBoxFirstItemOffset + comboBoxItemOffset;
+
+ // Set network status to hidden
+ HbAutoTest::mouseClick(mMainWindow, mNetworkStatusWidget);
+ HbAutoTest::mouseClick(mMainWindow, mNetworkStatusWidget, hiddenPointOffset, 100);
+ subVerifyNetworkStatus(HiddenStatus);
+
+ // Set network status to public
+ HbAutoTest::mouseClick(mMainWindow, mNetworkStatusWidget);
+ HbAutoTest::mouseClick(mMainWindow, mNetworkStatusWidget, publicPointOffset, 100);
+ subVerifyNetworkStatus(PublicStatus);
+}
+
+/**
+ * Tests changing of WLAN network mode.
+ */
+void TestCpWlanApPlugin::tcChangeNetworkMode()
+{
+ QPointF infraPointOffset = comboBoxFirstItemOffset;
+ QPointF adHocPointOffset = comboBoxFirstItemOffset + comboBoxItemOffset;
+
+ // Set network mode to ad-hoc
+ HbAutoTest::mouseClick(mMainWindow, mNetworkModeWidget);
+ HbAutoTest::mouseClick(mMainWindow, mNetworkModeWidget, adHocPointOffset, 100);
+ subVerifyUint(CMManagerShim::WlanConnectionMode, CMManagerShim::Adhoc);
+
+ // Set network mode to infrastructure
+ HbAutoTest::mouseClick(mMainWindow, mNetworkModeWidget);
+ HbAutoTest::mouseClick(mMainWindow, mNetworkModeWidget, infraPointOffset, 100);
+ subVerifyUint(CMManagerShim::WlanConnectionMode, CMManagerShim::Infra);
+}
+
+/**
+ * Tests changing of WLAN security mode.
+ */
+void TestCpWlanApPlugin::tcChangeSecurityMode()
+{
+#ifdef WLAN_SECURITY_PLUGINS_AVAILABLE
+ QPointF openPointOffset = comboBoxFirstItemNegativeOffset + comboBoxItemNegativeOffset * 3;
+ QPointF wepPointOffset = comboBoxFirstItemNegativeOffset + comboBoxItemNegativeOffset * 2;
+ QPointF wpaPointOffset = comboBoxFirstItemNegativeOffset + comboBoxItemNegativeOffset;
+ QPointF wpa2PointOffset = comboBoxFirstItemNegativeOffset;
+#else
+ QPointF openPointOffset = comboBoxFirstItemNegativeOffset;
+#endif
+
+#ifdef WLAN_SECURITY_PLUGINS_AVAILABLE
+ // Set security mode to WEP
+ HbAutoTest::mouseClick(mMainWindow, mSecurityModeWidget);
+ QTest::qWait(100);
+ HbAutoTest::mouseClick(mMainWindow, mSecurityModeWidget, wepPointOffset, 100);
+ subVerifyUint(
+ CMManagerShim::WlanSecurityMode,
+ CMManagerShim::WlanSecModeWep);
+
+ QTest::qWait(1000);
+#endif
+ // Set security mode to open
+ HbAutoTest::mouseClick(mMainWindow, mSecurityModeWidget);
+ QTest::qWait(100);
+ HbAutoTest::mouseClick(mMainWindow, mSecurityModeWidget, openPointOffset, 100);
+ subVerifyUint(
+ CMManagerShim::WlanSecurityMode,
+ CMManagerShim::WlanSecModeOpen);
+}
+
+/**
+ * Scrolls the tested view to the bottom.
+ */
+void TestCpWlanApPlugin::tcScrollToBottom()
+{
+ subScrollToBottom();
+}
+
+/**
+ * Gets UI widget pointers because homepage view item may have been
+ * created before it was visible on the UI.
+ */
+void TestCpWlanApPlugin::tcGetUiWidgets()
+{
+ subGetUiWidgets();
+}
+
+/**
+ * Tests changing of homepage.
+ */
+void TestCpWlanApPlugin::tcChangeHomepage()
+{
+ QFETCH(QString, string);
+ QFETCH(QString, result);
+
+ HbAutoTest::mouseClick(mMainWindow, mHomepageWidget);
+
+ // Erase old string
+ QString text = mTestView->mHomepageItem->contentWidgetData("text").toString();
+ subClearLineEdit(text.size());
+
+ // Enter new string
+ HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
+
+ HbAutoTest::mouseClick(mMainWindow, mHomepageWidget, exitEditorOffset);
+
+ // Verify both commsdat and UI widget
+ subVerifyString(
+ CMManagerShim::CmStartPage,
+ mTestView->mHomepageItem,
+ result);
+}
+
+/**
+ * Test data for homepage change test case.
+ */
+void TestCpWlanApPlugin::tcChangeHomepage_data()
+{
+ QTest::addColumn<QString>("string");
+ QTest::addColumn<QString>("result");
+
+ QTest::newRow("long")
+ << "http://developer.symbian.org/main/documentation/reference/s^3/doc_source/AboutSymbianOSLibrary9.6/index.html"
+ << "http://developer.symbian.org/main/documentation/reference/s^3/doc_source/AboutSymbianOSLibrary9.6/index.html";
+ QTest::newRow("basic") // last one should always fit on one line in UI
+ << "http://www.symbian.org/"
+ << "http://www.symbian.org/";
+ QTest::newRow("empty")
+ << ""
+ << "";
+}
+
+/**
+ * Opens advanced settings view.
+ */
+void TestCpWlanApPlugin::tcOpenAdvancedSettingsView()
+{
+ // Launch advanced settings view
+ bool status = connect(
+ this,
+ SIGNAL(menuActionTriggered(HbAction *)),
+ mTestView,
+ SLOT(menuActionTriggered(HbAction *)));
+ Q_ASSERT(status);
+ emit menuActionTriggered(mTestView->mAdvancedSettingsAction);
+
+ QTest::qWait(1000);
+
+ mTestViewAdvanced = static_cast<CpWlanApAdvancedView *>(mMainWindow->currentView());
+}
+
+/**
+ * Expands the IPv4 settings group and gets UI widget pointers.
+ */
+void TestCpWlanApPlugin::tcExpandIpv4SettingsAndGetUiWidgets()
+{
+ HbAutoTest::mouseClick(mMainWindow, mTestViewAdvanced, ipv4Group);
+
+ QTest::qWait(500);
+
+ subGetAdvancedUiWidgets(0);
+}
+
+/**
+ * Tests enabling of automatic phone IP address.
+ */
+void TestCpWlanApPlugin::tcEnableAutomaticIpv4Address()
+{
+ Qt::CheckState state = static_cast<Qt::CheckState>
+ (mTestViewAdvanced->mIpv4Automatic->contentWidgetData("checkState").toInt());
+ if (state == Qt::Checked) {
+ // Disable automatic IP address
+ HbAutoTest::mouseClick(mMainWindow, mIpv4AddressAutomaticWidget);
+ }
+ // Enable automatic IP address
+ HbAutoTest::mouseClick(mMainWindow, mIpv4AddressAutomaticWidget);
+ subVerifyBool(
+ CMManagerShim::CmIPAddrFromServer,
+ true);
+
+ // Ensure that editing the IP address is not allowed
+ HbAutoTest::mouseClick(mMainWindow, mIpv4AddressWidget);
+ HbAutoTest::mouseClick(mMainWindow, mIpv4SubnetMaskWidget);
+ HbAutoTest::mouseClick(mMainWindow, mIpv4GatewayWidget);
+}
+
+/**
+ * Tests disabling of automatic phone IP address.
+ */
+void TestCpWlanApPlugin::tcEnableUserDefinedIpv4Address()
+{
+ Qt::CheckState state = static_cast<Qt::CheckState>
+ (mTestViewAdvanced->mIpv4Automatic->contentWidgetData("checkState").toInt());
+ if (state == Qt::Checked) {
+ // Disable automatic IP address
+ HbAutoTest::mouseClick(mMainWindow, mIpv4AddressAutomaticWidget);
+ }
+ // Can't verify the setting from CommsDat here, because CMManager will
+ // set it back to true if no valid IP address is yet defined. The flag
+ // is verified in tcChangeIpAddress().
+}
+
+/**
+ * Tests changing of IP address.
+ */
+void TestCpWlanApPlugin::tcChangeIpAddress()
+{
+ QFETCH(QString, string);
+ QFETCH(QString, result);
+
+ HbAutoTest::mouseClick(mMainWindow, mIpv4AddressWidget);
+
+ // Erase old string
+ QString text = mTestViewAdvanced->mIpv4Address->contentWidgetData("text").toString();
+ subClearLineEdit(text.size());
+
+ // Enter new string
+ HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
+
+ HbAutoTest::mouseClick(mMainWindow, mIpv4AddressWidget, exitEditorOffset);
+
+ // Verify both commsdat and UI widget
+ subVerifyString(
+ CMManagerShim::CmIPAddress,
+ mTestViewAdvanced->mIpv4Address,
+ result);
+ subVerifyBool(
+ CMManagerShim::CmIPAddrFromServer,
+ false);
+}
+
+/**
+ * Test data for IP address change test case.
+ */
+void TestCpWlanApPlugin::tcChangeIpAddress_data()
+{
+ QTest::addColumn<QString>("string");
+ QTest::addColumn<QString>("result");
+
+ QTest::newRow("too long")
+ << "255.255.255.2551234"
+ << "255.255.255.255";
+ QTest::newRow("normal")
+ << "192.168.0.1"
+ << "192.168.0.1";
+}
+
+/**
+ * Tests changing of subnet mask.
+ */
+void TestCpWlanApPlugin::tcChangeSubnetMask()
+{
+ QFETCH(QString, string);
+ QFETCH(QString, result);
+
+ HbAutoTest::mouseClick(mMainWindow, mIpv4SubnetMaskWidget);
+
+ // Erase old string
+ QString text = mTestViewAdvanced->mIpv4SubnetMask->contentWidgetData("text").toString();
+ subClearLineEdit(text.size());
+
+ // Enter new string
+ HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
+
+ HbAutoTest::mouseClick(mMainWindow, mIpv4SubnetMaskWidget, exitEditorOffset);
+
+ // Verify both commsdat and UI widget
+ subVerifyString(
+ CMManagerShim::CmIPNetmask,
+ mTestViewAdvanced->mIpv4SubnetMask,
+ result);
+}
+
+/**
+ * Test data for subnet mask change test case.
+ */
+void TestCpWlanApPlugin::tcChangeSubnetMask_data()
+{
+ QTest::addColumn<QString>("string");
+ QTest::addColumn<QString>("result");
+
+ QTest::newRow("empty")
+ << ""
+ << "0.0.0.0";
+ QTest::newRow("zero")
+ << "0.0.0.0"
+ << "0.0.0.0";
+ QTest::newRow("too long")
+ << "255.255.255.2551234"
+ << "255.255.255.255";
+ QTest::newRow("normal")
+ << "192.168.0.1"
+ << "192.168.0.1";
+}
+
+/**
+ * Tests invalid subnet mask.
+ */
+void TestCpWlanApPlugin::tcInvalidSubnetMask()
+{
+ QString previous =
+ mTestViewAdvanced->mIpv4SubnetMask->contentWidgetData("text").toString();
+
+ HbAutoTest::mouseClick(mMainWindow, mIpv4SubnetMaskWidget);
+
+ // Erase old string
+ QString text = mTestViewAdvanced->mIpv4SubnetMask->contentWidgetData("text").toString();
+ subClearLineEdit(text.size());
+
+ // Enter new string
+ HbAutoTest::keyClicks(mMainWindow, "999.999.999.999", 0, waitTime);
+
+ HbAutoTest::mouseClick(mMainWindow, mIpv4SubnetMaskWidget, exitEditorOffset);
+
+ QTest::qWait(100);
+ // Dismiss messagebox
+ HbAutoTest::mouseClick(
+ mMainWindow,
+ mTestViewAdvanced->mMessageBox.data(),
+ messageBoxOkButtonOffset);
+
+ // Verify both commsdat and UI widget
+ subVerifyString(
+ CMManagerShim::CmIPNetmask,
+ mTestViewAdvanced->mIpv4SubnetMask,
+ previous);
+}
+
+/**
+ * Tests changing of gateway.
+ */
+void TestCpWlanApPlugin::tcChangeGateway()
+{
+ QFETCH(QString, string);
+ QFETCH(QString, result);
+
+ HbAutoTest::mouseClick(mMainWindow, mIpv4GatewayWidget);
+
+ // Erase old string
+ QString text = mTestViewAdvanced->mIpv4Gateway->contentWidgetData("text").toString();
+ subClearLineEdit(text.size());
+
+ // Enter new string
+ HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
+
+ HbAutoTest::mouseClick(mMainWindow, mIpv4GatewayWidget, exitEditorOffset);
+
+ // Verify both commsdat and UI widget
+ subVerifyString(
+ CMManagerShim::CmIPGateway,
+ mTestViewAdvanced->mIpv4Gateway,
+ result);
+}
+
+/**
+ * Test data for gateway change test case.
+ */
+void TestCpWlanApPlugin::tcChangeGateway_data()
+{
+ QTest::addColumn<QString>("string");
+ QTest::addColumn<QString>("result");
+
+ QTest::newRow("empty")
+ << ""
+ << "0.0.0.0";
+ QTest::newRow("zero")
+ << "0.0.0.0"
+ << "0.0.0.0";
+ QTest::newRow("too long")
+ << "255.255.255.2551234"
+ << "255.255.255.255";
+ QTest::newRow("normal")
+ << "192.168.0.1"
+ << "192.168.0.1";
+}
+
+/**
+ * Tests invalid gateway address.
+ */
+void TestCpWlanApPlugin::tcInvalidGateway()
+{
+ QString previous =
+ mTestViewAdvanced->mIpv4Gateway->contentWidgetData("text").toString();
+
+ HbAutoTest::mouseClick(mMainWindow, mIpv4GatewayWidget);
+
+ // Erase old string
+ QString text = mTestViewAdvanced->mIpv4Gateway->contentWidgetData("text").toString();
+ subClearLineEdit(text.size());
+
+ // Enter new string
+ HbAutoTest::keyClicks(mMainWindow, "999.999.999.999", 0, waitTime);
+
+ HbAutoTest::mouseClick(mMainWindow, mIpv4GatewayWidget, exitEditorOffset);
+
+ QTest::qWait(100);
+ // Dismiss messagebox
+ HbAutoTest::mouseClick(
+ mMainWindow,
+ mTestViewAdvanced->mMessageBox.data(),
+ messageBoxOkButtonOffset);
+
+ // Verify both commsdat and UI widget
+ subVerifyString(
+ CMManagerShim::CmIPGateway,
+ mTestViewAdvanced->mIpv4Gateway,
+ previous);
+}
+
+/**
+ * Scrolls the tested view to the bottom.
+ */
+void TestCpWlanApPlugin::tcScrollToBottom2()
+{
+ subScrollToBottom();
+}
+
+/**
+ * Tests enabling of automatic IPv4 DNS addresses.
+ */
+void TestCpWlanApPlugin::tcEnableAutomaticIpv4DnsAddress()
+{
+ Qt::CheckState state = static_cast<Qt::CheckState>
+ (mTestViewAdvanced->mIpv4DnsAutomatic->contentWidgetData("checkState").toInt());
+ if (state == Qt::Checked) {
+ // Disable automatic IPv4 DNS address
+ HbAutoTest::mouseClick(mMainWindow, mIpv4DnsAddressAutomaticWidget);
+ }
+ // Enable automatic IPv4 DNS address
+ HbAutoTest::mouseClick(mMainWindow, mIpv4DnsAddressAutomaticWidget);
+ subVerifyBool(
+ CMManagerShim::CmIPDNSAddrFromServer,
+ true);
+
+ // Ensure that editing the IP address is not allowed
+ HbAutoTest::mouseClick(mMainWindow, mIpv4PrimaryDnsAddressWidget);
+ HbAutoTest::mouseClick(mMainWindow, mIpv4SecondaryDnsAddressWidget);
+}
+
+/**
+ * Tests disabling of automatic IPv4 DNS addresses.
+ */
+void TestCpWlanApPlugin::tcEnableUserDefinedIpv4DnsAddress()
+{
+ Qt::CheckState state = static_cast<Qt::CheckState>
+ (mTestViewAdvanced->mIpv4DnsAutomatic->contentWidgetData("checkState").toInt());
+ if (state == Qt::Checked) {
+ // Disable automatic IPv4 DNS address
+ HbAutoTest::mouseClick(mMainWindow, mIpv4DnsAddressAutomaticWidget);
+ }
+ // Can't verify the setting from CommsDat here, because CMManager will
+ // set it back to true if no valid IP address is yet defined. The flag
+ // is verified in tcChangeIpv4DnsAddress().
+}
+
+/**
+ * Tests changing of IPv4 DNS addresses.
+ */
+void TestCpWlanApPlugin::tcChangeIpv4DnsAddress()
+{
+ QFETCH(QString, string);
+ QFETCH(QString, result);
+
+ // Primary DNS address
+ HbAutoTest::mouseClick(mMainWindow, mIpv4PrimaryDnsAddressWidget);
+
+ // Erase old string
+ QString text = mTestViewAdvanced->mIpv4DnsAddress1->contentWidgetData("text").toString();
+ subClearLineEdit(text.size());
+
+ // Enter new string
+ HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
+
+ HbAutoTest::mouseClick(mMainWindow, mIpv4PrimaryDnsAddressWidget, exitEditorOffset);
+
+ // Verify both commsdat and UI widget
+ subVerifyString(
+ CMManagerShim::CmIPNameServer1,
+ mTestViewAdvanced->mIpv4DnsAddress1,
+ result);
+
+ // Secondary DNS address
+ HbAutoTest::mouseClick(mMainWindow, mIpv4SecondaryDnsAddressWidget);
+
+ // Erase old string
+ text = mTestViewAdvanced->mIpv4DnsAddress2->contentWidgetData("text").toString();
+ subClearLineEdit(text.size());
+
+ // Enter new string
+ HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
+
+ HbAutoTest::mouseClick(mMainWindow, mIpv4SecondaryDnsAddressWidget, exitEditorOffset);
+
+ // Verify both commsdat and UI widget
+ subVerifyString(
+ CMManagerShim::CmIPNameServer2,
+ mTestViewAdvanced->mIpv4DnsAddress2,
+ result);
+
+ // Verify user defined address is in use
+ subVerifyBool(
+ CMManagerShim::CmIPDNSAddrFromServer,
+ false);
+}
+
+/**
+ * Test data for IPv4 DNS address change test case.
+ */
+void TestCpWlanApPlugin::tcChangeIpv4DnsAddress_data()
+{
+ QTest::addColumn<QString>("string");
+ QTest::addColumn<QString>("result");
+
+ QTest::newRow("too long")
+ << "255.255.255.2551234"
+ << "255.255.255.255";
+ QTest::newRow("normal")
+ << "192.168.0.1"
+ << "192.168.0.1";
+}
+
+/**
+ * Tests invalid IPv4 DNS address.
+ */
+void TestCpWlanApPlugin::tcInvalidIpv4DnsAddress()
+{
+ QString previous =
+ mTestViewAdvanced->mIpv4DnsAddress1->contentWidgetData("text").toString();
+
+ HbAutoTest::mouseClick(mMainWindow, mIpv4PrimaryDnsAddressWidget);
+
+ // Erase old string
+ QString text = mTestViewAdvanced->mIpv4DnsAddress1->contentWidgetData("text").toString();
+ subClearLineEdit(text.size());
+
+ // Enter new string
+ HbAutoTest::keyClicks(mMainWindow, "999.999.999.999", 0, waitTime);
+
+ HbAutoTest::mouseClick(mMainWindow, mIpv4PrimaryDnsAddressWidget, exitEditorOffset);
+
+ QTest::qWait(100);
+ // Dismiss messagebox
+ HbAutoTest::mouseClick(
+ mMainWindow,
+ mTestViewAdvanced->mMessageBox.data(),
+ messageBoxOkButtonOffset);
+
+ // Verify both commsdat and UI widget
+ subVerifyString(
+ CMManagerShim::CmIPNameServer1,
+ mTestViewAdvanced->mIpv4DnsAddress1,
+ previous);
+}
+
+/**
+ * Scrolls the tested view to the top.
+ */
+void TestCpWlanApPlugin::tcScrollToTop()
+{
+ subScrollToTop();
+}
+
+/**
+ * Collapses the IPv4 settings group.
+ */
+void TestCpWlanApPlugin::tcCollapseIpv4Settings()
+{
+ HbAutoTest::mouseClick(mMainWindow, mTestViewAdvanced, ipv4Group);
+}
+
+/**
+ * Expands the IPv6 settings group and gets UI widget pointers.
+ */
+void TestCpWlanApPlugin::tcExpandIpv6SettingsAndGetUiWidgets()
+{
+ HbAutoTest::mouseClick(mMainWindow, mTestViewAdvanced, ipv6Group);
+
+ QTest::qWait(500);
+
+ subGetAdvancedUiWidgets(1);
+}
+
+/**
+ * Tests enabling of automatic IPv6 DNS addresses.
+ */
+void TestCpWlanApPlugin::tcEnableAutomaticIpv6DnsAddress()
+{
+ // Enable automatic IPv6 DNS address
+ QPointF automaticPointOffset = comboBoxFirstItemOffset;
+ HbAutoTest::mouseClick(mMainWindow, mIpv6DnsAddressAutomaticWidget);
+ QTest::qWait(100);
+ HbAutoTest::mouseClick(mMainWindow, mIpv6DnsAddressAutomaticWidget, automaticPointOffset, 100);
+ QTest::qWait(100);
+ subVerifyBool(
+ CMManagerShim::CmIP6DNSAddrFromServer,
+ true);
+
+ // Ensure that editing the IP address is not allowed
+ HbAutoTest::mouseClick(mMainWindow, mIpv6PrimaryDnsAddressWidget);
+ HbAutoTest::mouseClick(mMainWindow, mIpv6SecondaryDnsAddressWidget);
+}
+
+/**
+ * Tests enabling of well-known IPv6 DNS addresses.
+ */
+void TestCpWlanApPlugin::tcEnableWellKnownIpv6DnsAddress()
+{
+ // Enable well-known IPv6 DNS address
+ QPointF wellKnownPointOffset = comboBoxFirstItemOffset + comboBoxItemOffset;
+ HbAutoTest::mouseClick(mMainWindow, mIpv6DnsAddressAutomaticWidget);
+ QTest::qWait(100);
+ HbAutoTest::mouseClick(mMainWindow, mIpv6DnsAddressAutomaticWidget, wellKnownPointOffset, 100);
+ QTest::qWait(100);
+ subVerifyBool(
+ CMManagerShim::CmIP6DNSAddrFromServer,
+ false);
+ subVerifyString(
+ CMManagerShim::CmIP6NameServer1,
+ mTestViewAdvanced->mIpv6DnsAddress1,
+ "fec0:000:0000:ffff::1");
+ subVerifyString(
+ CMManagerShim::CmIP6NameServer2,
+ mTestViewAdvanced->mIpv6DnsAddress2,
+ "fec0:000:0000:ffff::2");
+
+ // Ensure that editing the IP address is not allowed
+ HbAutoTest::mouseClick(mMainWindow, mIpv6PrimaryDnsAddressWidget);
+ HbAutoTest::mouseClick(mMainWindow, mIpv6SecondaryDnsAddressWidget);
+}
+
+/**
+ * Tests enabling of user defined IPv6 DNS addresses.
+ */
+void TestCpWlanApPlugin::tcEnableUserDefinedIpv6DnsAddress()
+{
+ // Select user defined IPv6 DNS address
+ QPointF userDefinedPointOffset = comboBoxFirstItemOffset + comboBoxItemOffset * 2;
+ //QPointF userDefinedPointOffset(0, 160);
+ HbAutoTest::mouseClick(mMainWindow, mIpv6DnsAddressAutomaticWidget);
+ QTest::qWait(100);
+ HbAutoTest::mouseClick(mMainWindow, mIpv6DnsAddressAutomaticWidget, userDefinedPointOffset, 100);
+ QTest::qWait(100);
+ // Can't verify the setting from CommsDat here, because CMManager will
+ // set it back to true if no valid IP address is yet defined. The flag
+ // is verified in tcChangeIpv4DnsAddress().
+}
+
+/**
+ * Tests changing of IPv6 DNS addresses.
+ */
+void TestCpWlanApPlugin::tcChangeIpv6DnsAddress()
+{
+ QFETCH(QString, string);
+ QFETCH(QString, result);
+
+ // Primary DNS address
+ HbAutoTest::mouseClick(mMainWindow, mIpv6PrimaryDnsAddressWidget);
+
+ // Erase old string
+ QString text = mTestViewAdvanced->mIpv6DnsAddress1->contentWidgetData("text").toString();
+ subClearLineEdit(text.size());
+
+ // Enter new string
+ HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
+
+ HbAutoTest::mouseClick(mMainWindow, mIpv6PrimaryDnsAddressWidget, exitEditorOffset);
+
+ // Verify both commsdat and UI widget
+ subVerifyString(
+ CMManagerShim::CmIP6NameServer1,
+ mTestViewAdvanced->mIpv6DnsAddress1,
+ result);
+
+ // Secondary DNS address
+ HbAutoTest::mouseClick(mMainWindow, mIpv6SecondaryDnsAddressWidget);
+
+ // Erase old string
+ text = mTestViewAdvanced->mIpv6DnsAddress2->contentWidgetData("text").toString();
+ subClearLineEdit(text.size());
+
+ // Enter new string
+ HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
+
+ HbAutoTest::mouseClick(mMainWindow, mIpv6SecondaryDnsAddressWidget, exitEditorOffset);
+
+ // Verify both commsdat and UI widget
+ subVerifyString(
+ CMManagerShim::CmIP6NameServer2,
+ mTestViewAdvanced->mIpv6DnsAddress2,
+ result);
+
+ // Verify user defined address is in use
+ subVerifyBool(
+ CMManagerShim::CmIP6DNSAddrFromServer,
+ false);
+}
+
+/**
+ * Test data for IPv6 DNS address change test case.
+ */
+void TestCpWlanApPlugin::tcChangeIpv6DnsAddress_data()
+{
+ QTest::addColumn<QString>("string");
+ QTest::addColumn<QString>("result");
+
+ QTest::newRow("normal")
+ << "2001:db8:85a3::8a2e:370:7334"
+ << "2001:db8:85a3:0:0:8a2e:370:7334";
+}
+
+/**
+ * Tests invalid IPv6 DNS address.
+ */
+void TestCpWlanApPlugin::tcInvalidIpv6DnsAddress()
+{
+ QString previous =
+ mTestViewAdvanced->mIpv6DnsAddress1->contentWidgetData("text").toString();
+
+ HbAutoTest::mouseClick(mMainWindow, mIpv6PrimaryDnsAddressWidget);
+
+ // Erase old string
+ QString text = mTestViewAdvanced->mIpv6DnsAddress1->contentWidgetData("text").toString();
+ subClearLineEdit(text.size());
+
+ // Enter new string
+ HbAutoTest::keyClicks(mMainWindow, "abcdef:fedcba", 0, waitTime);
+
+ HbAutoTest::mouseClick(mMainWindow, mIpv6PrimaryDnsAddressWidget, exitEditorOffset);
+
+ QTest::qWait(100);
+ // Dismiss messagebox
+ HbAutoTest::mouseClick(
+ mMainWindow,
+ mTestViewAdvanced->mMessageBox.data(),
+ messageBoxOkButtonOffset);
+
+ // Verify both commsdat and UI widget
+ subVerifyString(
+ CMManagerShim::CmIP6NameServer1,
+ mTestViewAdvanced->mIpv6DnsAddress1,
+ previous);
+}
+
+/**
+ * Collapses the IPv6 settings group.
+ */
+void TestCpWlanApPlugin::tcCollapseIpv6Settings()
+{
+ HbAutoTest::mouseClick(mMainWindow, mTestViewAdvanced, ipv6Group);
+}
+
+/**
+ * Expands the proxy settings group and gets UI widget pointers.
+ */
+void TestCpWlanApPlugin::tcExpandProxySettingsAndGetUiWidgets()
+{
+ HbAutoTest::mouseClick(mMainWindow, mTestViewAdvanced, proxyGroup);
+
+ QTest::qWait(500);
+
+ subGetAdvancedUiWidgets(2);
+}
+
+/**
+ * Tests changing of proxy server address.
+ */
+void TestCpWlanApPlugin::tcChangeProxyServerAddress()
+{
+ QFETCH(QString, string);
+ QFETCH(QString, result);
+
+ HbAutoTest::mouseClick(mMainWindow, mProxyServerAddressWidget);
+
+ // Erase old string
+ QString text = mTestViewAdvanced->mProxyServer->contentWidgetData("text").toString();
+ subClearLineEdit(text.size());
+
+ // Enter new string
+ HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
+
+ HbAutoTest::mouseClick(mMainWindow, mProxyServerAddressWidget, exitEditorOffset);
+
+ QTest::qWait(100);
+
+ // Verify both commsdat and UI widget
+ subVerifyString(
+ CMManagerShim::CmProxyServerName,
+ mTestViewAdvanced->mProxyServer,
+ result);
+ // Verify user defined address flag is set correctly
+ if (result.isEmpty()) {
+ subVerifyBool(
+ CMManagerShim::CmProxyUsageEnabled,
+ false);
+ } else {
+ subVerifyBool(
+ CMManagerShim::CmProxyUsageEnabled,
+ true);
+ }
+}
+
+/**
+ * Test data for proxy server address change test case.
+ */
+void TestCpWlanApPlugin::tcChangeProxyServerAddress_data()
+{
+ QTest::addColumn<QString>("string");
+ QTest::addColumn<QString>("result");
+
+ QTest::newRow("long")
+ << "http://developer.symbian.org/main/documentation/reference/s^3/doc_source/AboutSymbianOSLibrary9.6/index.html"
+ << "http://developer.symbian.org/main/documentation/reference/s^3/doc_source/AboutSymbianOSLibrary9.6/index.html";
+ QTest::newRow("empty")
+ << ""
+ << "";
+ QTest::newRow("basic") // last one should always fit on one line in UI
+ << "http://www.symbian.org/"
+ << "http://www.symbian.org/";
+}
+
+/**
+ * Tests changing of proxy port number.
+ */
+void TestCpWlanApPlugin::tcChangeProxyPortNumber()
+{
+ QFETCH(QString, string);
+ QFETCH(QString, result);
+
+ HbAutoTest::mouseClick(mMainWindow, mProxyPortNumberWidget);
+
+ // Erase old string
+ QString text = mTestViewAdvanced->mProxyPort->contentWidgetData("text").toString();
+ subClearLineEdit(text.size());
+
+ // Enter new string
+ HbAutoTest::keyClicks(mMainWindow, string, 0, waitTime);
+
+ HbAutoTest::mouseClick(mMainWindow, mProxyPortNumberWidget, exitEditorOffset);
+
+ QTest::qWait(100);
+
+ // Verify both commsdat and UI widget
+ subVerifyUint(
+ CMManagerShim::CmProxyPortNumber,
+ result.toInt());
+ QCOMPARE(
+ mTestViewAdvanced->mProxyPort->contentWidgetData("text").toInt(),
+ result.toInt());
+}
+
+/**
+ * Test data for proxy port number change test case.
+ */
+void TestCpWlanApPlugin::tcChangeProxyPortNumber_data()
+{
+ QTest::addColumn<QString>("string");
+ QTest::addColumn<QString>("result");
+
+ QTest::newRow("basic")
+ << "8080"
+ << "8080";
+ QTest::newRow("too long")
+ << "1234567890"
+ << "12345";
+ QTest::newRow("zero")
+ << "0"
+ << "";
+ QTest::newRow("empty")
+ << ""
+ << "";
+}
+
+/**
+ * Tests invalid proxy port number.
+ */
+void TestCpWlanApPlugin::tcInvalidProxyPortNumber()
+{
+ int previous =
+ mTestViewAdvanced->mProxyPort->contentWidgetData("text").toInt();
+
+ HbAutoTest::mouseClick(mMainWindow, mProxyPortNumberWidget);
+
+ // Erase old string
+ QString text = mTestViewAdvanced->mProxyPort->contentWidgetData("text").toString();
+ subClearLineEdit(text.size());
+
+ // Enter new string
+ HbAutoTest::keyClicks(mMainWindow, "65536", 0, waitTime);
+
+ HbAutoTest::mouseClick(mMainWindow, mProxyPortNumberWidget, exitEditorOffset);
+
+ QTest::qWait(100);
+ // Dismiss messagebox
+ HbAutoTest::mouseClick(
+ mMainWindow,
+ mTestViewAdvanced->mMessageBox.data(),
+ messageBoxOkButtonOffset);
+
+ // Verify both commsdat and UI widget
+ subVerifyUint(
+ CMManagerShim::CmProxyPortNumber,
+ previous);
+ QCOMPARE(
+ mTestViewAdvanced->mProxyPort->contentWidgetData("text").toInt(),
+ previous);
+}
+
+/**
+ * Collapses the proxy settings group.
+ */
+void TestCpWlanApPlugin::tcCollapseProxySettings()
+{
+ HbAutoTest::mouseClick(mMainWindow, mTestViewAdvanced, proxyGroup);
+}
+
+/**
+ * Returns from advanced settings view.
+ */
+void TestCpWlanApPlugin::tcCloseAdvancedSettingsView()
+{
+ // Return from advanced settings view
+ subClickWidget("HbNavigationButton");
+}
+
+// -----------------------------------------------------------------------------
+// SUB TEST CASES
+// -----------------------------------------------------------------------------
+
+/**
+ * Gets UI widget pointers.
+ */
+void TestCpWlanApPlugin::subGetUiWidgets()
+{
+ HbModelIterator iterator(mTestView->mModel);
+
+ // Get "Access point settings" group item
+ QModelIndex apGroupIndex = iterator.index(0);
+
+ // Get UI widgets
+ mConnectionNameWidget = subGetWidgetByIndex(
+ mTestView->mForm,
+ iterator.index(0, apGroupIndex));
+ mWlanNetworkNameWidget = subGetWidgetByIndex(
+ mTestView->mForm,
+ iterator.index(1, apGroupIndex));
+ mNetworkStatusWidget = subGetWidgetByIndex(
+ mTestView->mForm,
+ iterator.index(2, apGroupIndex));
+ mNetworkModeWidget = subGetWidgetByIndex(
+ mTestView->mForm,
+ iterator.index(3, apGroupIndex));
+ mSecurityModeWidget = subGetWidgetByIndex(
+ mTestView->mForm,
+ iterator.index(4, apGroupIndex));
+ mHomepageWidget = subGetWidgetByIndex(
+ mTestView->mForm,
+ iterator.index(5, apGroupIndex));
+}
+
+/**
+ * Gets advanced settings view UI widget pointers by group index.
+ */
+void TestCpWlanApPlugin::subGetAdvancedUiWidgets(
+ uint index)
+{
+ // Get the group item
+ HbModelIterator iterator(mTestViewAdvanced->mModel);
+ QModelIndex groupIndex = iterator.index(index);
+
+ // Get UI widgets
+ if (index == 0) {
+ // IPv4 settings group
+ mIpv4AddressAutomaticWidget = subGetWidgetByIndex(
+ mTestViewAdvanced->mForm,
+ iterator.index(0, groupIndex));
+ mIpv4AddressWidget = subGetWidgetByIndex(
+ mTestViewAdvanced->mForm,
+ iterator.index(1, groupIndex));
+ mIpv4SubnetMaskWidget = subGetWidgetByIndex(
+ mTestViewAdvanced->mForm,
+ iterator.index(2, groupIndex));
+ mIpv4GatewayWidget = subGetWidgetByIndex(
+ mTestViewAdvanced->mForm,
+ iterator.index(3, groupIndex));
+ mIpv4DnsAddressAutomaticWidget = subGetWidgetByIndex(
+ mTestViewAdvanced->mForm,
+ iterator.index(4, groupIndex));
+ mIpv4PrimaryDnsAddressWidget = subGetWidgetByIndex(
+ mTestViewAdvanced->mForm,
+ iterator.index(5, groupIndex));
+ mIpv4SecondaryDnsAddressWidget = subGetWidgetByIndex(
+ mTestViewAdvanced->mForm,
+ iterator.index(6, groupIndex));
+ } else if (index == 1) {
+ // IPv6 settings group
+ mIpv6DnsAddressAutomaticWidget = subGetWidgetByIndex(
+ mTestViewAdvanced->mForm,
+ iterator.index(0, groupIndex));
+ mIpv6PrimaryDnsAddressWidget = subGetWidgetByIndex(
+ mTestViewAdvanced->mForm,
+ iterator.index(1, groupIndex));
+ mIpv6SecondaryDnsAddressWidget = subGetWidgetByIndex(
+ mTestViewAdvanced->mForm,
+ iterator.index(2, groupIndex));
+ } else {
+ // Proxy settings group
+ mProxyServerAddressWidget = subGetWidgetByIndex(
+ mTestViewAdvanced->mForm,
+ iterator.index(0, groupIndex));
+ mProxyPortNumberWidget = subGetWidgetByIndex(
+ mTestViewAdvanced->mForm,
+ iterator.index(1, groupIndex));
+ }
+}
+
+/**
+ * Gets an UI widget from HbDataForm by index.
+ */
+HbWidget *TestCpWlanApPlugin::subGetWidgetByIndex(
+ HbDataForm *form,
+ const QModelIndex &index)
+{
+ HbDataFormViewItem *viewItem = qobject_cast<HbDataFormViewItem *>
+ (form->itemByIndex(index));
+ HbWidget *widget = viewItem->dataItemContentWidget();
+ //QString widgetClassName(widget->metaObject()->className());
+ //qDebug() << widgetClassName;
+ return widget;
+}
+
+/**
+ * Verifies that given string is correctly stored in CommsDat and shown on UI.
+ */
+void TestCpWlanApPlugin::subVerifyString(
+ CMManagerShim::ConnectionMethodAttribute attribute,
+ HbDataFormModelItem *item,
+ QString expected)
+{
+ // Read attribute value from CommsDat
+ QScopedPointer<CmManagerShim> cmManager(new CmManagerShim);
+ QScopedPointer<CmConnectionMethodShim> connectionMethod(
+ cmManager->connectionMethod(testApId));
+ QString commsdat = connectionMethod->getStringAttribute(attribute);
+
+ QCOMPARE(commsdat, expected);
+
+ // Get value from UI widget
+ QString widget = item->contentWidgetData("text").toString();
+
+ QCOMPARE(widget, expected);
+}
+
+/**
+ * Verifies that given attribute contains expected integer value in CommsDat.
+ */
+void TestCpWlanApPlugin::subVerifyUint(
+ CMManagerShim::ConnectionMethodAttribute attribute,
+ uint expected)
+{
+ // Read attribute value from CommsDat
+ QScopedPointer<CmManagerShim> cmManager(new CmManagerShim);
+ QScopedPointer<CmConnectionMethodShim> connectionMethod(
+ cmManager->connectionMethod(testApId));
+ uint commsdat = connectionMethod->getIntAttribute(attribute);
+
+ QCOMPARE(commsdat, expected);
+}
+
+/**
+ * Verifies that WLAN network status in CommsDat is correct.
+ */
+void TestCpWlanApPlugin::subVerifyNetworkStatus(
+ NetworkStatus expected)
+{
+ // Read attribute value from CommsDat
+ QScopedPointer<CmManagerShim> cmManager(new CmManagerShim);
+ QScopedPointer<CmConnectionMethodShim> connectionMethod(
+ cmManager->connectionMethod(testApId));
+ bool commsdatScanSsid = connectionMethod->getBoolAttribute(
+ CMManagerShim::WlanScanSSID);
+
+ if (expected == HiddenStatus) {
+ QVERIFY(commsdatScanSsid == true);
+ } else if (expected == PublicStatus) {
+ QVERIFY(commsdatScanSsid == false);
+ } else {
+ Q_ASSERT(false);
+ }
+}
+
+/**
+ * Clears a HbLineEdit.
+ */
+void TestCpWlanApPlugin::subClearLineEdit(
+ uint length)
+{
+ // Move cursor to end of string
+ //HbAutoTest::keyClick(mMainWindow, Qt::Key_End, Qt::ControlModifier, waitTime); // doesn't seem to do anything?
+ HbAutoTest::keyClick(mMainWindow, Qt::Key_Down, 0, waitTime);
+ HbAutoTest::keyClick(mMainWindow, Qt::Key_Down, 0, waitTime);
+ HbAutoTest::keyClick(mMainWindow, Qt::Key_Down, 0, waitTime);
+ for (int i=0; i<25; i++) {
+ HbAutoTest::keyClick(mMainWindow, Qt::Key_Right, 0, waitTime);
+ }
+ // Erase string
+ for (int i=0; i<length; i++) {
+ HbAutoTest::keyClick(mMainWindow, Qt::Key_Backspace, 0, waitTime);
+ }
+}
+
+/**
+ * Creates the settings view and shows it.
+ */
+void TestCpWlanApPlugin::subCreateSettingsView(uint connectionMethodId)
+{
+ // Create settings view
+ HbView *view = mPlugin->createSettingView(connectionMethodId);
+ QVERIFY(view != NULL);
+
+ // Display the view
+ mMainWindow->addView(view);
+ mMainWindow->setCurrentView(view);
+ // Store pointer to settings view class
+ mTestView = static_cast<CpWlanApView *>(view);
+}
+
+/**
+ * Clicks a widget currently on UI by class name.
+ */
+void TestCpWlanApPlugin::subClickWidget(const QString &name)
+{
+ QList<QGraphicsItem *> itemList = mMainWindow->scene()->items();
+
+ QGraphicsItem *target = 0;
+ foreach (QGraphicsItem* item, itemList) {
+ if (item->isWidget()) {
+ QString widgetClassName(static_cast<QGraphicsWidget*>(item)->metaObject()->className());
+ //qDebug() << widgetClassName;
+
+ if (widgetClassName == name) {
+ target = item;
+ break;
+ }
+ }
+ }
+
+ Q_ASSERT(target);
+ HbAutoTest::mouseClick(mMainWindow, static_cast<HbWidget *>(target));
+}
+
+/**
+ * Returns the middle point of a widget.
+ */
+QPointF TestCpWlanApPlugin::subMiddlePointOfWidget(const HbWidget *widget)
+{
+ QRectF widgetRect = widget->rect();
+ QRectF widgetSceneRect = widget->mapRectToScene(widgetRect);
+ qreal middleX = ((widgetSceneRect.right() - widgetSceneRect.left()) / 2) + widgetSceneRect.left();
+ qreal middleY = ((widgetSceneRect.bottom() - widgetSceneRect.top()) / 2) + widgetSceneRect.top();
+
+ return QPointF(middleX, middleY);
+}
+
+/**
+ * Verifies that given attribute contains expected boolean value in CommsDat.
+ */
+void TestCpWlanApPlugin::subVerifyBool(
+ CMManagerShim::ConnectionMethodAttribute attribute,
+ bool expected)
+{
+ // Read attribute value from CommsDat
+ QScopedPointer<CmManagerShim> cmManager(new CmManagerShim);
+ QScopedPointer<CmConnectionMethodShim> connectionMethod(
+ cmManager->connectionMethod(testApId));
+ bool commsdat = connectionMethod->getBoolAttribute(attribute);
+
+ QCOMPARE(commsdat, expected);
+}
+
+/**
+ * Scrolls the tested view to the bottom.
+ */
+void TestCpWlanApPlugin::subScrollToBottom()
+{
+ // Scroll to the bottom of the view
+ HbAutoTest::mousePress(mMainWindow, mTestView, scrollMiddle);
+ QTest::qWait(1000);
+ HbAutoTest::mouseMove(mMainWindow, mTestView, scrollTop);
+ HbAutoTest::mouseRelease(mMainWindow, mTestView, scrollTop);
+}
+
+/**
+ * Scrolls the tested view to the top.
+ */
+void TestCpWlanApPlugin::subScrollToTop()
+{
+ // Scroll to the top of the view
+ HbAutoTest::mousePress(mMainWindow, mTestView, scrollMiddle);
+ QTest::qWait(1000);
+ HbAutoTest::mouseMove(mMainWindow, mTestView, scrollBottom);
+ HbAutoTest::mouseRelease(mMainWindow, mTestView, scrollBottom);
+}