4 // Fraunhofer Institute for Open Communication Systems (FOKUS)
5 // Competence Center NETwork research (NET), St. Augustin, GERMANY
6 // Stefan Bund <g0dil@berlios.de>
8 // This program is free software; you can redistribute it and/or modify
9 // it under the terms of the GNU General Public License as published by
10 // the Free Software Foundation; either version 2 of the License, or
11 // (at your option) any later version.
13 // This program is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 // GNU General Public License for more details.
18 // You should have received a copy of the GNU General Public License
19 // along with this program; if not, write to the
20 // Free Software Foundation, Inc.,
21 // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
24 \brief STLSupport unit tests */
26 //#include "STLSupport.test.hh"
27 //#include "STLSupport.test.ih"
30 #include <boost/assign/list_of.hpp>
31 #include "STLSupport.hh"
32 #include "ParsedCommand.hh"
33 #include "Executor.hh"
35 #include "ScopedDirectory.hh"
37 #include <senf/Utils/auto_unit_test.hh>
38 #include <boost/test/test_tools.hpp>
41 ///////////////////////////////cc.p////////////////////////////////////////
45 template <class Container>
48 static int test(Container const & data)
51 for (typename Container::const_iterator i (data.begin()), i_end (data.end());
58 std::pair<std::string, int> mapTest(std::map<std::string,int> const & data)
62 for (std::map<std::string,int>::const_iterator i (data.begin()), i_end (data.end());
67 return std::make_pair(keys,sum);
72 BOOST_AUTO_UNIT_TEST(vectorSupport)
74 senf::console::Executor executor;
75 senf::console::CommandParser parser;
76 senf::console::ScopedDirectory<> dir;
77 senf::console::root().add("test", dir);
79 std::vector<int> defv (boost::assign::list_of(7)(2).to_container(defv));
80 dir.add("test", &Summer<std::vector<int> >::test)
81 .arg("data", "test data", senf::console::kw::default_value = defv);
85 parser.parse("test/test; test/test (); test/test 5; test/test (13); test/test (4 5 8)",
86 boost::bind<void>( boost::ref(executor), boost::ref(ss), _1 )) );
87 BOOST_CHECK_EQUAL( ss.str(), "9\n" "0\n" "5\n" "13\n" "17\n" );
91 parser.parse("help test/test",
92 boost::bind<void>( boost::ref(executor), boost::ref(ss), _1 )) );
96 " test [data:vector<int>]\n"
100 " default: (7 2)\n" );
103 BOOST_AUTO_UNIT_TEST(listSupport)
105 senf::console::Executor executor;
106 senf::console::CommandParser parser;
107 senf::console::ScopedDirectory<> dir;
108 senf::console::root().add("test", dir);
110 std::list<int> defv (boost::assign::list_of(7)(2).to_container(defv));
111 dir.add("test", &Summer<std::list<int> >::test)
112 .arg("data", "test data", senf::console::kw::default_value = defv);
113 std::stringstream ss;
116 parser.parse("test/test; test/test (); test/test 5; test/test (13); test/test (4 5 8)",
117 boost::bind<void>( boost::ref(executor), boost::ref(ss), _1 )) );
118 BOOST_CHECK_EQUAL( ss.str(), "9\n" "0\n" "5\n" "13\n" "17\n" );
122 parser.parse("help test/test",
123 boost::bind<void>( boost::ref(executor), boost::ref(ss), _1 )) );
127 " test [data:list<int>]\n"
131 " default: (7 2)\n" );
134 BOOST_AUTO_UNIT_TEST(setSupport)
136 senf::console::Executor executor;
137 senf::console::CommandParser parser;
138 senf::console::ScopedDirectory<> dir;
139 senf::console::root().add("test", dir);
141 std::set<int> defv (boost::assign::list_of(7)(2).to_container(defv));
142 dir.add("test", &Summer<std::set<int> >::test)
143 .arg("data", "test data", senf::console::kw::default_value = defv);
144 std::stringstream ss;
147 parser.parse("test/test; test/test (); test/test 5; test/test (13); test/test (4 5 8)",
148 boost::bind<void>( boost::ref(executor), boost::ref(ss), _1 )) );
149 BOOST_CHECK_EQUAL( ss.str(), "9\n" "0\n" "5\n" "13\n" "17\n" );
153 parser.parse("help test/test",
154 boost::bind<void>( boost::ref(executor), boost::ref(ss), _1 )) );
158 " test [data:set<int>]\n"
162 " default: (2 7)\n" );
165 BOOST_AUTO_UNIT_TEST(mapSupport)
167 senf::console::Executor executor;
168 senf::console::CommandParser parser;
169 senf::console::ScopedDirectory<> dir;
170 senf::console::root().add("test", dir);
172 std::map<std::string, int> defv (
173 boost::assign::map_list_of("foo bar",7)("bar",2).to_container(defv));
174 dir.add("test", &mapTest)
175 .arg("data", "test data", senf::console::kw::default_value = defv);
176 std::stringstream ss;
179 parser.parse("test/test; test/test (); "
180 "test/test (vier=4 fuenf = 5 acht=8 )",
181 boost::bind<void>( boost::ref(executor), boost::ref(ss), _1 )) );
182 BOOST_CHECK_EQUAL( ss.str(), "(\"barfoo bar\" 9)\n" "(\"\" 0)\n" "(achtfuenfvier 17)\n" ); //
186 parser.parse("help test/test",
187 boost::bind<void>( boost::ref(executor), boost::ref(ss), _1 )) );
191 " test [data:map<string,int>]\n"
195 " default: (bar=2 \"foo bar\"=7)\n" );
198 ///////////////////////////////cc.e////////////////////////////////////////
205 // comment-column: 40
206 // c-file-style: "senf"
207 // indent-tabs-mode: nil
208 // ispell-local-dictionary: "american"
209 // compile-command: "scons -u test"