]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/signals/test/ordering_test.cpp
1 // Boost.Signals library
3 // Copyright Douglas Gregor 2002-2004. Use, modification and
4 // distribution is subject to the Boost Software License, Version
5 // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt)
8 // For more information, see http://www.boost.org
10 #include <boost/test/minimal.hpp>
11 #include <boost/signal.hpp>
18 std::vector
<int> valuesOutput
;
19 bool ungrouped1
= false;
20 bool ungrouped2
= false;
21 bool ungrouped3
= false;
24 emit_int(int v
) : value(v
) {}
26 void operator()() const
28 BOOST_CHECK(value
== 42 || (!ungrouped1
&& !ungrouped2
&& !ungrouped3
));
29 valuesOutput
.push_back(value
);
30 std::cout
<< value
<< ' ';
37 struct write_ungrouped1
{
38 void operator()() const
40 BOOST_CHECK(!ungrouped1
);
42 std::cout
<< "(Ungrouped #1)" << ' ';
46 struct write_ungrouped2
{
47 void operator()() const
49 BOOST_CHECK(!ungrouped2
);
51 std::cout
<< "(Ungrouped #2)" << ' ';
55 struct write_ungrouped3
{
56 void operator()() const
58 BOOST_CHECK(!ungrouped3
);
60 std::cout
<< "(Ungrouped #3)" << ' ';
64 int test_main(int, char* [])
69 std::vector
<int> sortedValues
;
71 boost::signal0
<void> sig
;
72 sig
.connect(write_ungrouped1());
73 for (int i
= 0; i
< 100; ++i
) {
74 #ifdef BOOST_NO_STDC_NAMESPACE
77 int v
= std::rand() % 100;
79 sortedValues
.push_back(v
);
80 sig
.connect(v
, emit_int(v
));
83 sig
.connect(write_ungrouped2());
86 sig
.connect(write_ungrouped3());
88 std::sort(sortedValues
.begin(), sortedValues
.end());
90 // 17 at beginning, 42 at end
91 sortedValues
.insert(sortedValues
.begin(), 17);
92 sig
.connect(emit_int(17), boost::BOOST_SIGNALS_NAMESPACE::at_front
);
93 sortedValues
.push_back(42);
94 sig
.connect(emit_int(42));
97 std::cout
<< std::endl
;
99 BOOST_CHECK(valuesOutput
== sortedValues
);
100 BOOST_CHECK(ungrouped1
);
101 BOOST_CHECK(ungrouped2
);
102 BOOST_CHECK(ungrouped3
);