]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /*-----------------------------------------------------------------------------+ |
2 | Copyright (c) 2011-2011: Joachim Faulhaber | |
3 | +------------------------------------------------------------------------------+ | |
4 | Distributed under the Boost Software License, Version 1.0. | |
5 | (See accompanying file LICENCE.txt or copy at | |
6 | http://www.boost.org/LICENSE_1_0.txt) | |
7 | +-----------------------------------------------------------------------------*/ | |
8 | #define BOOST_TEST_MODULE icl::fix_icl_after_thread unit test | |
9 | #include <libs/icl/test/disable_test_warnings.hpp> | |
10 | #include "../unit_test_unwarned.hpp" | |
11 | ||
12 | //#define BOOST_ICL_USE_STATIC_BOUNDED_INTERVALS | |
13 | #include <boost/icl/interval_map.hpp> | |
14 | #include <boost/icl/split_interval_map.hpp> | |
15 | #include <boost/icl/separate_interval_set.hpp> | |
16 | #include <boost/icl/split_interval_set.hpp> | |
17 | ||
18 | using namespace std; | |
19 | using namespace boost; | |
20 | using namespace unit_test; | |
21 | using namespace boost::icl; | |
22 | ||
23 | ||
24 | BOOST_AUTO_TEST_CASE(ticket_5482) | |
25 | { | |
26 | typedef interval_map<int,int,partial_absorber,std::less> m1_t; | |
27 | typedef interval_map<int,int,partial_absorber,std::greater> m2_t; | |
28 | m1_t m1; | |
29 | m2_t m2; | |
30 | m1.insert(make_pair(m1_t::interval_type(1), 20)); | |
31 | m1.insert(make_pair(m1_t::interval_type(2), 20)); | |
32 | m1.insert(make_pair(m1_t::interval_type(3), 20)); | |
33 | ||
34 | m2.insert(make_pair(m2_t::interval_type(1), 20)); | |
35 | m2.insert(make_pair(m2_t::interval_type(2), 20)); | |
36 | m2.insert(make_pair(m2_t::interval_type(3), 20)); | |
37 | ||
38 | BOOST_CHECK_EQUAL(m1.iterative_size(), m2.iterative_size()); | |
39 | BOOST_CHECK_EQUAL(m1.iterative_size(), 1); | |
40 | BOOST_CHECK_EQUAL(m2.iterative_size(), 1); | |
41 | } | |
42 | ||
43 | ||
44 | #include <boost/cstdint.hpp> | |
45 | BOOST_AUTO_TEST_CASE(ticket_5559_Denis) | |
46 | { | |
47 | //Submitted by Denis | |
48 | typedef boost::icl::interval_set<boost::uint32_t, std::greater> Set; | |
49 | const uint32_t ui32_max = (std::numeric_limits<uint32_t>::max)(); | |
50 | ||
51 | Set q1( Set::interval_type::closed(ui32_max, 0) ); | |
52 | Set q5( Set::interval_type::closed(0, 0) ); | |
53 | ||
54 | BOOST_CHECK_EQUAL(q1, q1+q5); | |
55 | } | |
56 | ||
57 | //------------------------------------------------------------------------------ | |
58 | // Ticket #6095 Marvin Sielenkemper | |
59 | //------------------------------------------------------------------------------ | |
60 | BOOST_AUTO_TEST_CASE(ticket_6095_Marvin_Sielenkemper_isEmptyTest) | |
61 | { | |
62 | typedef int Value; | |
63 | typedef boost::icl::interval<Value> Interval; | |
64 | typedef std::numeric_limits<Value> Limits; | |
65 | ||
66 | Value const max((Limits::max)()); | |
67 | ||
68 | //Interval::interval_type piff = Interval::open(max, max); | |
69 | ||
70 | BOOST_CHECK(!icl::is_empty(Interval::open(max - 2, max))); | |
71 | BOOST_CHECK( icl::is_empty(Interval::open(max - 1, max))); | |
72 | BOOST_CHECK( icl::is_empty(Interval::open(max, max))); | |
73 | } | |
74 | ||
75 | BOOST_AUTO_TEST_CASE(ticket_6095_Marvin_Sielenkemper_totalRangeTest) | |
76 | { | |
77 | typedef int Value; | |
78 | typedef boost::icl::interval<Value> Interval; | |
79 | typedef std::numeric_limits<Value> Limits; | |
80 | typedef boost::icl::interval_map<Value, int, boost::icl::total_enricher> Container; | |
81 | ||
82 | Value const min((Limits::min)()); | |
83 | Value const max((Limits::max)()); | |
84 | ||
85 | boost::icl::interval_map<Value, int, boost::icl::total_enricher> intervals; | |
86 | ||
87 | intervals += std::make_pair(Interval::closed(min, max), 0); | |
88 | intervals += std::make_pair(Interval::right_open(0, 10), 3); | |
89 | ||
90 | BOOST_CHECK_EQUAL(intervals.iterative_size(), 3); | |
91 | } | |
92 | ||
93 | //------------------------------------------------------------------------------ | |
94 | // Ticket #11308 Stephen Hewitt | |
95 | //------------------------------------------------------------------------------ | |
96 | BOOST_AUTO_TEST_CASE(ticket_11308_Stephen_Hewitt_extreme_valued_closed_intervals) | |
97 | { | |
98 | typedef boost::icl::closed_interval<boost::uint16_t, std::less> interval_t; | |
99 | typedef boost::icl::split_interval_set<boost::uint16_t, std::less, interval_t> set_t; | |
100 | ||
101 | set_t s1, s2; | |
102 | ||
103 | s1 += interval_t(0x0000, 0x9fff); | |
104 | s1 += interval_t(0xa000, 0xbfff); | |
105 | s1 += interval_t(0xc000, 0xffff); | |
106 | ||
107 | s2 += interval_t(0x0000, 0xffff); | |
108 | s2 += interval_t(0xa000, 0xbfff); | |
109 | ||
110 | BOOST_CHECK_EQUAL(s1, s2); | |
111 | } | |
112 | ||
113 | BOOST_AUTO_TEST_CASE(extreme_valued_right_open_intervals) | |
114 | { | |
115 | typedef boost::icl::right_open_interval<boost::uint16_t, std::less> interval_t; | |
116 | typedef boost::icl::split_interval_set<boost::uint16_t, std::less, interval_t> set_t; | |
117 | ||
118 | set_t s1, s2; | |
119 | ||
120 | s1 += interval_t(0x0000, 0xa000); | |
121 | s1 += interval_t(0xa000, 0xc000); | |
122 | s1 += interval_t(0xc000, 0xffff); //Contains 0xfffe as largest element | |
123 | ||
124 | s2 += interval_t(0x0000, 0xffff); | |
125 | s2 += interval_t(0xa000, 0xc000); | |
126 | ||
127 | BOOST_CHECK_EQUAL(s1, s2); | |
128 | } | |
129 | ||
130 | BOOST_AUTO_TEST_CASE(extreme_valued_left_open_intervals) | |
131 | { | |
132 | typedef boost::icl::left_open_interval<boost::uint16_t, std::less> interval_t; | |
133 | typedef boost::icl::split_interval_set<boost::uint16_t, std::less, interval_t> set_t; | |
134 | ||
135 | set_t s1, s2; | |
136 | ||
137 | s1 += interval_t(0x0000, 0x9fff); //Contains 1 as smallest element | |
138 | s1 += interval_t(0x9fff, 0xbfff); | |
139 | s1 += interval_t(0xbfff, 0xffff); | |
140 | ||
141 | s2 += interval_t(0x0000, 0xffff); | |
142 | s2 += interval_t(0x9fff, 0xbfff); | |
143 | ||
144 | BOOST_CHECK_EQUAL(s1, s2); | |
145 | } | |
146 | ||
147 | BOOST_AUTO_TEST_CASE(extreme_valued_open_intervals) | |
148 | { | |
149 | typedef boost::icl::open_interval<boost::uint16_t, std::less> interval_t; | |
150 | typedef boost::icl::split_interval_set<boost::uint16_t, std::less, interval_t> set_t; | |
151 | ||
152 | set_t s1, s2; | |
153 | ||
154 | s1 += interval_t(0x0000, 0xa000); //Contains 1 as smallest element | |
155 | s1 += interval_t(0x9fff, 0xc000); | |
156 | s1 += interval_t(0xbfff, 0xffff); //Contains 0xfffe as largest element | |
157 | ||
158 | s2 += interval_t(0x0000, 0xffff); | |
159 | s2 += interval_t(0x9fff, 0xc000); | |
160 | ||
161 | BOOST_CHECK_EQUAL(s1, s2); | |
162 | } | |
163 |