1 #define BOOST_TEST_DYN_LINK
2 #define BOOST_TEST_NO_MAIN
7 #include <boost/test/unit_test.hpp>
8 #include <boost/assign/list_of.hpp>
9 #include <boost/foreach.hpp>
10 #include <boost/tuple/tuple.hpp>
17 BOOST_AUTO_TEST_SUITE(misc_hh
)
18 typedef pair
<std::string
, uint16_t> typedns_t
;
20 BOOST_AUTO_TEST_CASE(test_CIStringCompare
) {
21 set
<std::string
, CIStringCompare
> nsset
;
23 nsset
.insert("ns.example.com");
27 nsset
.insert("ns.example.com");
28 BOOST_CHECK_EQUAL(nsset
.size(), 4);
31 for(set
<std::string
, CIStringCompare
>::const_iterator i
=nsset
.begin();i
!=nsset
.end();++i
) {
34 BOOST_CHECK_EQUAL(s
.str(), "()(abc)(def)(ns.example.com)");
37 BOOST_AUTO_TEST_CASE(test_CIStringPairCompare
) {
38 set
<typedns_t
, CIStringPairCompare
> nsset2
;
39 nsset2
.insert(make_pair("ns.example.com", 1));
40 nsset2
.insert(make_pair("abc", 1));
41 nsset2
.insert(make_pair("", 1));
42 nsset2
.insert(make_pair("def", 1));
43 nsset2
.insert(make_pair("abc", 2));
44 nsset2
.insert(make_pair("abc", 1));
45 nsset2
.insert(make_pair("ns.example.com", 0));
46 nsset2
.insert(make_pair("abc", 2));
47 nsset2
.insert(make_pair("ABC", 2));
48 BOOST_CHECK_EQUAL(nsset2
.size(), 6);
51 for(set
<typedns_t
, CIStringPairCompare
>::const_iterator i
=nsset2
.begin();i
!=nsset2
.end();++i
) {
52 s
<<"("<<i
->first
<<"|"<<i
->second
<<")";
54 BOOST_CHECK_EQUAL(s
.str(), "(|1)(abc|1)(abc|2)(def|1)(ns.example.com|0)(ns.example.com|1)");
57 BOOST_AUTO_TEST_CASE(test_pdns_ilexicographical_compare
) {
58 typedef boost::tuple
<const std::string
, const std::string
, bool> case_t
;
59 typedef std::list
<case_t
> cases_t
;
61 cases_t cases
= boost::assign::list_of
62 (case_t(std::string(""), std::string(""), false))
63 (case_t(std::string(""), std::string("abc"), true))
64 (case_t(std::string("abc"), std::string(""), false))
65 (case_t(std::string("abc"), std::string("abcd"), true))
66 (case_t(std::string("abcd"), std::string("abc"), false))
67 (case_t(std::string("abd"), std::string("abc"), false))
68 (case_t(std::string("abc"), std::string("abd"), true))
69 (case_t(std::string("abc"), std::string("Abc"), false))
70 (case_t(std::string("Abc"), std::string("abc"), false))
73 BOOST_FOREACH(const case_t
& val
, cases
) {
75 res
= pdns_ilexicographical_compare(val
.get
<0>(), val
.get
<1>());
76 BOOST_CHECK_EQUAL(res
, val
.get
<2>());
80 BOOST_AUTO_TEST_CASE(test_pdns_iequals
) {
81 typedef boost::tuple
<const std::string
, const std::string
, bool> case_t
;
82 typedef std::list
<case_t
> cases_t
;
84 cases_t cases
= boost::assign::list_of
85 (case_t(std::string(""), std::string(""), true))
86 (case_t(std::string(""), std::string("abc"), false))
87 (case_t(std::string("abc"), std::string(""), false))
88 (case_t(std::string("abc"), std::string("abcd"), false))
89 (case_t(std::string("abcd"), std::string("abc"), false))
90 (case_t(std::string("abd"), std::string("abc"), false))
91 (case_t(std::string("abc"), std::string("abd"), false))
92 (case_t(std::string("abc"), std::string("Abc"), true))
93 (case_t(std::string("Abc"), std::string("abc"), true))
96 BOOST_FOREACH(const case_t
& val
, cases
) {
98 res
= pdns_iequals(val
.get
<0>(), val
.get
<1>());
99 BOOST_CHECK_EQUAL(res
, val
.get
<2>());
103 BOOST_AUTO_TEST_CASE(test_stripDot
) {
104 BOOST_CHECK_EQUAL(stripDot("."), "");
105 BOOST_CHECK_EQUAL(stripDot(""), "");
106 BOOST_CHECK_EQUAL(stripDot("www.powerdns.com."), "www.powerdns.com");
107 BOOST_CHECK_EQUAL(stripDot("www.powerdns.com"), "www.powerdns.com");
110 BOOST_AUTO_TEST_CASE(test_labelReverse
) {
111 BOOST_CHECK_EQUAL(labelReverse("www.powerdns.com"), "com powerdns www");
114 BOOST_AUTO_TEST_CASE(test_makeRelative
) {
115 BOOST_CHECK_EQUAL(makeRelative("www.powerdns.com", "powerdns.com"), "www");
118 BOOST_AUTO_TEST_CASE(test_AtomicCounter
) {
122 BOOST_CHECK_EQUAL(ac
, 2);
125 BOOST_AUTO_TEST_CASE(test_endianness
) {
127 #if BYTE_ORDER == BIG_ENDIAN
128 BOOST_CHECK_EQUAL(i
, htonl(i
));
129 #elif BYTE_ORDER == LITTLE_ENDIAN
130 uint32_t j
=0x01000000;
131 BOOST_CHECK_EQUAL(i
, ntohl(j
));
133 BOOST_FAIL("Did not detect endianness at all");
137 BOOST_AUTO_TEST_CASE(test_parseService
) {
139 parseService("smtp.powerdns.com:25", tp
);
140 BOOST_CHECK_EQUAL(tp
.host
, "smtp.powerdns.com");
141 BOOST_CHECK_EQUAL(tp
.port
, 25);
142 parseService("smtp.powerdns.com", tp
);
143 BOOST_CHECK_EQUAL(tp
.port
, 25);
146 BOOST_AUTO_TEST_SUITE_END()