]>
Commit | Line | Data |
---|---|---|
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 | ||
15 | BOOST_AUTO_TEST_SUITE(test_arguments_cc) | |
16 | ||
17 | BOOST_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= | |
24 | R"(launch=launch=1234 | |
25 | test=123\ | |
26 | 456 | |
27 | test2=here # and here it stops | |
28 | fail=no | |
29 | success=on | |
30 | really=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 | ||
64 | BOOST_AUTO_TEST_SUITE_END(); |