]> granicus.if.org Git - icinga2/blob - test/icinga-macros.cpp
Merge pull request #6999 from Icinga/bugfix/compiler-warnings
[icinga2] / test / icinga-macros.cpp
1 /* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
2
3 #include "icinga/macroprocessor.hpp"
4 #include <BoostTestTargetConfig.h>
5
6 using namespace icinga;
7
8 BOOST_AUTO_TEST_SUITE(icinga_macros)
9
10 BOOST_AUTO_TEST_CASE(simple)
11 {
12         Dictionary::Ptr macrosA = new Dictionary();
13         macrosA->Set("testA", 7);
14         macrosA->Set("testB", "hello");
15
16         Dictionary::Ptr macrosB = new Dictionary();
17         macrosB->Set("testA", 3);
18         macrosB->Set("testC", "world");
19
20         Array::Ptr testD = new Array();
21         testD->Add(3);
22         testD->Add("test");
23
24         macrosB->Set("testD", testD);
25
26         MacroProcessor::ResolverList resolvers;
27         resolvers.emplace_back("macrosA", macrosA);
28         resolvers.emplace_back("macrosB", macrosB);
29
30         BOOST_CHECK(MacroProcessor::ResolveMacros("$macrosA.testB$ $macrosB.testC$", resolvers) == "hello world");
31         BOOST_CHECK(MacroProcessor::ResolveMacros("$testA$", resolvers) == "7");
32         BOOST_CHECK(MacroProcessor::ResolveMacros("$testA$$testB$", resolvers) == "7hello");
33
34         Array::Ptr result = MacroProcessor::ResolveMacros("$testD$", resolvers);
35         BOOST_CHECK(result->GetLength() == 2);
36
37         /* verify the config validator macro checks */
38         BOOST_CHECK(MacroProcessor::ValidateMacroString("$host.address") == false);
39         BOOST_CHECK(MacroProcessor::ValidateMacroString("host.vars.test$") == false);
40
41         BOOST_CHECK(MacroProcessor::ValidateMacroString("host.vars.test$") == false);
42         BOOST_CHECK(MacroProcessor::ValidateMacroString("$template::test$abc$") == false);
43
44         BOOST_CHECK(MacroProcessor::ValidateMacroString("$$test $host.vars.test$") == true);
45
46         BOOST_CHECK(MacroProcessor::ValidateMacroString("test $host.vars.test$") == true);
47
48 }
49
50 BOOST_AUTO_TEST_SUITE_END()