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