]> git.ipfire.org Git - thirdparty/pdns.git/blame - pdns/test-arguments_cc.cc
rec: mention rust compiler in compiling docs
[thirdparty/pdns.git] / pdns / test-arguments_cc.cc
CommitLineData
1c2d079d 1#ifndef BOOST_TEST_DYN_LINK
8954859e 2#define BOOST_TEST_DYN_LINK
1c2d079d
FM
3#endif
4
8954859e 5#define BOOST_TEST_NO_MAIN
6#ifdef HAVE_CONFIG_H
7#include "config.h"
8#endif
9#include <stdlib.h>
10#include <unistd.h>
11#include <boost/test/unit_test.hpp>
12#include "arguments.hh"
13#include "namespaces.hh"
14
15BOOST_AUTO_TEST_SUITE(test_arguments_cc)
16
17BOOST_AUTO_TEST_CASE(test_file_parse) {
18 char path[]="/tmp/pdns-test-conf.XXXXXX";
19 int fd=mkstemp(path);
20 if(fd < 0)
21 BOOST_FAIL("Unable to generate a temporary file");
22
23 string config=
24R"(launch=launch=1234
25test=123\
26456
27test2=here # and here it stops
28fail=no
29success=on
30really=yes)";
31
690b86b7 32 ssize_t len=write(fd, config.c_str(), config.size());
8954859e 33
690b86b7 34 BOOST_CHECK_EQUAL(len, static_cast<ssize_t>(config.size()));
8954859e 35 if(!len)
36 return;
37 close(fd);
38
39 try {
40 ArgvMap arg;
41 for(auto& a : {"launch", "test", "test2", "fail", "success", "really"} )
42 arg.set(a,a);
43 arg.set("default", "default")="no";
44 arg.file(path);
45 unlink(path);
46
47 BOOST_CHECK_EQUAL(arg["launch"], "launch=1234");
48 BOOST_CHECK_EQUAL(arg["test"], "123456");
49 BOOST_CHECK_EQUAL(arg.asNum("test"), 123456);
50 BOOST_CHECK_EQUAL(arg["test2"], "here");
51 BOOST_CHECK_EQUAL(arg.mustDo("fail"), false);
52 BOOST_CHECK_EQUAL(arg.mustDo("success"), true);
53 BOOST_CHECK_EQUAL(arg.mustDo("really"), true);
54 BOOST_CHECK_EQUAL(arg["default"], "no");
55
56 }
57 catch(PDNSException& e) {
58 unlink(path);
59 cerr<<"Exception: "<<e.reason<<endl;
60 BOOST_FAIL("Exception: "+e.reason);
61 }
62};
63
64BOOST_AUTO_TEST_SUITE_END();