diff -r b852595f5cbe -r 63be7eb3fc78 wlanutilities/wlansniffer/wlansnifferapplication/tsrc/t_wlansniffer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wlanutilities/wlansniffer/wlansnifferapplication/tsrc/t_wlansniffer.cpp Tue Aug 31 16:18:40 2010 +0300 @@ -0,0 +1,563 @@ +/* +* 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: +* This is the source file for testing Wlan Sniffer application. +*/ + +// System includes + +#include +#include +#include +#include +#include +#include + +// User includes + +#include "wlanqtutilsiap.h" +#include "wlanqtutilsap.h" + +#include "wlansnifferlistwidget.h" +#include "t_wlansniffer.h" + +// External function prototypes + +// Local constants + +// ======== LOCAL FUNCTIONS ======== + +/*! + Test main function. Runs all test cases. + */ + +int main(int argc, char *argv[]) +{ + HbApplication app(argc, argv); + + char *pass[3]; + pass[0] = argv[0]; + pass[1] = "-o"; + pass[2] = "c:\\data\\TestWlanSniffer.txt"; + + TestWlanSniffer tc; + int res = QTest::qExec(&tc, 3, pass); + + return res; +} + +// ======== MEMBER FUNCTIONS ======== + +/*! + This function will be called before the first test function is executed. +*/ + +void TestWlanSniffer::initTestCase() +{ + mWidget = NULL; +} + +/*! + This function will be called after the last test function was executed. + */ + +void TestWlanSniffer::cleanupTestCase() +{ +} + +/*! + This function will be called before each test function is executed. + */ + +void TestWlanSniffer::init() +{ + mListWidget = new HbListWidget(); + mWidget = new WlanSnifferListWidget(mListWidget); + + mIaps.clear(); + mAps.clear(); +} + +/*! + This function will be called after each test function is executed. + */ + +void TestWlanSniffer::cleanup() +{ + delete mWidget; + mWidget = NULL; + + mListWidget->clear(); + delete mListWidget; + mListWidget = NULL; +} + +/*! + This function tests Wlan list widget content updating. + */ + +void TestWlanSniffer::testUpdateContentIapAdded() +{ + appendWlanAp("SSID 1", 20, 0, CMManagerShim::WlanSecModeOpen); + appendWlanAp("SSID 2", 90, 0, CMManagerShim::WlanSecModeWpa); + + mWidget->updateContent(mIaps, mAps, 0); + + QCOMPARE(mListWidget->count(), 2); + verifyAp(0, QString("SSID 1"), CMManagerShim::WlanSecModeOpen); + verifyAp(1, QString("SSID 2"), CMManagerShim::WlanSecModeWpa); + + appendWlanIap(1, 0, "SSID 3", "SSID 3", 20, CMManagerShim::WlanSecModeWpa); + + mWidget->updateContent(mIaps, mAps, 0); + + QCOMPARE(mListWidget->count(), 3); + verifyIap(0, 1); + verifyAp(1, QString("SSID 1"), CMManagerShim::WlanSecModeOpen); + verifyAp(2, QString("SSID 2"), CMManagerShim::WlanSecModeWpa); +} + +/*! + This function tests Wlan list widget content updating. + */ + +void TestWlanSniffer::testUpdateContentApAdded() +{ + appendWlanAp("SSID 1", 20, 0, CMManagerShim::WlanSecModeOpen); + + mWidget->updateContent(mIaps, mAps, 0); + + QCOMPARE(mListWidget->count(), 1); + verifyAp(0, QString("SSID 1"), CMManagerShim::WlanSecModeOpen); + + appendWlanAp("SSID 2", 90, 0, CMManagerShim::WlanSecModeWpa); + + mWidget->updateContent(mIaps, mAps, 0); + + QCOMPARE(mListWidget->count(), 2); + verifyAp(0, QString("SSID 1"), CMManagerShim::WlanSecModeOpen); + verifyAp(1, QString("SSID 2"), CMManagerShim::WlanSecModeWpa); +} + +/*! + This function tests Wlan list widget content updating. + */ + +void TestWlanSniffer::testUpdateContentIapRemoved() +{ + appendWlanIap(1, 0, "SSID 1", "SSID 1", 20, CMManagerShim::WlanSecModeWpa); + appendWlanIap(2, 0, "SSID 2", "SSID 2", 90, CMManagerShim::WlanSecModeWpa); + appendWlanAp("SSID 3", 90, 0, CMManagerShim::WlanSecModeWep); + + mWidget->updateContent(mIaps, mAps, 0); + + QCOMPARE(mListWidget->count(), 3); + verifyIap(0, 1); + verifyIap(1, 2); + verifyAp(2, QString("SSID 3"), CMManagerShim::WlanSecModeWep); + + mIaps.takeAt(0); + + mWidget->updateContent(mIaps, mAps, 0); + + QCOMPARE(mListWidget->count(), 2); + verifyIap(0, 2); + verifyAp(1, QString("SSID 3"), CMManagerShim::WlanSecModeWep); +} + +/*! + This function tests Wlan list widget content updating. + */ + +void TestWlanSniffer::testUpdateContentApRemoved() +{ + appendWlanAp("SSID 1", 20, 0, CMManagerShim::WlanSecModeOpen); + + mWidget->updateContent(mIaps, mAps, 0); + + QCOMPARE(mListWidget->count(), 1); + verifyAp(0, QString("SSID 1"), CMManagerShim::WlanSecModeOpen); + + mAps.takeAt(0); + + mWidget->updateContent(mIaps, mAps, 0); + + QCOMPARE(mListWidget->count(), 0); +} + +/*! + This function tests Wlan list widget content updating. + */ + +void TestWlanSniffer::testUpdateContentIapConnected() +{ + appendWlanIap(1, 0, "SSID 1", "SSID 1", 95, CMManagerShim::WlanSecModeWpa); + appendWlanIap(2, 0, "SSID 2", "SSID 2", 15, CMManagerShim::WlanSecModeWpa); + appendWlanAp("SSID 3", 20, 0, CMManagerShim::WlanSecModeOpen); + + mWidget->updateContent(mIaps, mAps, 0); + + QCOMPARE(mListWidget->count(), 3); + verifyIap(0, 1); + verifyIap(1, 2); + verifyAp(2, QString("SSID 3"), CMManagerShim::WlanSecModeOpen); + + // IAP order changed because one is connected + mIaps.clear(); + appendWlanIap(2, 0, "SSID 2", "SSID 2", 20, CMManagerShim::WlanSecModeWpa); + appendWlanIap(1, 0, "SSID 1", "SSID 1", 20, CMManagerShim::WlanSecModeWpa); + + mWidget->updateContent(mIaps, mAps, 2); + + QCOMPARE(mListWidget->count(), 3); + verifyIap(0, 2); + verifyIap(1, 1); + verifyAp(2, QString("SSID 3"), CMManagerShim::WlanSecModeOpen); +} + +/*! + This function tests Wlan list widget content updating. + */ + +void TestWlanSniffer::testUpdateContentIapDisconnected() +{ + appendWlanIap(2, 0, "SSID 2", "SSID 2", 20, CMManagerShim::WlanSecModeWpa); + appendWlanIap(1, 0, "SSID 1", "SSID 1", 20, CMManagerShim::WlanSecModeWpa); + appendWlanAp("SSID 3", 20, 0, CMManagerShim::WlanSecModeOpen); + + mWidget->updateContent(mIaps, mAps, 2); + + QCOMPARE(mListWidget->count(), 3); + verifyIap(0, 2); + verifyIap(1, 1); + verifyAp(2, QString("SSID 3"), CMManagerShim::WlanSecModeOpen); + + // IAP order changed because not connected anymore + mIaps.clear(); + appendWlanIap(1, 0, "SSID 1", "SSID 1", 20, CMManagerShim::WlanSecModeWpa); + appendWlanIap(2, 0, "SSID 2", "SSID 2", 60, CMManagerShim::WlanSecModeWpa); + + mWidget->updateContent(mIaps, mAps, 0); + + QCOMPARE(mListWidget->count(), 3); + verifyIap(0, 1); + verifyIap(1, 2); + verifyAp(2, QString("SSID 3"), CMManagerShim::WlanSecModeOpen); +} + +/*! + This function tests Wlan list widget content updating. + */ + +void TestWlanSniffer::testUpdateContentRobustness1() +{ + appendWlanIap(1, 0, "SSID 1", "SSID 1", 15, CMManagerShim::WlanSecModeWpa); + appendWlanIap(2, 0, "SSID 2", "SSID 2", 95, CMManagerShim::WlanSecModeWpa); + appendWlanAp("SSID 3", 20, 0, CMManagerShim::WlanSecModeOpen); + appendWlanAp("SSID 4", 30, 0, CMManagerShim::WlanSecModeWep); + appendWlanAp("SSID 5", 40, 0, CMManagerShim::WlanSecModeOpen); + + mWidget->updateContent(mIaps, mAps, 0); + + QCOMPARE(mListWidget->count(), 5); + verifyIap(0, 1); + verifyIap(1, 2); + verifyAp(2, QString("SSID 3"), CMManagerShim::WlanSecModeOpen); + verifyAp(3, QString("SSID 4"), CMManagerShim::WlanSecModeWep); + verifyAp(4, QString("SSID 5"), CMManagerShim::WlanSecModeOpen); + + mIaps.clear(); + appendWlanIap(3, 0, "SSID 3", "SSID 3", 10, CMManagerShim::WlanSecModeOpen); + appendWlanIap(1, 0, "SSID 1", "SSID 1", 20, CMManagerShim::WlanSecModeWpa); + appendWlanIap(2, 0, "SSID 2", "SSID 2", 30, CMManagerShim::WlanSecModeWpa); + mAps.clear(); + appendWlanAp("SSID 4", 30, 0, CMManagerShim::WlanSecModeWep); + appendWlanAp("SSID 5", 40, 0, CMManagerShim::WlanSecModeOpen); + appendWlanAp("SSID 6", 30, 0, CMManagerShim::WlanSecModeWep); + appendWlanAp("SSID 7", 40, 0, CMManagerShim::WlanSecModeOpen); + + mWidget->updateContent(mIaps, mAps, 3); + + QCOMPARE(mListWidget->count(), 7); + verifyIap(0, 3); + verifyIap(1, 1); + verifyIap(2, 2); + verifyAp(3, QString("SSID 4"), CMManagerShim::WlanSecModeWep); + verifyAp(4, QString("SSID 5"), CMManagerShim::WlanSecModeOpen); + verifyAp(5, QString("SSID 6"), CMManagerShim::WlanSecModeWep); + verifyAp(6, QString("SSID 7"), CMManagerShim::WlanSecModeOpen); + + mIaps.clear(); + appendWlanIap(4, 0, "SSID X", "SSID X", 10, CMManagerShim::WlanSecModeWpa); + appendWlanIap(2, 0, "SSID 2", "SSID 2", 20, CMManagerShim::WlanSecModeWpa); + appendWlanIap(3, 0, "SSID 3", "SSID 3", 10, CMManagerShim::WlanSecModeOpen); + appendWlanIap(5, 0, "SSID 3", "SSID 3", 50, CMManagerShim::WlanSecModeWapi); + mAps.clear(); + appendWlanAp("SSID 4", 30, 0, CMManagerShim::WlanSecModeOpen); + appendWlanAp("SSID 4a", 40, 0, CMManagerShim::WlanSecModeOpen); + appendWlanAp("SSID 7", 76, 0, CMManagerShim::WlanSecModeOpen); + appendWlanAp("SSID 7", 90, 0, CMManagerShim::WlanSecModeWep); + appendWlanAp("SSID 8", 30, 0, CMManagerShim::WlanSecModeWpa); + appendWlanAp("SSID 9", 30, 0, CMManagerShim::WlanSecModeWpa); + + mWidget->updateContent(mIaps, mAps, 4); + + QCOMPARE(mListWidget->count(), 10); + verifyIap(0, 4); + verifyIap(1, 2); + verifyIap(2, 3); + verifyIap(3, 5); + verifyAp(4, QString("SSID 4"), CMManagerShim::WlanSecModeOpen); + verifyAp(5, QString("SSID 4a"), CMManagerShim::WlanSecModeOpen); + verifyAp(6, QString("SSID 7"), CMManagerShim::WlanSecModeOpen); + verifyAp(7, QString("SSID 7"), CMManagerShim::WlanSecModeWep); + verifyAp(8, QString("SSID 8"), CMManagerShim::WlanSecModeWpa); + verifyAp(9, QString("SSID 9"), CMManagerShim::WlanSecModeWpa); + + mIaps.clear(); + appendWlanIap(3, 0, "SSID 3", "SSID 3", 50, CMManagerShim::WlanSecModeOpen); + mAps.clear(); + + mWidget->updateContent(mIaps, mAps, 0); + + QCOMPARE(mListWidget->count(), 1); + verifyIap(0, 3); + + mIaps.clear(); + mAps.clear(); + + mWidget->updateContent(mIaps, mAps, 0); + + QCOMPARE(mListWidget->count(), 0); +} + +/*! + This function tests Wlan list widget content updating. + */ + +void TestWlanSniffer::testUpdateContentRobustness2() +{ + QSharedPointer iap2(new WlanQtUtilsIap()); + iap2->setValue(WlanQtUtilsIap::ConfIdIapId, 2); + iap2->setValue(WlanQtUtilsIap::ConfIdNetworkId, 0); + iap2->setValue(WlanQtUtilsIap::ConfIdName, "SSID 2"); + iap2->setValue(WlanQtUtilsAp::ConfIdSsid, "SSID 2"); + iap2->setValue(WlanQtUtilsAp::ConfIdSignalStrength, 10); + iap2->setValue(WlanQtUtilsAp::ConfIdConnectionMode, CMManagerShim::Infra); + iap2->setValue(WlanQtUtilsAp::ConfIdSecurityMode, CMManagerShim::WlanSecModeWpa); + QSharedPointer iap4(new WlanQtUtilsIap()); + iap4->setValue(WlanQtUtilsIap::ConfIdIapId, 4); + iap4->setValue(WlanQtUtilsIap::ConfIdNetworkId, 0); + iap4->setValue(WlanQtUtilsIap::ConfIdName, "SSID 4"); + iap4->setValue(WlanQtUtilsAp::ConfIdSsid, "SSID 4"); + iap4->setValue(WlanQtUtilsAp::ConfIdSignalStrength, 20); + iap4->setValue(WlanQtUtilsAp::ConfIdConnectionMode, CMManagerShim::Infra); + iap4->setValue(WlanQtUtilsAp::ConfIdSecurityMode, CMManagerShim::WlanSecModeWpa); + + appendWlanAp("SSID 1", 20, 0, CMManagerShim::WlanSecModeOpen); + appendWlanAp("SSID 3", 20, 0, CMManagerShim::WlanSecModeWpa); + appendWlanAp("SSID 5", 20, 0, CMManagerShim::WlanSecModeWpa); + appendWlanAp("SSID 6", 20, 0, CMManagerShim::WlanSecModeWpa); + + mIaps.append(iap2); + mIaps.append(iap4); + + mWidget->updateContent(mIaps, mAps, 0); + + QCOMPARE(mListWidget->count(), 6); + verifyIap(0, 2); + verifyIap(1, 4); + verifyAp(2, QString("SSID 1"), CMManagerShim::WlanSecModeOpen); + verifyAp(3, QString("SSID 3"), CMManagerShim::WlanSecModeWpa); + verifyAp(4, QString("SSID 5"), CMManagerShim::WlanSecModeWpa); + verifyAp(5, QString("SSID 6"), CMManagerShim::WlanSecModeWpa); + + mIaps.clear(); + mAps.clear(); + mIaps.append(iap2); + appendWlanAp("SSID 1", 20, 0, CMManagerShim::WlanSecModeOpen); + + mWidget->updateContent(mIaps, mAps, 0); + + QCOMPARE(mListWidget->count(), 2); + verifyIap(0, 2); + verifyAp(1, QString("SSID 1"), CMManagerShim::WlanSecModeOpen); + + mIaps.clear(); + mAps.clear(); + mIaps.append(iap2); + mIaps.append(iap4); + appendWlanAp("SSID 1", 20, 0, CMManagerShim::WlanSecModeOpen); + appendWlanAp("SSID 3", 20, 0, CMManagerShim::WlanSecModeWpa); + appendWlanAp("SSID 5", 20, 0, CMManagerShim::WlanSecModeWpa); + appendWlanAp("SSID 6", 20, 0, CMManagerShim::WlanSecModeWpa); + + mWidget->updateContent(mIaps, mAps, 0); + + QCOMPARE(mListWidget->count(), 6); + verifyIap(0, 2); + verifyIap(1, 4); + verifyAp(2, QString("SSID 1"), CMManagerShim::WlanSecModeOpen); + verifyAp(3, QString("SSID 3"), CMManagerShim::WlanSecModeWpa); + verifyAp(4, QString("SSID 5"), CMManagerShim::WlanSecModeWpa); + verifyAp(5, QString("SSID 6"), CMManagerShim::WlanSecModeWpa); +} + +/*! + This function tests list sorting. The list content comes in "random" order, + and the list widget should sort the list alphabetically. + */ + +void TestWlanSniffer::testUpdateContentSort() +{ + appendWlanIap(1, 0, "Dada", "dada", 20, CMManagerShim::WlanSecModeOpen); + appendWlanIap(2, 0, "salakka", "salakka", 30, CMManagerShim::WlanSecModeWpa); + appendWlanIap(3, 0, "lahna", "lahna", 40, CMManagerShim::WlanSecModeOpen); + appendWlanIap(4, 0, "Labiili", "labiili", 50, CMManagerShim::WlanSecModeOpen); + appendWlanIap(5, 0, "ABCD", "ABCD", 60, CMManagerShim::WlanSecModeWpa); + appendWlanIap(6, 0, "connected", "connected", 60, CMManagerShim::WlanSecModeOpen); + appendWlanIap(7, 0, "IAP 1", "IAP 1", 10, CMManagerShim::WlanSecModeOpen); + appendWlanIap(8, 0, "IAP 10", "IAP 10", 10, CMManagerShim::WlanSecModeOpen); + appendWlanIap(9, 0, "IAP 2", "IAP 2", 10, CMManagerShim::WlanSecModeOpen); + appendWlanIap(10, 0, "IAP 11", "IAP 11", 10, CMManagerShim::WlanSecModeOpen); + + appendWlanAp("jokuap", 20, 0, CMManagerShim::WlanSecModeWpa); + appendWlanAp("Jippii", 30, 0, CMManagerShim::WlanSecModeOpen); + appendWlanAp("jalava", 40, 0, CMManagerShim::WlanSecModeWpa); + appendWlanAp("abba", 50, 0, CMManagerShim::WlanSecModeOpen); + appendWlanAp("hippokampus", 60, 0, CMManagerShim::WlanSecModeOpen); + + mWidget->updateContent(mIaps, mAps, 6); + + QCOMPARE(mListWidget->count(), 15); + verifyIap(0, 6); + verifyIap(1, 5); + verifyIap(2, 1); + verifyIap(3, 7); + verifyIap(4, 8); + verifyIap(5, 10); + verifyIap(6, 9); + verifyIap(7, 4); + verifyIap(8, 3); + verifyIap(9, 2); + verifyAp(10, QString("abba"), CMManagerShim::WlanSecModeOpen); + verifyAp(11, QString("hippokampus"), CMManagerShim::WlanSecModeOpen); + verifyAp(12, QString("jalava"), CMManagerShim::WlanSecModeWpa); + verifyAp(13, QString("Jippii"), CMManagerShim::WlanSecModeOpen); + verifyAp(14, QString("jokuap"), CMManagerShim::WlanSecModeWpa); +} + +/*! + This function tests list scrolling. There's no way to verify in this test + that the scrolling actually works, but let's execute the code at least. + */ + +void TestWlanSniffer::testScrollTo() +{ + appendWlanIap(1, 0, "SSID 1", "SSID 1", 15, CMManagerShim::WlanSecModeWpa); + appendWlanIap(2, 0, "SSID 2", "SSID 2", 95, CMManagerShim::WlanSecModeWpa); + appendWlanAp("SSID 3", 20, 0, CMManagerShim::WlanSecModeOpen); + appendWlanAp("SSID 4", 30, 0, CMManagerShim::WlanSecModeWep); + appendWlanAp("SSID 5", 40, 0, CMManagerShim::WlanSecModeOpen); + appendWlanAp("SSID 6", 20, 0, CMManagerShim::WlanSecModeOpen); + appendWlanAp("SSID 7", 30, 0, CMManagerShim::WlanSecModeWep); + appendWlanAp("SSID 8", 40, 0, CMManagerShim::WlanSecModeOpen); + appendWlanAp("SSID 9", 20, 0, CMManagerShim::WlanSecModeOpen); + appendWlanAp("SSID 10", 30, 0, CMManagerShim::WlanSecModeWep); + appendWlanAp("SSID 11", 40, 0, CMManagerShim::WlanSecModeOpen); + appendWlanAp("SSID 12", 20, 0, CMManagerShim::WlanSecModeOpen); + appendWlanAp("SSID 13", 30, 0, CMManagerShim::WlanSecModeWep); + appendWlanAp("SSID 14", 40, 0, CMManagerShim::WlanSecModeOpen); + + mWidget->updateContent(mIaps, mAps, 0); + + QCOMPARE(mListWidget->count(), 14); + + // Scroll to last row + mWidget->scrollTo(13); + // Scroll to non-existing row -> ignored + mWidget->scrollTo(20); + // Scroll to first row + mWidget->scrollTo(0); + + QCOMPARE(mListWidget->count(), 14); +} + +/*! + This function verifies that the item on "row" is an IAP matching the given parameters. + */ + +void TestWlanSniffer::verifyIap(int row, int iapId) +{ + QVERIFY(mListWidget->item(row)->data().canConvert()); + int id = mListWidget->item(row)->data().value(); + QCOMPARE(id, iapId); +} + +/*! + This function verifies that the item on "row" is an AP matching the given parameters. + */ + +void TestWlanSniffer::verifyAp(int row, QString ssid, int securityMode) +{ + QVERIFY(mListWidget->item(row)->data().canConvert()); + WlanQtUtilsAp ap = mListWidget->item(row)->data().value(); + QCOMPARE(ap.value(WlanQtUtilsAp::ConfIdSsid).toString(), ssid); + QCOMPARE(ap.value(WlanQtUtilsAp::ConfIdSecurityMode).toInt(), securityMode); +} + +/*! + Sub test case for appending an AP to AP list. +*/ + +void TestWlanSniffer::appendWlanAp( + QString ssId, + int signalStrength, + int networkMode, + int securityMode) +{ + QSharedPointer ap(new WlanQtUtilsAp()); + ap->setValue(WlanQtUtilsAp::ConfIdSsid, ssId); + ap->setValue(WlanQtUtilsAp::ConfIdSignalStrength, signalStrength); + ap->setValue(WlanQtUtilsAp::ConfIdConnectionMode, networkMode); + ap->setValue(WlanQtUtilsAp::ConfIdSecurityMode, securityMode); + ap->setValue(WlanQtUtilsAp::ConfIdWpaPskUse, false); + ap->setValue(WlanQtUtilsAp::ConfIdWpsSupported, false); + mAps.append(ap); +} + +/*! + Sub test case for appending an IAP to IAP list. +*/ + +void TestWlanSniffer::appendWlanIap( + int iapId, + int netId, + QString name, + QString ssId, + int signalStrength, + int securityMode) +{ + WlanQtUtilsIap *iap = new WlanQtUtilsIap(); + iap->setValue(WlanQtUtilsIap::ConfIdIapId, iapId); + iap->setValue(WlanQtUtilsIap::ConfIdNetworkId, netId); + iap->setValue(WlanQtUtilsIap::ConfIdName, name); + iap->setValue(WlanQtUtilsAp::ConfIdSsid, ssId); + iap->setValue(WlanQtUtilsAp::ConfIdSignalStrength, signalStrength); + iap->setValue(WlanQtUtilsAp::ConfIdConnectionMode, CMManagerShim::Infra); + iap->setValue(WlanQtUtilsAp::ConfIdSecurityMode, securityMode); + iap->setValue(WlanQtUtilsAp::ConfIdWpaPskUse, false); + iap->setValue(WlanQtUtilsAp::ConfIdWpsSupported, false); + mIaps.append(QSharedPointer(iap)); +}