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.
72 lines
2.1 KiB
72 lines
2.1 KiB
9 years ago
|
|
||
|
#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, 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
|