1 #ifndef ARES_TEST_AI_H
2 #define ARES_TEST_AI_H
3 
4 #include <utility>
5 #include "gtest/gtest.h"
6 #include "gmock/gmock.h"
7 #include "ares-test.h"
8 
9 namespace ares {
10 namespace test {
11 
12 class MockChannelTestAI
13     : public MockChannelOptsTest,
14       public ::testing::WithParamInterface< std::pair<int, bool> > {
15  public:
MockChannelTestAI()16   MockChannelTestAI() : MockChannelOptsTest(1, GetParam().first, GetParam().second, nullptr, 0) {}
17 };
18 
19 class MockUDPChannelTestAI
20     : public MockChannelOptsTest,
21       public ::testing::WithParamInterface<int> {
22  public:
MockUDPChannelTestAI()23   MockUDPChannelTestAI() : MockChannelOptsTest(1, GetParam(), false, nullptr, 0) {}
24 };
25 
26 class MockTCPChannelTestAI
27     : public MockChannelOptsTest,
28       public ::testing::WithParamInterface<int> {
29  public:
MockTCPChannelTestAI()30   MockTCPChannelTestAI() : MockChannelOptsTest(1, GetParam(), true, nullptr, 0) {}
31 };
32 
33 
34 // Test fixture that uses a default channel.
35 class DefaultChannelTestAI : public LibraryTest {
36  public:
DefaultChannelTestAI()37   DefaultChannelTestAI() : channel_(nullptr) {
38     EXPECT_EQ(ARES_SUCCESS, ares_init(&channel_));
39     EXPECT_NE(nullptr, channel_);
40   }
41 
~DefaultChannelTestAI()42   ~DefaultChannelTestAI() {
43     ares_destroy(channel_);
44     channel_ = nullptr;
45   }
46 
47   // Process all pending work on ares-owned file descriptors.
48   void Process();
49 
50  protected:
51   ares_channel channel_;
52 };
53 
54 }
55 }
56 
57 #endif
58