1 #define BOOST_TEST_DYN_LINK
2 #define BOOST_TEST_NO_MAIN
4 #include <boost/test/unit_test.hpp>
5 #include <boost/assign/list_of.hpp>
6 #include <boost/foreach.hpp>
7 #include <boost/tuple/tuple.hpp>
14 BOOST_AUTO_TEST_SUITE(misc_hh
)
15 typedef pair
<std::string
, uint16_t> typedns_t
;
17 BOOST_AUTO_TEST_CASE(test_CIStringCompare
) {
18 set
<std::string
, CIStringCompare
> nsset
;
20 nsset
.insert("ns.example.com");
24 nsset
.insert("ns.example.com");
25 BOOST_CHECK_EQUAL(nsset
.size(), 4);
28 for(set
<std::string
, CIStringCompare
>::const_iterator i
=nsset
.begin();i
!=nsset
.end();++i
) {
31 BOOST_CHECK_EQUAL(s
.str(), "()(abc)(def)(ns.example.com)");
34 BOOST_AUTO_TEST_CASE(test_CIStringPairCompare
) {
35 set
<typedns_t
, CIStringPairCompare
> nsset2
;
36 nsset2
.insert(make_pair("ns.example.com", 1));
37 nsset2
.insert(make_pair("abc", 1));
38 nsset2
.insert(make_pair("", 1));
39 nsset2
.insert(make_pair("def", 1));
40 nsset2
.insert(make_pair("abc", 2));
41 nsset2
.insert(make_pair("abc", 1));
42 nsset2
.insert(make_pair("ns.example.com", 0));
43 nsset2
.insert(make_pair("abc", 2));
44 nsset2
.insert(make_pair("ABC", 2));
45 BOOST_CHECK_EQUAL(nsset2
.size(), 6);
48 for(set
<typedns_t
, CIStringPairCompare
>::const_iterator i
=nsset2
.begin();i
!=nsset2
.end();++i
) {
49 s
<<"("<<i
->first
<<"|"<<i
->second
<<")";
51 BOOST_CHECK_EQUAL(s
.str(), "(|1)(abc|1)(abc|2)(def|1)(ns.example.com|0)(ns.example.com|1)");
54 BOOST_AUTO_TEST_CASE(test_pdns_ilexicographical_compare
) {
55 typedef boost::tuple
<const std::string
, const std::string
, bool> case_t
;
56 typedef std::list
<case_t
> cases_t
;
58 cases_t cases
= boost::assign::list_of
59 (case_t(std::string(""), std::string(""), false))
60 (case_t(std::string(""), std::string("abc"), true))
61 (case_t(std::string("abc"), std::string(""), false))
62 (case_t(std::string("abc"), std::string("abcd"), true))
63 (case_t(std::string("abcd"), std::string("abc"), false))
64 (case_t(std::string("abd"), std::string("abc"), false))
65 (case_t(std::string("abc"), std::string("abd"), true))
66 (case_t(std::string("abc"), std::string("Abc"), false))
67 (case_t(std::string("Abc"), std::string("abc"), false))
70 BOOST_FOREACH(const case_t
& val
, cases
) {
72 res
= pdns_ilexicographical_compare(val
.get
<0>(), val
.get
<1>());
73 BOOST_CHECK_EQUAL(res
, val
.get
<2>());
77 BOOST_AUTO_TEST_CASE(test_pdns_iequals
) {
78 typedef boost::tuple
<const std::string
, const std::string
, bool> case_t
;
79 typedef std::list
<case_t
> cases_t
;
81 cases_t cases
= boost::assign::list_of
82 (case_t(std::string(""), std::string(""), true))
83 (case_t(std::string(""), std::string("abc"), false))
84 (case_t(std::string("abc"), std::string(""), false))
85 (case_t(std::string("abc"), std::string("abcd"), false))
86 (case_t(std::string("abcd"), std::string("abc"), false))
87 (case_t(std::string("abd"), std::string("abc"), false))
88 (case_t(std::string("abc"), std::string("abd"), false))
89 (case_t(std::string("abc"), std::string("Abc"), true))
90 (case_t(std::string("Abc"), std::string("abc"), true))
93 BOOST_FOREACH(const case_t
& val
, cases
) {
95 res
= pdns_iequals(val
.get
<0>(), val
.get
<1>());
96 BOOST_CHECK_EQUAL(res
, val
.get
<2>());
100 BOOST_AUTO_TEST_CASE(test_stripDot
) {
101 BOOST_CHECK_EQUAL(stripDot("."), "");
102 BOOST_CHECK_EQUAL(stripDot(""), "");
103 BOOST_CHECK_EQUAL(stripDot("www.powerdns.com."), "www.powerdns.com");
104 BOOST_CHECK_EQUAL(stripDot("www.powerdns.com"), "www.powerdns.com");
107 BOOST_AUTO_TEST_CASE(test_labelReverse
) {
108 BOOST_CHECK_EQUAL(labelReverse("www.powerdns.com"), "com powerdns www");
111 BOOST_AUTO_TEST_CASE(test_makeRelative
) {
112 BOOST_CHECK_EQUAL(makeRelative("www.powerdns.com", "powerdns.com"), "www");
115 BOOST_AUTO_TEST_CASE(test_AtomicCounter
) {
119 BOOST_CHECK_EQUAL(ac
, 2);
122 BOOST_AUTO_TEST_CASE(test_endianness
) {
124 #if BYTE_ORDER == BIG_ENDIAN
125 BOOST_CHECK_EQUAL(i
, htonl(i
));
126 #elif BYTE_ORDER == LITTLE_ENDIAN
127 uint32_t j
=0x01000000;
128 BOOST_CHECK_EQUAL(i
, ntohl(j
));
130 BOOST_FAIL("Did not detect endianness at all");
134 BOOST_AUTO_TEST_CASE(test_parseService
) {
136 parseService("smtp.powerdns.com:25", tp
);
137 BOOST_CHECK_EQUAL(tp
.host
, "smtp.powerdns.com");
138 BOOST_CHECK_EQUAL(tp
.port
, 25);
139 parseService("smtp.powerdns.com", tp
);
140 BOOST_CHECK_EQUAL(tp
.port
, 25);
143 BOOST_AUTO_TEST_SUITE_END()