]> git.ipfire.org Git - thirdparty/pdns.git/blame - pdns/test-misc_hh.cc
Include config.h only in .cc files
[thirdparty/pdns.git] / pdns / test-misc_hh.cc
CommitLineData
9bacbe09
PD
1#define BOOST_TEST_DYN_LINK
2#define BOOST_TEST_NO_MAIN
3
870a0fe4
AT
4#ifdef HAVE_CONFIG_H
5#include "config.h"
6#endif
9bacbe09 7#include <boost/test/unit_test.hpp>
8fb5b29a
KM
8#include <boost/assign/list_of.hpp>
9#include <boost/foreach.hpp>
10#include <boost/tuple/tuple.hpp>
9bacbe09 11#include "misc.hh"
6e427101 12#include "dns.hh"
9bacbe09
PD
13#include <utility>
14
15using std::string;
16
17BOOST_AUTO_TEST_SUITE(misc_hh)
18typedef pair<std::string, uint16_t> typedns_t;
19
20BOOST_AUTO_TEST_CASE(test_CIStringCompare) {
232f0877
CH
21 set<std::string, CIStringCompare> nsset;
22 nsset.insert("abc");
23 nsset.insert("ns.example.com");
24 nsset.insert("");
25 nsset.insert("def");
26 nsset.insert("aBc");
27 nsset.insert("ns.example.com");
28 BOOST_CHECK_EQUAL(nsset.size(), 4);
9bacbe09 29
232f0877
CH
30 ostringstream s;
31 for(set<std::string, CIStringCompare>::const_iterator i=nsset.begin();i!=nsset.end();++i) {
32 s<<"("<<*i<<")";
33 }
34 BOOST_CHECK_EQUAL(s.str(), "()(abc)(def)(ns.example.com)");
9bacbe09
PD
35}
36
37BOOST_AUTO_TEST_CASE(test_CIStringPairCompare) {
232f0877
CH
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);
9bacbe09 49
232f0877
CH
50 ostringstream s;
51 for(set<typedns_t, CIStringPairCompare>::const_iterator i=nsset2.begin();i!=nsset2.end();++i) {
52 s<<"("<<i->first<<"|"<<i->second<<")";
53 }
54 BOOST_CHECK_EQUAL(s.str(), "(|1)(abc|1)(abc|2)(def|1)(ns.example.com|0)(ns.example.com|1)");
9bacbe09
PD
55}
56
8fb5b29a
KM
57BOOST_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;
60
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))
71 ;
72
73 BOOST_FOREACH(const case_t& val, cases) {
74 bool res;
75 res = pdns_ilexicographical_compare(val.get<0>(), val.get<1>());
76 BOOST_CHECK_EQUAL(res, val.get<2>());
77 }
78}
79
80BOOST_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;
83
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))
94 ;
95
96 BOOST_FOREACH(const case_t& val, cases) {
97 bool res;
98 res = pdns_iequals(val.get<0>(), val.get<1>());
99 BOOST_CHECK_EQUAL(res, val.get<2>());
100 }
101}
102
76cd6661 103BOOST_AUTO_TEST_CASE(test_stripDot) {
8fb5b29a
KM
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");
76cd6661 108}
109
110BOOST_AUTO_TEST_CASE(test_labelReverse) {
111 BOOST_CHECK_EQUAL(labelReverse("www.powerdns.com"), "com powerdns www");
112}
113
114BOOST_AUTO_TEST_CASE(test_makeRelative) {
115 BOOST_CHECK_EQUAL(makeRelative("www.powerdns.com", "powerdns.com"), "www");
116}
117
1df6d212 118BOOST_AUTO_TEST_CASE(test_AtomicCounter) {
76cd6661 119 AtomicCounter ac;
120 ++ac;
121 ++ac;
122 BOOST_CHECK_EQUAL(ac, 2);
123}
124
6e427101 125BOOST_AUTO_TEST_CASE(test_endianness) {
126 uint32_t i = 1;
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));
132#else
133 BOOST_FAIL("Did not detect endianness at all");
134#endif
135}
76cd6661 136
137BOOST_AUTO_TEST_CASE(test_parseService) {
138 ServiceTuple tp;
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);
144}
145
9bacbe09
PD
146BOOST_AUTO_TEST_SUITE_END()
147