From 3736dcb65e92ea3d6f1af827a52b09ebd1250f7e Mon Sep 17 00:00:00 2001 From: Shane Kearns Date: Mon, 24 Oct 2011 11:01:09 +0100 Subject: Network - Add QHostAddress::isLoopback API. The standard IPv4 loopback address is 127.0.0.1, however anything in the 127.0.0.0/8 range is also a loopback address. isLoopback returns true for any address that is in the IPv4 loopback address range, or is the single IPv6 loopback address ::1 Task-number: QTBUG-22246 Change-Id: Ic39100e2e97a52db700e01b109998a1cfd4335e3 Reviewed-by: Thiago Macieira (Intel) --- .../kernel/qhostaddress/tst_qhostaddress.cpp | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'tests') diff --git a/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp b/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp index b20e07be03..7e35830791 100644 --- a/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp +++ b/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp @@ -82,6 +82,8 @@ private slots: void parseSubnet(); void isInSubnet_data(); void isInSubnet(); + void isLoopback_data(); + void isLoopback(); }; QT_BEGIN_NAMESPACE @@ -607,5 +609,43 @@ void tst_QHostAddress::isInSubnet() QTEST(address.isInSubnet(prefix, prefixLength), "result"); } +void tst_QHostAddress::isLoopback_data() +{ + QTest::addColumn("address"); + QTest::addColumn("result"); + + QTest::newRow("ipv6_loop") << QHostAddress(QHostAddress::LocalHostIPv6) << true; + QTest::newRow("::1") << QHostAddress("::1") << true; + + QTest::newRow("ipv4_loop") << QHostAddress(QHostAddress::LocalHost) << true; + QTest::newRow("127.0.0.1") << QHostAddress("127.0.0.1") << true; + QTest::newRow("127.0.0.2") << QHostAddress("127.0.0.2") << true; + QTest::newRow("127.3.2.1") << QHostAddress("127.3.2.1") << true; + + QTest::newRow("default") << QHostAddress() << false; + QTest::newRow("1.2.3.4") << QHostAddress("1.2.3.4") << false; + QTest::newRow("10.0.0.4") << QHostAddress("10.0.0.4") << false; + QTest::newRow("192.168.3.4") << QHostAddress("192.168.3.4") << false; + + QTest::newRow("::") << QHostAddress("::") << false; + QTest::newRow("Any") << QHostAddress(QHostAddress::Any) << false; + QTest::newRow("AnyIPv4") << QHostAddress(QHostAddress::AnyIPv4) << false; + QTest::newRow("AnyIPv6") << QHostAddress(QHostAddress::AnyIPv6) << false; + QTest::newRow("Broadcast") << QHostAddress(QHostAddress::Broadcast) << false; + QTest::newRow("Null") << QHostAddress(QHostAddress::Null) << false; + + QTest::newRow("::ffff:127.0.0.1") << QHostAddress("::ffff:127.0.0.1") << true; + QTest::newRow("::ffff:127.0.0.2") << QHostAddress("::ffff:127.0.0.2") << true; + QTest::newRow("::ffff:127.3.2.1") << QHostAddress("::ffff:127.3.2.1") << true; +} + +void tst_QHostAddress::isLoopback() +{ + QFETCH(QHostAddress, address); + QFETCH(bool, result); + + QCOMPARE(address.isLoopback(), result); +} + QTEST_MAIN(tst_QHostAddress) #include "tst_qhostaddress.moc" -- cgit v1.2.3