Author: axeld Date: 2010-12-01 18:33:09 +0100 (Wed, 01 Dec 2010) New Revision: 39694 Changeset: http://dev.haiku-os.org/changeset/39694 Added: haiku/trunk/src/tests/kits/net/libnetapi/ haiku/trunk/src/tests/kits/net/libnetapi/Jamfile haiku/trunk/src/tests/kits/net/libnetapi/NetAPITestAddon.cpp haiku/trunk/src/tests/kits/net/libnetapi/NetworkAddressTest.cpp haiku/trunk/src/tests/kits/net/libnetapi/NetworkAddressTest.h Modified: haiku/trunk/src/tests/kits/net/Jamfile Log: * Added some unit tests for BNetworkAddress. Modified: haiku/trunk/src/tests/kits/net/Jamfile =================================================================== --- haiku/trunk/src/tests/kits/net/Jamfile 2010-12-01 17:32:27 UTC (rev 39693) +++ haiku/trunk/src/tests/kits/net/Jamfile 2010-12-01 17:33:09 UTC (rev 39694) @@ -30,6 +30,7 @@ SubInclude HAIKU_TOP src tests kits net DialUpPreflet ; SubInclude HAIKU_TOP src tests kits net icmp ; SubInclude HAIKU_TOP src tests kits net ipv6 ; +HaikuSubInclude libnetapi ; SubInclude HAIKU_TOP src tests kits net multicast ; SubInclude HAIKU_TOP src tests kits net netperf ; SubInclude HAIKU_TOP src tests kits net preflet ; Added: haiku/trunk/src/tests/kits/net/libnetapi/Jamfile =================================================================== --- haiku/trunk/src/tests/kits/net/libnetapi/Jamfile (rev 0) +++ haiku/trunk/src/tests/kits/net/libnetapi/Jamfile 2010-12-01 17:33:09 UTC (rev 39694) @@ -0,0 +1,9 @@ +SubDir HAIKU_TOP src tests kits net libnetapi ; + +UnitTestLib libnetapitest.so : + NetAPITestAddon.cpp + + NetworkAddressTest.cpp + + : bnetapi $(TARGET_LIBSTDC++) $(TARGET_LIBSUPC++) +; Added: haiku/trunk/src/tests/kits/net/libnetapi/NetAPITestAddon.cpp =================================================================== --- haiku/trunk/src/tests/kits/net/libnetapi/NetAPITestAddon.cpp (rev 0) +++ haiku/trunk/src/tests/kits/net/libnetapi/NetAPITestAddon.cpp 2010-12-01 17:33:09 UTC (rev 39694) @@ -0,0 +1,21 @@ +/* + * Copyright 2010, Axel Dörfler, axeld@xxxxxxxxxxxxxxxxx + * Distributed under the terms of the MIT License. + */ + + +#include <TestSuite.h> +#include <TestSuiteAddon.h> + +#include "NetworkAddressTest.h" + + +BTestSuite* +getTestSuite() +{ + BTestSuite* suite = new BTestSuite("NetAPI"); + + NetworkAddressTest::AddTests(*suite); + + return suite; +} Added: haiku/trunk/src/tests/kits/net/libnetapi/NetworkAddressTest.cpp =================================================================== --- haiku/trunk/src/tests/kits/net/libnetapi/NetworkAddressTest.cpp (rev 0) +++ haiku/trunk/src/tests/kits/net/libnetapi/NetworkAddressTest.cpp 2010-12-01 17:33:09 UTC (rev 39694) @@ -0,0 +1,112 @@ +/* + * Copyright 2010, Axel Dörfler, axeld@xxxxxxxxxxxxxxxxx + * Distributed under the terms of the MIT License. + */ + + +#include "NetworkAddressTest.h" + +#include <NetworkAddress.h> +#include <TypeConstants.h> + +#include <cppunit/TestCaller.h> +#include <cppunit/TestSuite.h> + + +NetworkAddressTest::NetworkAddressTest() +{ +} + + +NetworkAddressTest::~NetworkAddressTest() +{ +} + + +void +NetworkAddressTest::TestUnset() +{ + BNetworkAddress unset; + + CPPUNIT_ASSERT(unset.Family() == AF_UNSPEC); + CPPUNIT_ASSERT(unset.Port() == 0); + + BNetworkAddress set(AF_INET, NULL); + CPPUNIT_ASSERT(set.Family() == AF_INET); + CPPUNIT_ASSERT(unset != set); + + set.Unset(); + CPPUNIT_ASSERT(unset == set); +} + + +void +NetworkAddressTest::TestWildcard() +{ + BNetworkAddress wildcard; + wildcard.SetToWildcard(AF_INET); + + CPPUNIT_ASSERT(wildcard.Family() == AF_INET); + CPPUNIT_ASSERT(wildcard.Length() == sizeof(sockaddr_in)); + CPPUNIT_ASSERT(wildcard.Port() == 0); + CPPUNIT_ASSERT(((sockaddr_in&)wildcard.SockAddr()).sin_addr.s_addr + == INADDR_ANY); + + BNetworkAddress null(AF_INET, NULL); + CPPUNIT_ASSERT(wildcard == null); +} + + +void +NetworkAddressTest::TestIsLocal() +{ + BNetworkAddress local(AF_INET, "localhost"); + CPPUNIT_ASSERT(local.IsLocal()); + + BNetworkAddress google(AF_INET, "google.com"); + CPPUNIT_ASSERT(!google.IsLocal()); +} + + +void +NetworkAddressTest::TestFlatten() +{ + // IPv4 + + BNetworkAddress ipv4(AF_INET, "localhost", 9999); + + char buffer[256]; + CPPUNIT_ASSERT(ipv4.Flatten(buffer, sizeof(buffer)) == B_OK); + + BNetworkAddress unflattened; + CPPUNIT_ASSERT(unflattened.Unflatten(B_NETWORK_ADDRESS_TYPE, buffer, + sizeof(buffer)) == B_OK); + + // unflatten buffer too small + CPPUNIT_ASSERT(unflattened.Unflatten(B_NETWORK_ADDRESS_TYPE, buffer, 0) + != B_OK); + CPPUNIT_ASSERT(unflattened.Unflatten(B_NETWORK_ADDRESS_TYPE, buffer, 3) + != B_OK); + CPPUNIT_ASSERT(unflattened.Unflatten(B_NETWORK_ADDRESS_TYPE, buffer, 16) + != B_OK); + + CPPUNIT_ASSERT(ipv4 == unflattened); +} + + +/*static*/ void +NetworkAddressTest::AddTests(BTestSuite& parent) +{ + CppUnit::TestSuite& suite = *new CppUnit::TestSuite("NetworkAddressTest"); + + suite.addTest(new CppUnit::TestCaller<NetworkAddressTest>( + "NetworkAddressTest::TestUnset", &NetworkAddressTest::TestUnset)); + suite.addTest(new CppUnit::TestCaller<NetworkAddressTest>( + "NetworkAddressTest::TestWildcard", &NetworkAddressTest::TestWildcard)); + suite.addTest(new CppUnit::TestCaller<NetworkAddressTest>( + "NetworkAddressTest::TestIsLocal", &NetworkAddressTest::TestIsLocal)); + suite.addTest(new CppUnit::TestCaller<NetworkAddressTest>( + "NetworkAddressTest::TestFlatten", &NetworkAddressTest::TestFlatten)); + + parent.addTest("NetworkAddressTest", &suite); +} Added: haiku/trunk/src/tests/kits/net/libnetapi/NetworkAddressTest.h =================================================================== --- haiku/trunk/src/tests/kits/net/libnetapi/NetworkAddressTest.h (rev 0) +++ haiku/trunk/src/tests/kits/net/libnetapi/NetworkAddressTest.h 2010-12-01 17:33:09 UTC (rev 39694) @@ -0,0 +1,27 @@ +/* + * Copyright 2010, Axel Dörfler, axeld@xxxxxxxxxxxxxxxxx + * Distributed under the terms of the MIT License. + */ +#ifndef NETWORK_ADDRESS_TEST_H +#define NETWORK_ADDRESS_TEST_H + + +#include <TestCase.h> +#include <TestSuite.h> + + +class NetworkAddressTest : public CppUnit::TestCase { +public: + NetworkAddressTest(); + virtual ~NetworkAddressTest(); + + void TestUnset(); + void TestWildcard(); + void TestIsLocal(); + void TestFlatten(); + + static void AddTests(BTestSuite& suite); +}; + + +#endif // NETWORK_ADDRESS_TEST_H