1 #define BOOST_TEST_MODULE structurce
2 #include <BoostTestTargetConfig.h>
4 #include "function_list.hxx"
6 static int func_called = 0,
21 int func_add(int x, int y)
26 int func2_add(int x, int y)
31 static int func_void_called = 0;
37 BOOST_AUTO_TEST_CASE( create_and_call )
39 using namespace simgear;
41 function_list<int (int)> func_list;
43 BOOST_REQUIRE(func_list.empty());
45 func_list.push_back(&func);
46 BOOST_REQUIRE_EQUAL(func_list(2), 2);
47 BOOST_REQUIRE_EQUAL(func_called, 1);
49 func_list.push_back(&func2);
50 BOOST_REQUIRE_EQUAL(func_list(2), 4);
51 BOOST_REQUIRE_EQUAL(func_called, 2);
52 BOOST_REQUIRE_EQUAL(func2_called, 1);
54 function_list<boost::function<int (int)> > func_list2;
55 func_list2.push_back(&func);
56 func_list2.push_back(&func2);
57 func_list2.push_back(&func2);
59 BOOST_REQUIRE_EQUAL(func_list2(2), 4);
60 BOOST_REQUIRE_EQUAL(func_called, 3);
61 BOOST_REQUIRE_EQUAL(func2_called, 3);
64 function_list<boost::function<int (int, int)> > func_list3;
65 func_list3.push_back(&func_add);
66 func_list3.push_back(&func2_add);
68 BOOST_REQUIRE_EQUAL(func_list3(2, 3), 7);
69 BOOST_REQUIRE_EQUAL(func_called, 4);
70 BOOST_REQUIRE_EQUAL(func2_called, 4);
72 // returning void/no params
73 function_list<void()> void_func_list;
74 void_func_list.push_back(&func_void);
76 BOOST_REQUIRE_EQUAL(func_void_called, 1);