From 0cd38980a3c14b19926fdf28a808575a688470f4 Mon Sep 17 00:00:00 2001 From: Fredrik Holmqvist Date: Tue, 28 Jul 2015 22:08:31 +0200 Subject: [PATCH] Add unit tests specific for #12208. Pass depends on network. NetworkAddressTest passes (most) tests when you have network. When no network interface (ie -net none in QEMU) tests take forever and more tests fail. When network interface exists but is disabled in Haiku, tests are fast but more tests fail. --- src/tests/kits/net/libnetapi/Jamfile | 2 +- .../kits/net/libnetapi/NetworkAddressTest.cpp | 38 +++++++++++++++++++ .../kits/net/libnetapi/NetworkAddressTest.h | 2 + 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/src/tests/kits/net/libnetapi/Jamfile b/src/tests/kits/net/libnetapi/Jamfile index 1e7fca6b5f..b2e34ce9cb 100644 --- a/src/tests/kits/net/libnetapi/Jamfile +++ b/src/tests/kits/net/libnetapi/Jamfile @@ -6,5 +6,5 @@ UnitTestLib libnetapitest.so : NetworkAddressTest.cpp NetworkInterfaceTest.cpp - : bnetapi network [ TargetLibstdc++ ] [ TargetLibsupc++ ] + : be bnetapi network [ TargetLibstdc++ ] [ TargetLibsupc++ ] ; diff --git a/src/tests/kits/net/libnetapi/NetworkAddressTest.cpp b/src/tests/kits/net/libnetapi/NetworkAddressTest.cpp index 5c3713493b..12f976960d 100644 --- a/src/tests/kits/net/libnetapi/NetworkAddressTest.cpp +++ b/src/tests/kits/net/libnetapi/NetworkAddressTest.cpp @@ -6,6 +6,7 @@ #include "NetworkAddressTest.h" +#include #include #include @@ -83,6 +84,38 @@ NetworkAddressTest::TestWildcard() } +void +NetworkAddressTest::TestNullAddr() +{ + BNetworkAddress nullAddr(AF_INET, NULL, 555); + CPPUNIT_ASSERT(nullAddr.InitCheck() == B_OK); + + CPPUNIT_ASSERT(nullAddr.Family() == AF_INET); + CPPUNIT_ASSERT(nullAddr.Length() == sizeof(sockaddr_in)); + CPPUNIT_ASSERT(nullAddr.Port() == 555); + CPPUNIT_ASSERT(!nullAddr.IsEmpty()); +} + + +void +NetworkAddressTest::TestSetAddressFromFamilyPort() +{ + BString addressStr = "192.168.1.1"; + BNetworkAddress nullAddr(AF_INET, NULL, 555); + in_addr_t inetAddress = inet_addr(addressStr.String()); + CPPUNIT_ASSERT(nullAddr.SetAddress(inetAddress) == B_OK); + CPPUNIT_ASSERT(nullAddr.InitCheck() == B_OK); + + CPPUNIT_ASSERT(nullAddr.Family() == AF_INET); + CPPUNIT_ASSERT(nullAddr.Length() == sizeof(sockaddr_in)); + + sockaddr_in& sin = (sockaddr_in&)nullAddr.SockAddr(); + CPPUNIT_ASSERT(addressStr == inet_ntoa(sin.sin_addr)); + CPPUNIT_ASSERT(nullAddr.Port() == 555); + CPPUNIT_ASSERT(!nullAddr.IsEmpty()); +} + + void NetworkAddressTest::TestIsLocal() { @@ -131,6 +164,11 @@ NetworkAddressTest::AddTests(BTestSuite& parent) "NetworkAddressTest::TestSetTo", &NetworkAddressTest::TestSetTo)); suite.addTest(new CppUnit::TestCaller( "NetworkAddressTest::TestWildcard", &NetworkAddressTest::TestWildcard)); + suite.addTest(new CppUnit::TestCaller( + "NetworkAddressTest::TestNullAddr", &NetworkAddressTest::TestNullAddr)); + suite.addTest(new CppUnit::TestCaller( + "NetworkAddressTest::TestSetAddressFromFamilyPort", + &NetworkAddressTest::TestSetAddressFromFamilyPort)); suite.addTest(new CppUnit::TestCaller( "NetworkAddressTest::TestIsLocal", &NetworkAddressTest::TestIsLocal)); suite.addTest(new CppUnit::TestCaller( diff --git a/src/tests/kits/net/libnetapi/NetworkAddressTest.h b/src/tests/kits/net/libnetapi/NetworkAddressTest.h index c750d3201c..24c7a4bdfb 100644 --- a/src/tests/kits/net/libnetapi/NetworkAddressTest.h +++ b/src/tests/kits/net/libnetapi/NetworkAddressTest.h @@ -18,6 +18,8 @@ public: void TestUnset(); void TestSetTo(); void TestWildcard(); + void TestNullAddr(); + void TestSetAddressFromFamilyPort(); void TestIsLocal(); void TestFlatten();