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