mirror of https://github.com/c-ares/c-ares.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.3 KiB
77 lines
2.3 KiB
|
|
#include "ares-test.h" |
|
|
|
// library initialization is only needed for windows builds |
|
#ifdef USE_WINSOCK |
|
#define EXPECTED_NONINIT ARES_ENOTINITIALIZED |
|
#else |
|
#define EXPECTED_NONINIT ARES_SUCCESS |
|
#endif |
|
|
|
namespace ares { |
|
namespace test { |
|
|
|
TEST(LibraryInit, Basic) { |
|
EXPECT_EQ(EXPECTED_NONINIT, ares_library_initialized()); |
|
EXPECT_EQ(ARES_SUCCESS, ares_library_init(ARES_LIB_INIT_ALL)); |
|
EXPECT_EQ(ARES_SUCCESS, ares_library_initialized()); |
|
ares_library_cleanup(); |
|
EXPECT_EQ(EXPECTED_NONINIT, ares_library_initialized()); |
|
} |
|
|
|
TEST(LibraryInit, UnexpectedCleanup) { |
|
EXPECT_EQ(EXPECTED_NONINIT, ares_library_initialized()); |
|
ares_library_cleanup(); |
|
EXPECT_EQ(EXPECTED_NONINIT, ares_library_initialized()); |
|
} |
|
|
|
TEST(LibraryInit, DISABLED_InvalidParam) { |
|
// TODO: police flags argument to ares_library_init() |
|
EXPECT_EQ(ARES_EBADQUERY, ares_library_init(ARES_LIB_INIT_ALL << 2)); |
|
EXPECT_EQ(EXPECTED_NONINIT, ares_library_initialized()); |
|
ares_library_cleanup(); |
|
} |
|
|
|
TEST(LibraryInit, Nested) { |
|
EXPECT_EQ(EXPECTED_NONINIT, ares_library_initialized()); |
|
EXPECT_EQ(ARES_SUCCESS, ares_library_init(ARES_LIB_INIT_ALL)); |
|
EXPECT_EQ(ARES_SUCCESS, ares_library_initialized()); |
|
EXPECT_EQ(ARES_SUCCESS, ares_library_init(ARES_LIB_INIT_ALL)); |
|
EXPECT_EQ(ARES_SUCCESS, ares_library_initialized()); |
|
ares_library_cleanup(); |
|
EXPECT_EQ(ARES_SUCCESS, ares_library_initialized()); |
|
ares_library_cleanup(); |
|
EXPECT_EQ(EXPECTED_NONINIT, ares_library_initialized()); |
|
} |
|
|
|
TEST_F(LibraryTest, BasicChannelInit) { |
|
EXPECT_EQ(ARES_SUCCESS, ares_library_init(ARES_LIB_INIT_ALL)); |
|
ares_channel channel = nullptr; |
|
EXPECT_EQ(ARES_SUCCESS, ares_init(&channel)); |
|
EXPECT_NE(nullptr, channel); |
|
ares_destroy(channel); |
|
ares_library_cleanup(); |
|
} |
|
|
|
TEST_F(LibraryTest, FailChannelInit) { |
|
EXPECT_EQ(ARES_SUCCESS, |
|
ares_library_init_mem(ARES_LIB_INIT_ALL, |
|
&LibraryTest::amalloc, |
|
&LibraryTest::afree, |
|
&LibraryTest::arealloc)); |
|
SetAllocFail(1); |
|
ares_channel channel = nullptr; |
|
EXPECT_EQ(ARES_ENOMEM, ares_init(&channel)); |
|
EXPECT_EQ(nullptr, channel); |
|
ares_library_cleanup(); |
|
} |
|
|
|
#ifdef USE_WINSOCK |
|
TEST(Init, NoLibraryInit) { |
|
ares_channel channel = nullptr; |
|
EXPECT_EQ(ARES_ENOTINITIALIZED, ares_init(&channel)); |
|
} |
|
#endif |
|
|
|
} // namespace test |
|
} // namespace ares
|
|
|