/*! * * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. * \copyright * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file tst_utilities.cpp * \author (last) Behrouz NematiPour * \date (last) 20-Aug-2020 * \author (original) Behrouz NematiPour * \date (original) 08-Jan-2020 * */ #include "tst_utilities.h" #include "WifiInterface.h" // Qt // Project #include "types.h" /*! * \brief tst_utilities::tst_utilities * \details Constructor * \param parent - QObject parent owner object. * Qt handles the children destruction by their parent objects life-cycle. */ tst_utilities::tst_utilities(QObject *parent) : QObject(parent) { } void tst_utilities::tst_floatCompare_noMatch() { QVERIFY( ! Types::floatCompare(1.002,1.003)); } void tst_utilities::tst_floatCompare_isMatch() { QVERIFY( Types::floatCompare(1.354,1.354)); } void tst_utilities::tst_getbits_NoError() { QByteArray ba = QByteArray::fromHex("a5"); Types::Flags flg; int i = 0; QVERIFY( Types::getBits(ba,i,flg,8)); } void tst_utilities::tst_getbits_IsError() { QByteArray ba = QByteArray::fromHex("a5"); Types::Flags flg; int i = 0; QVERIFY( ! Types::getBits(ba,i,flg,9)); } void tst_utilities::tst_fromvariant_NoString() { char c = 64; QByteArray ba; ba += '@'; ba += '\0'; ba += '\0'; ba += '\0'; QCOMPARE(Format::fromVariant(c), ba); } void tst_utilities::tst_fromvariant_IsString() { QCOMPARE(Format::fromVariant("@"), "@"); } void tst_utilities::tst_fromvariant_ByteArray() { QByteArray ba; ba += '@'; ba += '\0'; ba += '\0'; ba += '\0'; QVariant var(ba); QCOMPARE(Format::fromVariant(var), ba); } void tst_utilities::tst_fromvariant_Float() { float f = 12.5; QByteArray ba; ba += '\0'; ba += '\0'; ba += 0x48; ba += 0x41; QCOMPARE(Format::fromVariant(f).toHex(), ba.toHex()); } void tst_utilities::tst_fromvariant_UInt() { quint32 ui = 65500; QByteArray ba; ba += 0xDC; ba += 0xFF; ba += '\0'; ba += '\0'; QCOMPARE(Format::fromVariant(ui).toHex(), ba.toHex()); } void tst_utilities::tst_fromvariant_Int_Pos() { qint32 pi = 32700; QByteArray ba; ba += 0xBC; ba += 0x7F; ba += '\0'; ba += '\0'; QCOMPARE(Format::fromVariant(pi).toHex(), ba.toHex()); } void tst_utilities::tst_fromvariant_Int_Neg() { qint32 ni = -32700; QByteArray ba; ba += 0x44; ba += 0x80; ba += 0xFF; ba += 0xFF; QCOMPARE(Format::fromVariant(ni).toHex(), ba.toHex()); } void tst_utilities::tst_fromvariant_List() { quint32 ui = 65500 ; float f = 12.5 ; qint32 pi = 32700 ; qint32 ni = -32700 ; QVariantList vl; vl += 12.5; // float with no type is double in QVariant vl += f; vl += ui; vl += pi; vl += ni; QByteArray ba; ba += '\0'; ba += '\0'; ba += 0x48; ba += 0x41; ba += '\0'; ba += '\0'; ba += 0x48; ba += 0x41; ba += 0xDC; ba += 0xFF; ba += '\0'; ba += '\0'; ba += 0xBC; ba += 0x7F; ba += '\0'; ba += '\0'; ba += 0x44; ba += 0x80; ba += 0xFF; ba += 0xFF; QCOMPARE(Format::fromVariant(vl).toHex(), ba.toHex()); } void tst_utilities::tst_fromvariant_Bool_True() { bool b = true; QByteArray ba; ba += 0x01; QCOMPARE(Format::fromVariant(b).toHex(), ba.toHex()); } void tst_utilities::tst_fromvariant_Bool_False() { bool b = false; QByteArray ba; ba += '\0'; QCOMPARE(Format::fromVariant(b).toHex(), ba.toHex()); } void tst_utilities::tst_fromvariant_Undefined() { QTime t; // Any undefined type which is not defined in the Format::fromVariant QByteArray ba; ba += '\0'; QCOMPARE(Format::fromVariant(t.currentTime()).toHex(), ba.toHex()); } void tst_utilities::tst_toStringList_Default() { const QList data { "A", "B", "C", }; QStringList mActual = Format::toStringList(data); QStringList mExpected = { "A", "B", "C", }; QCOMPARE(mActual, mExpected); } void tst_utilities::tst_toStringList_RemoveDuplicate() { const QList data { "A", "B", "B", "C", }; QStringList mActual = Format::toStringList(data, true); QStringList mExpected = { "A", "B", "C", }; QCOMPARE(mActual, mExpected); } void tst_utilities::tst_toStringList_Prefix() { const QList data { "A", "B", "B", "C", }; QStringList mActual = Format::toStringList(data, true, "*"); QStringList mExpected = { "*A", "*B", "*C", }; QCOMPARE(mActual, mExpected); } void tst_utilities::tst_getValue_len() { Types::S32 vFlowSetPoint; int index = 0; QByteArray data; data += 0xFF; QVERIFY( ! Types::getValue<>( data, index, vFlowSetPoint ) ); } void tst_utilities::tst_safeIncrement_StepZero() { uchar c = 0; Types::safeIncrement(c, 0); QCOMPARE(c, 1); } void tst_utilities::tst_safeIncrement_GtMaxValue_Step10() { uchar c = 250; Types::safeIncrement(c, 10); QCOMPARE(c, 4); } void tst_utilities::tst_safeIncrement_GtMaxValue_Step1() { uchar c = 255; Types::safeIncrement(c); QCOMPARE(c, 0); } void tst_utilities::tst_wifi_interface_parse_scan() { _WifiInterface.init(); const QString output = "wlan0 Scan completed : \n" " Cell 01 - Address: 7C:57:3C:FE:4C:D5 \n" " Protocol:IEEE 802.11a \n" " Channel:100 \n" " Mode:Master \n" " ESSID:\"DialityWAPB\" \n" " IE: IEEE 802.11i/WPA2 Version 1 \n" " Group Cipher : TKIP \n" " Pairwise Ciphers (1) : CCMP \n" " Authentication Suites (1) : PSK \n" " IE: WPA Version 1 \n" " Group Cipher : TKIP \n" " Pairwise Ciphers (1) : TKIP \n" " Authentication Suites (1) : PSK \n" " IE: Unknown: DD180050F2020101890003A4000027A4000042435E0062322F00 \n" " Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s \n" " 36 Mb/s; 48 Mb/s; 54 Mb/s \n" " Encryption key:on \n" " Quality=176/0 Signal level=-80 dBm Noise level=0 dBm \n" " Extra: Age: 3813 \n" " Cell 02 - Address: 7C:57:3C:FE:4C:D0 \n" " Protocol:IEEE 802.11a \n" " Channel:100 \n" " Mode:Master \n" " ESSID:\"Diality Guest\" \n" " IE: IEEE 802.11i/WPA2 Version 1 \n" " Group Cipher : CCMP \n" " Pairwise Ciphers (1) : CCMP \n" " Authentication Suites (1) : PSK \n" " IE: Unknown: DD180050F2020101890003A4000027A4000042435E0062322F00 \n" " Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s \n" " 36 Mb/s; 48 Mb/s; 54 Mb/s \n" " Encryption key:on \n" " Quality=176/0 Signal level=-80 dBm Noise level=0 dBm \n" " Extra: Age: 3815 \n" " Cell 03 - Address: 7C:57:3C:FE:4C:D4 \n" " Protocol:IEEE 802.11a \n" " Channel:100 \n" " Mode:Master \n" " ESSID:\"DialityWAPA\" \n" " IE: WPA Version 1 \n" " Group Cipher : TKIP \n" " Pairwise Ciphers (2) : TKIP CCMP \n" " Authentication Suites (1) : PSK \n" " IE: Unknown: DD180050F2020101890003A4000027A4000042435E0062322F00 \n" " Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s \n" " 36 Mb/s; 48 Mb/s; 54 Mb/s \n" " Encryption key:on \n" " Quality=175/0 Signal level=-81 dBm Noise level=0 dBm \n" " Extra: Age: 3814 \n" " Cell 04 - Address: 7C:57:3C:FE:4C:D3 \n" " Protocol:IEEE 802.11a \n" " Channel:100 \n" " Mode:Master \n" " ESSID:\"DialityWEP\" \n" " IE: Unknown: DD180050F2020101890003A4000027A4000042435E0062322F00 \n" " Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s \n" " 36 Mb/s; 48 Mb/s; 54 Mb/s \n" " Encryption key:on \n" " Quality=175/0 Signal level=-81 dBm Noise level=0 dBm \n" " Extra: Age: 3814 \n" " Cell 05 - Address: 7C:57:3C:FE:4C:D2 \n" " Protocol:IEEE 802.11a \n" " Channel:100 \n" " Mode:Master \n" " ESSID:\"DilaityIoT\" \n" " IE: IEEE 802.11i/WPA2 Version 1 \n" " Group Cipher : CCMP \n" " Pairwise Ciphers (1) : CCMP \n" " Authentication Suites (1) : PSK \n" " IE: Unknown: DD180050F2020101890003A4000027A4000042435E0062322F00 \n" " Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s \n" " 36 Mb/s; 48 Mb/s; 54 Mb/s \n" " Encryption key:on \n" " Quality=175/0 Signal level=-81 dBm Noise level=0 dBm \n" " Extra: Age: 3814 \n" " Cell 06 - Address: 7C:57:3C:FE:4C:D1 \n" " Protocol:IEEE 802.11a \n" " Channel:100 \n" " Mode:Master \n" " ESSID:\"DialityHQ\" \n" " IE: IEEE 802.11i/WPA2 Version 1 \n" " Group Cipher : CCMP \n" " Pairwise Ciphers (1) : CCMP \n" " Authentication Suites (1) : PSK \n" " IE: Unknown: DD180050F2020101890003A4000027A4000042435E0062322F00 \n" " Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s \n" " 36 Mb/s; 48 Mb/s; 54 Mb/s \n" " Encryption key:on \n" " Quality=175/0 Signal level=-81 dBm Noise level=0 dBm \n" " Extra: Age: 3815 \n" " Cell 07 - Address: 7C:57:3C:FE:4C:C2 \n" " Protocol:IEEE 802.11g \n" " Channel:11 \n" " Mode:Master \n" " ESSID:\"DilaityIoT\" \n" " IE: IEEE 802.11i/WPA2 Version 1 \n" " Group Cipher : CCMP \n" " Pairwise Ciphers (1) : CCMP \n" " Authentication Suites (1) : PSK \n" " IE: Unknown: DD180050F20201018D0003A4000027A4000042435E0062322F00 \n" " IE: Unknown: DD07000B8601040809 \n" " Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s \n" " 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s \n" " 48 Mb/s; 54 Mb/s \n" " Encryption key:on \n" " Quality=169/0 Signal level=-87 dBm Noise level=0 dBm \n" " Extra: Age: 1305742 \n" " Cell 08 - Address: 7C:57:3C:FE:4C:C4 \n" " Protocol:IEEE 802.11g \n" " Channel:11 \n" " Mode:Master \n" " ESSID:\"DialityWAPA\" \n" " IE: WPA Version 1 \n" " Group Cipher : TKIP \n" " Pairwise Ciphers (2) : TKIP CCMP \n" " Authentication Suites (1) : PSK \n" " IE: Unknown: DD180050F2020101850003A4000027A4000042435E0062322F00 \n" " IE: Unknown: DD07000B8601040809 \n" " Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s \n" " 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s \n" " 48 Mb/s; 54 Mb/s \n" " Encryption key:on \n" " Quality=167/0 Signal level=-89 dBm Noise level=0 dBm \n" " Extra: Age: 1305739 \n" " Cell 09 - Address: 7C:57:3C:FE:4C:C0 \n" " Protocol:IEEE 802.11g \n" " Channel:11 \n" " Mode:Master \n" " ESSID:\"Diality Guest\" \n" " IE: IEEE 802.11i/WPA2 Version 1 \n" " Group Cipher : CCMP \n" " Pairwise Ciphers (1) : CCMP \n" " Authentication Suites (1) : PSK \n" " IE: Unknown: DD180050F20201018D0003A4000027A4000042435E0062322F00 \n" " IE: Unknown: DD07000B8601040809 \n" " Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s \n" " 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s \n" " 48 Mb/s; 54 Mb/s \n" " Encryption key:on \n" " Quality=167/0 Signal level=-89 dBm Noise level=0 dBm \n" " Extra: Age: 5651"; QList networks; networks.append(WifiNetworkData("7C:57:3C:FE:4C:D5", "DialityWAPB", {WifiNetworkData::SECURITY_TYPE::WPA2_AES }, WifiNetworkData::STATUS::NOT_CONNECTED, -80)); networks.append(WifiNetworkData("7C:57:3C:FE:4C:D0", "Diality Guest", {WifiNetworkData::SECURITY_TYPE::WPA2_AES }, WifiNetworkData::STATUS::NOT_CONNECTED, -80)); networks.append(WifiNetworkData("7C:57:3C:FE:4C:D4", "DialityWAPA", {WifiNetworkData::SECURITY_TYPE::WPA_TKIP_AES}, WifiNetworkData::STATUS::NOT_CONNECTED, -81)); networks.append(WifiNetworkData("7C:57:3C:FE:4C:D3", "DialityWEP", {WifiNetworkData::SECURITY_TYPE::WEP }, WifiNetworkData::STATUS::NOT_CONNECTED, -81)); networks.append(WifiNetworkData("7C:57:3C:FE:4C:D2", "DilaityIoT", {WifiNetworkData::SECURITY_TYPE::WPA2_AES }, WifiNetworkData::STATUS::NOT_CONNECTED, -81)); networks.append(WifiNetworkData("7C:57:3C:FE:4C:D1", "DialityHQ", {WifiNetworkData::SECURITY_TYPE::WPA2_AES }, WifiNetworkData::STATUS::NOT_CONNECTED, -81)); networks.append(WifiNetworkData("7C:57:3C:FE:4C:C2", "DilaityIoT", {WifiNetworkData::SECURITY_TYPE::WPA2_AES }, WifiNetworkData::STATUS::NOT_CONNECTED, -87)); networks.append(WifiNetworkData("7C:57:3C:FE:4C:C4", "DialityWAPA", {WifiNetworkData::SECURITY_TYPE::WPA_TKIP_AES}, WifiNetworkData::STATUS::NOT_CONNECTED, -89)); networks.append(WifiNetworkData("7C:57:3C:FE:4C:C0", "Diality Guest", {WifiNetworkData::SECURITY_TYPE::WPA2_AES }, WifiNetworkData::STATUS::NOT_CONNECTED, -89)); QList parsedNetworks = _WifiInterface.parseWifiScan(output); QCOMPARE(parsedNetworks.length(), networks.length()); for (int i = 0; i < networks.length(); ++i) { QCOMPARE(parsedNetworks[i].macAddress(), networks[i].macAddress()); QCOMPARE(parsedNetworks[i].ssid(), networks[i].ssid()); QCOMPARE(parsedNetworks[i].securityTypes(), networks[i].securityTypes()); QCOMPARE(parsedNetworks[i].status(), networks[i].status()); QCOMPARE(parsedNetworks[i].signalLevel(), networks[i].signalLevel()); } } void tst_utilities::tst_wifi_interface_parse_ip() { } void tst_utilities::tst_wifi_interface_parse_broadcast() { } void tst_utilities::tst_wifi_interface_parse_subnet_mask() { } void tst_utilities::tst_wifi_interface_parse_gateway() { } void tst_utilities::tst_wifi_interface_parse_dns() { }