1 #include "AsyncNameResolver.h"
2 
3 #include <cstring>
4 
5 #include <cppunit/extensions/HelperMacros.h>
6 
7 #include "SocketCore.h"
8 
9 namespace aria2 {
10 
11 class AsyncNameResolverTest : public CppUnit::TestFixture {
12 
13   CPPUNIT_TEST_SUITE(AsyncNameResolverTest);
14   CPPUNIT_TEST(testParseAsyncDNSServers);
15   CPPUNIT_TEST_SUITE_END();
16 
17 public:
setUp()18   void setUp() {}
19 
tearDown()20   void tearDown() {}
21 
22   void testParseAsyncDNSServers();
23 };
24 
25 CPPUNIT_TEST_SUITE_REGISTRATION(AsyncNameResolverTest);
26 
testParseAsyncDNSServers()27 void AsyncNameResolverTest::testParseAsyncDNSServers()
28 {
29 #ifdef HAVE_ARES_ADDR_NODE
30   in_addr ans4;
31   CPPUNIT_ASSERT_EQUAL((size_t)4, net::getBinAddr(&ans4, "192.168.0.1"));
32   in6_addr ans6;
33   CPPUNIT_ASSERT_EQUAL((size_t)16, net::getBinAddr(&ans6, "2001:db8::2:1"));
34 
35   ares_addr_node* root;
36   root = parseAsyncDNSServers("192.168.0.1,2001:db8::2:1");
37   ares_addr_node* node = root;
38   CPPUNIT_ASSERT(node);
39   CPPUNIT_ASSERT_EQUAL(AF_INET, node->family);
40   CPPUNIT_ASSERT(memcmp(&ans4, &node->addr, sizeof(ans4)) == 0);
41   node = node->next;
42   CPPUNIT_ASSERT(node);
43   CPPUNIT_ASSERT_EQUAL(AF_INET6, node->family);
44   CPPUNIT_ASSERT(memcmp(&ans6, &node->addr, sizeof(ans6)) == 0);
45   for (node = root; node;) {
46     ares_addr_node* nextNode = node->next;
47     delete node;
48     node = nextNode;
49   }
50 #endif // HAVE_ARES_ADDR_NODE
51 }
52 
53 } // namespace aria2
54