File indexing completed on 2024-04-14 15:40:10
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 "simpleipv6addressvalidator.h" 0008 #include <QTest> 0009 0010 class SimpleIpv6Test : public QObject 0011 { 0012 Q_OBJECT 0013 0014 public: 0015 SimpleIpv6Test(); 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 SimpleIpV6AddressValidator m_vb; 0027 SimpleIpV6AddressValidator m_vc; 0028 SimpleIpV6AddressValidator m_vp; 0029 }; 0030 0031 SimpleIpv6Test::SimpleIpv6Test() 0032 : m_vb(SimpleIpV6AddressValidator::AddressStyle::Base) 0033 , m_vc(SimpleIpV6AddressValidator::AddressStyle::WithCidr) 0034 , m_vp(SimpleIpV6AddressValidator::AddressStyle::WithPort) 0035 { 0036 } 0037 0038 Q_DECLARE_METATYPE(QValidator::State) 0039 0040 void SimpleIpv6Test::baseTest_data() 0041 { 0042 QTest::addColumn<QString>("address"); 0043 QTest::addColumn<QValidator::State>("result"); 0044 0045 QTest::newRow("null string") << "" << QValidator::Intermediate; 0046 QTest::newRow("0123:4567:89ab:cdef") << "0123:4567:89ab:cdef" << QValidator::Intermediate; 0047 QTest::newRow("0123:4567:89ab:cdef:0123:4567:89ab:cdef") << "0123:4567:89ab:cdef:0123:4567:89ab:cdef" << 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("1234") << "1234" << QValidator::Intermediate; 0052 QTest::newRow("1234:") << "1234:" << QValidator::Intermediate; 0053 QTest::newRow("1234:1") << "1234:1" << QValidator::Intermediate; 0054 QTest::newRow("1234:12") << "1234:12" << QValidator::Intermediate; 0055 QTest::newRow("1234:123") << "1234:123" << QValidator::Intermediate; 0056 QTest::newRow("1234:1234") << "1234:1234" << QValidator::Intermediate; 0057 QTest::newRow("1234:1234:") << "1234:1234:" << QValidator::Intermediate; 0058 QTest::newRow("1234:1234:1") << "1234:1234:1" << QValidator::Intermediate; 0059 QTest::newRow("1234:1234:12") << "1234:1234:12" << QValidator::Intermediate; 0060 QTest::newRow("1234:1234:123") << "1234:1234:123" << QValidator::Intermediate; 0061 QTest::newRow("1234:1234:1234") << "1234:1234:1234" << QValidator::Intermediate; 0062 QTest::newRow("1234:1234:1234:") << "1234:1234:1234:" << QValidator::Intermediate; 0063 QTest::newRow("1234:1234:1234:1") << "1234:1234:1234:1" << QValidator::Intermediate; 0064 QTest::newRow("1234:1234:1234:12") << "1234:1234:1234:12" << QValidator::Intermediate; 0065 QTest::newRow("1234:1234:1234:123") << "1234:1234:1234:123" << QValidator::Intermediate; 0066 QTest::newRow("1234:1234:1234:1234") << "1234:1234:1234:1234" << QValidator::Intermediate; 0067 QTest::newRow("1234:1234:1234:1234:") << "1234:1234:1234:1234:" << QValidator::Intermediate; 0068 QTest::newRow("1234:1234:1234:1234:1") << "1234:1234:1234:1234:1" << QValidator::Intermediate; 0069 QTest::newRow("1234:1234:1234:1234:12") << "1234:1234:1234:1234:12" << QValidator::Intermediate; 0070 QTest::newRow("1234:1234:1234:1234:123") << "1234:1234:1234:1234:123" << QValidator::Intermediate; 0071 QTest::newRow("1234:1234:1234:1234:1234") << "1234:1234:1234:1234:1234" << QValidator::Intermediate; 0072 QTest::newRow("1234:1234:1234:1234:1234:") << "1234:1234:1234:1234:1234:" << QValidator::Intermediate; 0073 QTest::newRow("1234:1234:1234:1234:1234:1") << "1234:1234:1234:1234:1234:1" << QValidator::Intermediate; 0074 QTest::newRow("1234:1234:1234:1234:1234:12") << "1234:1234:1234:1234:1234:12" << QValidator::Intermediate; 0075 QTest::newRow("1234:1234:1234:1234:1234:123") << "1234:1234:1234:1234:1234:123" << QValidator::Intermediate; 0076 QTest::newRow("1234:1234:1234:1234:1234:1234") << "1234:1234:1234:1234:1234:1234" << QValidator::Intermediate; 0077 QTest::newRow("1234:1234:1234:1234:1234:1234:") << "1234:1234:1234:1234:1234:1234:" << QValidator::Intermediate; 0078 QTest::newRow("1234:1234:1234:1234:1234:1234:1") << "1234:1234:1234:1234:1234:1234:1" << QValidator::Intermediate; 0079 QTest::newRow("1234:1234:1234:1234:1234:1234:12") << "1234:1234:1234:1234:1234:1234:12" << QValidator::Intermediate; 0080 QTest::newRow("1234:1234:1234:1234:1234:1234:123") << "1234:1234:1234:1234:1234:1234:123" << QValidator::Intermediate; 0081 QTest::newRow("1234:1234:1234:1234:1234:1234:1234") << "1234:1234:1234:1234:1234:1234:1234" << QValidator::Intermediate; 0082 QTest::newRow("1234:1234:1234:1234:1234:1234:1234:") << "1234:1234:1234:1234:1234:1234:1234:" << QValidator::Intermediate; 0083 QTest::newRow("1234:1234:1234:1234:1234:1234:1234:1") << "1234:1234:1234:1234:1234:1234:1234:1" << QValidator::Acceptable; 0084 QTest::newRow("1234:1234:1234:1234:1234:1234:1234:12") << "1234:1234:1234:1234:1234:1234:1234:12" << QValidator::Acceptable; 0085 QTest::newRow("1234:1234:1234:1234:1234:1234:1234:123") << "1234:1234:1234:1234:1234:1234:1234:123" << QValidator::Acceptable; 0086 QTest::newRow("1234:1234:1234:1234:1234:1234:1234:1234") << "1234:1234:1234:1234:1234:1234:1234:1234" << QValidator::Acceptable; 0087 QTest::newRow(":") << ":" << QValidator::Intermediate; 0088 QTest::newRow("::") << "::" << QValidator::Acceptable; 0089 QTest::newRow("::1:2:3:4") << "::1:2:3:4" << QValidator::Acceptable; 0090 QTest::newRow("1::2:3:4") << "1::2:3:4" << QValidator::Acceptable; 0091 QTest::newRow("1:2345::6:7") << "1:2345::6:7" << QValidator::Acceptable; 0092 QTest::newRow("1:2:3::1:1:1") << "1:2:3::1:1:1" << QValidator::Acceptable; 0093 QTest::newRow("1:2:3:4::1") << "1:2:3:4::1" << QValidator::Acceptable; 0094 QTest::newRow("1:2:3:4:5::1") << "1:2:3:4:5::1" << QValidator::Acceptable; 0095 QTest::newRow("1:2:3:4:5:6::1") << "1:2:3:4:5:6::1" << QValidator::Acceptable; 0096 QTest::newRow("1:2:3:4:5:6:7::") << "1:2:3:4:5:6:7::" << QValidator::Acceptable; 0097 QTest::newRow("1::") << "1::" << QValidator::Acceptable; 0098 QTest::newRow("::1:2:3:4") << "::1:2:3:4" << QValidator::Acceptable; 0099 QTest::newRow("::1:2:3::4") << "::1:2:3::4" << QValidator::Invalid; 0100 QTest::newRow("1:2::3:4:5:6:7:") << "1:2::3:4:5:6:7:" << QValidator::Invalid; 0101 QTest::newRow("1:2::3:4:5:6:7:8") << "1:2::3:4:5:6:7:8" << QValidator::Invalid; 0102 QTest::newRow(":1") << ":1" << QValidator::Invalid; 0103 QTest::newRow("0123:4567:89ab:cdef:0123:4567:89ab:cdeg") << "0123:4567:89ab:cdef:0123:4567:89ab:cdeg" << QValidator::Invalid; 0104 QTest::newRow("0123:4567:89ab:cdef:0123:4567:89ab:cde.") << "0123:4567:89ab:cdef:0123:4567:89ab:cde." << QValidator::Invalid; 0105 QTest::newRow("0123:4567:89ab:cdef:0123:4567:89ab:cden") << "0123:4567:89ab:cdef:0123:4567:89ab:cden" << QValidator::Invalid; 0106 QTest::newRow("0n") << "0n" << QValidator::Invalid; 0107 } 0108 0109 void SimpleIpv6Test::baseTest() 0110 { 0111 int pos; 0112 0113 QFETCH(QString, address); 0114 QFETCH(QValidator::State, result); 0115 0116 QCOMPARE(m_vb.validate(address, pos), result); 0117 } 0118 0119 void SimpleIpv6Test::cidrTest_data() 0120 { 0121 QTest::addColumn<QString>("address"); 0122 QTest::addColumn<QValidator::State>("result"); 0123 0124 QTest::newRow("1234:2345:3456:4567:5678:6789:789A:89ab/128") << "1234:2345:3456:4567:5678:6789:789A:89ab/128" << QValidator::Acceptable; 0125 QTest::newRow("") << "" << QValidator::Intermediate; 0126 QTest::newRow("1234:2345::6789:789A:89ab/28") << "1234:2345::6789:789A:89ab/28" << QValidator::Acceptable; 0127 QTest::newRow("1234:2345:3456:4567:5678:6789:789A:89ab/129") << "1234:2345:3456:4567:5678:6789:789A:89ab/129" << QValidator::Invalid; 0128 QTest::newRow("1234:2345:3456:4567:5678:6789:789A:89ab/") << "1234:2345:3456:4567:5678:6789:789A:89ab/" << QValidator::Intermediate; 0129 QTest::newRow("1234:2345:3456:4567:5678:6789:789A/") << "1234:2345:3456:4567:5678:6789:789A/" << QValidator::Invalid; 0130 QTest::newRow("1234:2345:/") << "1234:2345:/" << QValidator::Invalid; 0131 QTest::newRow("1234:2345::6789:789A:89ab") << "1234:2345::6789:789A:89ab" << QValidator::Intermediate; 0132 QTest::newRow("::/0") << "::/0" << QValidator::Acceptable; 0133 QTest::newRow("1234:2345::6789:789A:89ab/28/") << "1234:2345::6789:789A:89ab/28/" << QValidator::Invalid; 0134 QTest::newRow("1234:2345::6789:789A:89ab//") << "1234:2345::6789:789A:89ab//" << QValidator::Invalid; 0135 } 0136 0137 void SimpleIpv6Test::cidrTest() 0138 { 0139 int pos; 0140 0141 QFETCH(QString, address); 0142 QFETCH(QValidator::State, result); 0143 0144 QCOMPARE(m_vc.validate(address, pos), result); 0145 } 0146 0147 void SimpleIpv6Test::portTest_data() 0148 { 0149 QTest::addColumn<QString>("address"); 0150 QTest::addColumn<QValidator::State>("result"); 0151 0152 QTest::newRow("") << "" << QValidator::Intermediate; 0153 QTest::newRow("1") << "1" << QValidator::Invalid; 0154 QTest::newRow("[1") << "[1" << QValidator::Intermediate; 0155 QTest::newRow("[1123:22:44:11]") << "[1123:22:44:11]" << QValidator::Invalid; 0156 QTest::newRow("[1234:2345::6789:789A:89ab]") << "[1234:2345::6789:789A:89ab]" << QValidator::Intermediate; 0157 QTest::newRow("[1234:2345::6789:789A:89ab]:") << "[1234:2345::6789:789A:89ab]:" << QValidator::Intermediate; 0158 QTest::newRow("[1234:2345::6789:789A:89ab]:a") << "[1234:2345::6789:789A:89ab]:a" << QValidator::Invalid; 0159 QTest::newRow("[1234:2345::6789:789A:89ab]:12") << "[1234:2345::6789:789A:89ab]:12" << QValidator::Acceptable; 0160 QTest::newRow("[1234:2345::6789:789A:89ab]:65535") << "[1234:2345::6789:789A:89ab]:65535" << QValidator::Acceptable; 0161 QTest::newRow("[1234:2345::6789:789A:89ab]:65536") << "[1234:2345::6789:789A:89ab]:65536" << QValidator::Invalid; 0162 } 0163 0164 void SimpleIpv6Test::portTest() 0165 { 0166 int pos; 0167 0168 QFETCH(QString, address); 0169 QFETCH(QValidator::State, result); 0170 0171 QCOMPARE(m_vp.validate(address, pos), result); 0172 } 0173 0174 QTEST_GUILESS_MAIN(SimpleIpv6Test) 0175 0176 #include "simpleipv6test.moc"