File indexing completed on 2024-04-28 05:34:06

0001 /*
0002     SPDX-FileCopyrightText: 2018 Bruce Anderson <banderson19com@san.rr.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006 
0007 #include "simpleipv4addressvalidator.h"
0008 #include <QTest>
0009 
0010 class SimpleIpv4Test : public QObject
0011 {
0012     Q_OBJECT
0013 
0014 public:
0015     SimpleIpv4Test();
0016 
0017 private Q_SLOTS:
0018     void baseTest();
0019     void baseTest_data();
0020     void cidrTest();
0021     void cidrTest_data();
0022     void portTest();
0023     void portTest_data();
0024 
0025 private:
0026     SimpleIpV4AddressValidator m_vb;
0027     SimpleIpV4AddressValidator m_vc;
0028     SimpleIpV4AddressValidator m_vp;
0029 };
0030 
0031 SimpleIpv4Test::SimpleIpv4Test()
0032     : m_vb(SimpleIpV4AddressValidator::AddressStyle::Base)
0033     , m_vc(SimpleIpV4AddressValidator::AddressStyle::WithCidr)
0034     , m_vp(SimpleIpV4AddressValidator::AddressStyle::WithPort)
0035 {
0036 }
0037 
0038 Q_DECLARE_METATYPE(QValidator::State)
0039 
0040 void SimpleIpv4Test::baseTest_data()
0041 {
0042     QTest::addColumn<QString>("address");
0043     QTest::addColumn<QValidator::State>("result");
0044 
0045     QTest::newRow("empty string") << "" << QValidator::Intermediate;
0046     QTest::newRow("123.12.2") << "123.12.2" << QValidator::Intermediate;
0047     QTest::newRow("123.45.22.9") << "123.45.22.9" << QValidator::Acceptable;
0048     QTest::newRow("1") << "1" << QValidator::Intermediate;
0049     QTest::newRow("12") << "12" << QValidator::Intermediate;
0050     QTest::newRow("123") << "123" << QValidator::Intermediate;
0051     QTest::newRow("123.") << "123." << QValidator::Intermediate;
0052     QTest::newRow("123.4") << "123.4" << QValidator::Intermediate;
0053     QTest::newRow("123.54") << "123.54" << QValidator::Intermediate;
0054     QTest::newRow("123.54.") << "123.54." << QValidator::Intermediate;
0055     QTest::newRow("123.255") << "123.255" << QValidator::Intermediate;
0056     QTest::newRow("123.255.") << "123.255." << QValidator::Intermediate;
0057     QTest::newRow("123.123.9") << "123.123.9" << QValidator::Intermediate;
0058     QTest::newRow("123.34.99") << "123.34.99" << QValidator::Intermediate;
0059     QTest::newRow("123.22.233") << "123.22.233" << QValidator::Intermediate;
0060     QTest::newRow("255.255.255.") << "255.255.255." << QValidator::Intermediate;
0061     QTest::newRow("1.1.1.7") << "1.1.1.7" << QValidator::Acceptable;
0062     QTest::newRow("12a") << "12a" << QValidator::Invalid;
0063     QTest::newRow("255") << "255" << QValidator::Intermediate;
0064     QTest::newRow("256") << "256" << QValidator::Invalid;
0065     QTest::newRow("255.255.255.255") << "255.255.255.255" << QValidator::Acceptable;
0066     QTest::newRow("256.255.255.255") << "256.255.255.255" << QValidator::Invalid;
0067     QTest::newRow("255.256.255.255") << "255.256.255.255" << QValidator::Invalid;
0068     QTest::newRow("255.255.256.255") << "255.255.256.255" << QValidator::Invalid;
0069     QTest::newRow("255.255.255.256") << "255.255.255.256" << QValidator::Invalid;
0070     QTest::newRow("1.1.1.1.") << "1.1.1.1." << QValidator::Invalid;
0071 }
0072 
0073 void SimpleIpv4Test::baseTest()
0074 {
0075     int pos;
0076 
0077     QFETCH(QString, address);
0078     QFETCH(QValidator::State, result);
0079 
0080     QCOMPARE(m_vb.validate(address, pos), result);
0081 }
0082 
0083 void SimpleIpv4Test::cidrTest_data()
0084 {
0085     QTest::addColumn<QString>("address");
0086     QTest::addColumn<QValidator::State>("result");
0087 
0088     QTest::newRow("10.77.18.4/32") << "10.77.18.4/32" << QValidator::Acceptable;
0089     QTest::newRow("10.77.18.4/33") << "10.77.18.4/33" << QValidator::Invalid;
0090     QTest::newRow("10.77.14.8") << "10.77.14.8" << QValidator::Intermediate;
0091     QTest::newRow("10.77.13/") << "10.77.13/" << QValidator::Invalid;
0092     QTest::newRow("33.22.55.44/") << "33.22.55.44/" << QValidator::Intermediate;
0093     QTest::newRow("11.23.45./") << "11.23.45./" << QValidator::Invalid;
0094     QTest::newRow("0.0.0.0/0") << "0.0.0.0/0" << QValidator::Acceptable;
0095     QTest::newRow("1.2.3.4/28/") << "1.2.3.4/28/" << QValidator::Invalid;
0096     QTest::newRow("1.2.3.4//") << "1.2.3.4//" << QValidator::Invalid;
0097 }
0098 
0099 void SimpleIpv4Test::cidrTest()
0100 {
0101     int pos;
0102 
0103     QFETCH(QString, address);
0104     QFETCH(QValidator::State, result);
0105 
0106     QCOMPARE(m_vc.validate(address, pos), result);
0107 }
0108 
0109 void SimpleIpv4Test::portTest_data()
0110 {
0111     QTest::addColumn<QString>("address");
0112     QTest::addColumn<QValidator::State>("result");
0113 
0114     QTest::newRow("10.77.18.4:32") << "10.77.18.4:32" << QValidator::Acceptable;
0115     QTest::newRow("10.77.18.4:65536") << "10.77.18.4:65536" << QValidator::Invalid;
0116     QTest::newRow("10.77.18.4") << "10.77.18.4" << QValidator::Intermediate;
0117     QTest::newRow("10.77.13:") << "10.77.13:" << QValidator::Invalid;
0118     QTest::newRow("33.22.55.44:") << "33.22.55.44:" << QValidator::Intermediate;
0119     QTest::newRow("11.23.45.:") << "11.23.45.:" << QValidator::Invalid;
0120     QTest::newRow("0.0.0.0:65535") << "0.0.0.0:65535" << QValidator::Acceptable;
0121     QTest::newRow("1.2.3.4:0:") << "1.2.3.4:0:" << QValidator::Invalid;
0122     QTest::newRow("1.2.3.4::") << "1.2.3.4::" << QValidator::Invalid;
0123 }
0124 
0125 void SimpleIpv4Test::portTest()
0126 {
0127     int pos;
0128 
0129     QFETCH(QString, address);
0130     QFETCH(QValidator::State, result);
0131 
0132     QCOMPARE(m_vp.validate(address, pos), result);
0133 }
0134 
0135 QTEST_APPLESS_MAIN(SimpleIpv4Test)
0136 
0137 #include "simpleipv4test.moc"