| 1 | // (C) Copyright Jesse Williamson 2009 |
| 2 | // Use, modification and distribution are subject to the |
| 3 | // Boost Software License, Version 1.0. (See accompanying file |
| 4 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
| 5 | |
| 6 | #include <iostream> |
| 7 | #include <vector> |
| 8 | |
| 9 | #include <boost/config.hpp> |
| 10 | #include <boost/algorithm/clamp.hpp> |
| 11 | |
| 12 | #define BOOST_TEST_MAIN |
| 13 | #include <boost/test/unit_test.hpp> |
| 14 | |
| 15 | namespace ba = boost::algorithm; |
| 16 | |
| 17 | BOOST_CONSTEXPR bool intGreater ( int lhs, int rhs ) { return lhs > rhs; } |
| 18 | BOOST_CONSTEXPR bool doubleGreater ( double lhs, double rhs ) { return lhs > rhs; } |
| 19 | |
| 20 | class custom { |
| 21 | public: |
| 22 | custom ( int x ) : v(x) {} |
| 23 | custom ( const custom &rhs ) : v(rhs.v) {} |
| 24 | ~custom () {} |
| 25 | custom & operator = ( const custom &rhs ) { v = rhs.v; return *this; } |
| 26 | |
| 27 | bool operator < ( const custom &rhs ) const { return v < rhs.v; } |
| 28 | bool operator == ( const custom &rhs ) const { return v == rhs.v; } // need this for the test |
| 29 | |
| 30 | std::ostream & print ( std::ostream &os ) const { return os << v; } |
| 31 | |
| 32 | int v; |
| 33 | }; |
| 34 | |
| 35 | std::ostream & operator << ( std::ostream & os, const custom &x ) { return x.print ( os ); } |
| 36 | |
| 37 | bool customLess ( const custom &lhs, const custom &rhs ) { return lhs.v < rhs.v; } |
| 38 | |
| 39 | void test_ints() |
| 40 | { |
| 41 | |
| 42 | // Inside the range, equal to the endpoints, and outside the endpoints. |
| 43 | BOOST_CHECK_EQUAL ( 3, ba::clamp ( 3, 1, 10 )); |
| 44 | BOOST_CHECK_EQUAL ( 1, ba::clamp ( 1, 1, 10 )); |
| 45 | BOOST_CHECK_EQUAL ( 1, ba::clamp ( 0, 1, 10 )); |
| 46 | BOOST_CHECK_EQUAL ( 10, ba::clamp ( 10, 1, 10 )); |
| 47 | BOOST_CHECK_EQUAL ( 10, ba::clamp ( 11, 1, 10 )); |
| 48 | BOOST_CXX14_CONSTEXPR bool constexpr_res = ( |
| 49 | ba::clamp ( val: 3, lo: 1, hi: 10 ) == 3 |
| 50 | ); |
| 51 | BOOST_CHECK( constexpr_res ); |
| 52 | |
| 53 | BOOST_CHECK_EQUAL ( 3, ba::clamp ( 3, 10, 1, intGreater )); |
| 54 | BOOST_CHECK_EQUAL ( 1, ba::clamp ( 1, 10, 1, intGreater )); |
| 55 | BOOST_CHECK_EQUAL ( 1, ba::clamp ( 0, 10, 1, intGreater )); |
| 56 | BOOST_CHECK_EQUAL ( 10, ba::clamp ( 10, 10, 1, intGreater )); |
| 57 | BOOST_CHECK_EQUAL ( 10, ba::clamp ( 11, 10, 1, intGreater )); |
| 58 | |
| 59 | // Negative numbers |
| 60 | BOOST_CHECK_EQUAL ( -3, ba::clamp ( -3, -10, -1 )); |
| 61 | BOOST_CHECK_EQUAL ( -1, ba::clamp ( -1, -10, -1 )); |
| 62 | BOOST_CHECK_EQUAL ( -1, ba::clamp ( 0, -10, -1 )); |
| 63 | BOOST_CHECK_EQUAL ( -10, ba::clamp ( -10, -10, -1 )); |
| 64 | BOOST_CHECK_EQUAL ( -10, ba::clamp ( -11, -10, -1 )); |
| 65 | |
| 66 | // Mixed positive and negative numbers |
| 67 | BOOST_CHECK_EQUAL ( 5, ba::clamp ( 5, -10, 10 )); |
| 68 | BOOST_CHECK_EQUAL ( -10, ba::clamp ( -10, -10, 10 )); |
| 69 | BOOST_CHECK_EQUAL ( -10, ba::clamp ( -15, -10, 10 )); |
| 70 | BOOST_CHECK_EQUAL ( 10, ba::clamp ( 10, -10, 10 )); |
| 71 | BOOST_CHECK_EQUAL ( 10, ba::clamp ( 15, -10, 10 )); |
| 72 | |
| 73 | // Unsigned |
| 74 | BOOST_CHECK_EQUAL ( 5U, ba::clamp ( 5U, 1U, 10U )); |
| 75 | BOOST_CHECK_EQUAL ( 1U, ba::clamp ( 1U, 1U, 10U )); |
| 76 | BOOST_CHECK_EQUAL ( 1U, ba::clamp ( 0U, 1U, 10U )); |
| 77 | BOOST_CHECK_EQUAL ( 10U, ba::clamp ( 10U, 1U, 10U )); |
| 78 | BOOST_CHECK_EQUAL ( 10U, ba::clamp ( 15U, 1U, 10U )); |
| 79 | |
| 80 | // Mixed (1) |
| 81 | BOOST_CHECK_EQUAL ( 5U, ba::clamp ( 5U, 1, 10 )); |
| 82 | BOOST_CHECK_EQUAL ( 1U, ba::clamp ( 1U, 1, 10 )); |
| 83 | BOOST_CHECK_EQUAL ( 1U, ba::clamp ( 0U, 1, 10 )); |
| 84 | BOOST_CHECK_EQUAL ( 10U, ba::clamp ( 10U, 1, 10 )); |
| 85 | BOOST_CHECK_EQUAL ( 10U, ba::clamp ( 15U, 1, 10 )); |
| 86 | |
| 87 | // Mixed (3) |
| 88 | BOOST_CHECK_EQUAL ( 5U, ba::clamp ( 5U, 1, 10. )); |
| 89 | BOOST_CHECK_EQUAL ( 1U, ba::clamp ( 1U, 1, 10. )); |
| 90 | BOOST_CHECK_EQUAL ( 1U, ba::clamp ( 0U, 1, 10. )); |
| 91 | BOOST_CHECK_EQUAL ( 10U, ba::clamp ( 10U, 1, 10. )); |
| 92 | BOOST_CHECK_EQUAL ( 10U, ba::clamp ( 15U, 1, 10. )); |
| 93 | |
| 94 | short foo = 50; |
| 95 | BOOST_CHECK_EQUAL ( 56, ba::clamp ( foo, 56.9, 129 )); |
| 96 | BOOST_CHECK_EQUAL ( 24910, ba::clamp ( foo, 12345678, 123456999 )); |
| 97 | } |
| 98 | |
| 99 | |
| 100 | void test_floats() |
| 101 | { |
| 102 | |
| 103 | // Inside the range, equal to the endpoints, and outside the endpoints. |
| 104 | BOOST_CHECK_EQUAL ( 3.0, ba::clamp ( 3.0, 1.0, 10.0 )); |
| 105 | BOOST_CHECK_EQUAL ( 1.0, ba::clamp ( 1.0, 1.0, 10.0 )); |
| 106 | BOOST_CHECK_EQUAL ( 1.0, ba::clamp ( 0.0, 1.0, 10.0 )); |
| 107 | BOOST_CHECK_EQUAL ( 10.0, ba::clamp ( 10.0, 1.0, 10.0 )); |
| 108 | BOOST_CHECK_EQUAL ( 10.0, ba::clamp ( 11.0, 1.0, 10.0 )); |
| 109 | |
| 110 | BOOST_CHECK_EQUAL ( 3.0, ba::clamp ( 3.0, 10.0, 1.0, doubleGreater )); |
| 111 | BOOST_CHECK_EQUAL ( 1.0, ba::clamp ( 1.0, 10.0, 1.0, doubleGreater )); |
| 112 | BOOST_CHECK_EQUAL ( 1.0, ba::clamp ( 0.0, 10.0, 1.0, doubleGreater )); |
| 113 | BOOST_CHECK_EQUAL ( 10.0, ba::clamp ( 10.0, 10.0, 1.0, doubleGreater )); |
| 114 | BOOST_CHECK_EQUAL ( 10.0, ba::clamp ( 11.0, 10.0, 1.0, doubleGreater )); |
| 115 | |
| 116 | // Negative numbers |
| 117 | BOOST_CHECK_EQUAL ( -3.f, ba::clamp ( -3.f, -10.f, -1.f )); |
| 118 | BOOST_CHECK_EQUAL ( -1.f, ba::clamp ( -1.f, -10.f, -1.f )); |
| 119 | BOOST_CHECK_EQUAL ( -1.f, ba::clamp ( 0.f, -10.f, -1.f )); |
| 120 | BOOST_CHECK_EQUAL ( -10.f, ba::clamp ( -10.f, -10.f, -1.f )); |
| 121 | BOOST_CHECK_EQUAL ( -10.f, ba::clamp ( -11.f, -10.f, -1.f )); |
| 122 | |
| 123 | // Mixed positive and negative numbers |
| 124 | BOOST_CHECK_EQUAL ( 5.f, ba::clamp ( 5.f, -10.f, 10.f )); |
| 125 | BOOST_CHECK_EQUAL ( -10.f, ba::clamp ( -10.f, -10.f, 10.f )); |
| 126 | BOOST_CHECK_EQUAL ( -10.f, ba::clamp ( -15.f, -10.f, 10.f )); |
| 127 | BOOST_CHECK_EQUAL ( 10.f, ba::clamp ( 10.f, -10.f, 10.f )); |
| 128 | BOOST_CHECK_EQUAL ( 10.f, ba::clamp ( 15.f, -10.f, 10.f )); |
| 129 | |
| 130 | // Mixed (1) |
| 131 | BOOST_CHECK_EQUAL ( 5.f, ba::clamp ( 5.f, -10., 10. )); |
| 132 | BOOST_CHECK_EQUAL ( -10.f, ba::clamp ( -10.f, -10., 10. )); |
| 133 | BOOST_CHECK_EQUAL ( -10.f, ba::clamp ( -15.f, -10., 10. )); |
| 134 | BOOST_CHECK_EQUAL ( 10.f, ba::clamp ( 10.f, -10., 10. )); |
| 135 | BOOST_CHECK_EQUAL ( 10.f, ba::clamp ( 15.f, -10., 10. )); |
| 136 | |
| 137 | // Mixed (2) |
| 138 | BOOST_CHECK_EQUAL ( 5.f, ba::clamp ( 5.f, -10, 10 )); |
| 139 | BOOST_CHECK_EQUAL ( -10.f, ba::clamp ( -10.f, -10, 10 )); |
| 140 | BOOST_CHECK_EQUAL ( -10.f, ba::clamp ( -15.f, -10, 10 )); |
| 141 | BOOST_CHECK_EQUAL ( 10.f, ba::clamp ( 10.f, -10, 10 )); |
| 142 | BOOST_CHECK_EQUAL ( 10.f, ba::clamp ( 15.f, -10, 10 )); |
| 143 | } |
| 144 | |
| 145 | void test_custom() |
| 146 | { |
| 147 | |
| 148 | // Inside the range, equal to the endpoints, and outside the endpoints. |
| 149 | BOOST_CHECK_EQUAL ( custom( 3), ba::clamp ( custom( 3), custom(1), custom(10))); |
| 150 | BOOST_CHECK_EQUAL ( custom( 1), ba::clamp ( custom( 1), custom(1), custom(10))); |
| 151 | BOOST_CHECK_EQUAL ( custom( 1), ba::clamp ( custom( 0), custom(1), custom(10))); |
| 152 | BOOST_CHECK_EQUAL ( custom(10), ba::clamp ( custom(10), custom(1), custom(10))); |
| 153 | BOOST_CHECK_EQUAL ( custom(10), ba::clamp ( custom(11), custom(1), custom(10))); |
| 154 | |
| 155 | BOOST_CHECK_EQUAL ( custom( 3), ba::clamp ( custom( 3), custom(1), custom(10), customLess )); |
| 156 | BOOST_CHECK_EQUAL ( custom( 1), ba::clamp ( custom( 1), custom(1), custom(10), customLess )); |
| 157 | BOOST_CHECK_EQUAL ( custom( 1), ba::clamp ( custom( 0), custom(1), custom(10), customLess )); |
| 158 | BOOST_CHECK_EQUAL ( custom(10), ba::clamp ( custom(10), custom(1), custom(10), customLess )); |
| 159 | BOOST_CHECK_EQUAL ( custom(10), ba::clamp ( custom(11), custom(1), custom(10), customLess )); |
| 160 | |
| 161 | // Fail!! |
| 162 | // BOOST_CHECK_EQUAL ( custom(1), ba::clamp ( custom(11), custom(1), custom(10))); |
| 163 | } |
| 164 | |
| 165 | #define elementsof(v) (sizeof (v) / sizeof (v[0])) |
| 166 | #define a_begin(v) (&v[0]) |
| 167 | #define a_end(v) (v + elementsof (v)) |
| 168 | #define a_range(v) v |
| 169 | #define b_e(v) a_begin(v),a_end(v) |
| 170 | |
| 171 | void test_int_range () |
| 172 | { |
| 173 | int inputs [] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 19, 99, 999, -1, -3, -99, 234234 }; |
| 174 | int outputs [] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, -1, -1, -1, 10 }; |
| 175 | std::vector<int> results; |
| 176 | std::vector<int> in_v; |
| 177 | |
| 178 | std::copy ( a_begin(inputs), a_end(inputs), result: std::back_inserter ( x&: in_v )); |
| 179 | |
| 180 | ba::clamp_range ( a_begin(inputs), a_end(inputs), out: std::back_inserter ( x&: results ), lo: -1, hi: 10 ); |
| 181 | BOOST_CHECK ( std::equal ( results.begin(), results.end (), outputs )); |
| 182 | results.clear (); |
| 183 | ba::clamp_range ( first: in_v.begin (), last: in_v.end (), out: std::back_inserter ( x&: results ), lo: -1, hi: 10 ); |
| 184 | BOOST_CHECK ( std::equal ( results.begin(), results.end (), outputs )); |
| 185 | results.clear (); |
| 186 | |
| 187 | ba::clamp_range ( a_begin(inputs), a_end(inputs), out: std::back_inserter ( x&: results ), lo: 10, hi: -1, p: intGreater ); |
| 188 | BOOST_CHECK ( std::equal ( results.begin(), results.end (), outputs )); |
| 189 | results.clear (); |
| 190 | ba::clamp_range ( first: in_v.begin (), last: in_v.end (), out: std::back_inserter ( x&: results ), lo: 10, hi: -1, p: intGreater ); |
| 191 | BOOST_CHECK ( std::equal ( results.begin(), results.end (), outputs )); |
| 192 | results.clear (); |
| 193 | |
| 194 | ba::clamp_range ( a_range(inputs), out: std::back_inserter ( x&: results ), lo: -1, hi: 10 ); |
| 195 | BOOST_CHECK ( std::equal ( results.begin(), results.end (), outputs )); |
| 196 | results.clear (); |
| 197 | ba::clamp_range ( r: in_v, out: std::back_inserter ( x&: results ), lo: -1, hi: 10 ); |
| 198 | BOOST_CHECK ( std::equal ( results.begin(), results.end (), outputs )); |
| 199 | results.clear (); |
| 200 | |
| 201 | ba::clamp_range ( a_range(inputs), out: std::back_inserter ( x&: results ), lo: 10, hi: -1, p: intGreater ); |
| 202 | BOOST_CHECK ( std::equal ( results.begin(), results.end (), outputs )); |
| 203 | results.clear (); |
| 204 | ba::clamp_range ( r: in_v, out: std::back_inserter ( x&: results ), lo: 10, hi: -1, p: intGreater ); |
| 205 | BOOST_CHECK ( std::equal ( results.begin(), results.end (), outputs )); |
| 206 | results.clear (); |
| 207 | |
| 208 | int junk[elementsof(inputs)]; |
| 209 | ba::clamp_range ( r: inputs, out: junk, lo: 10, hi: -1, p: intGreater ); |
| 210 | BOOST_CHECK ( std::equal ( b_e(junk), outputs )); |
| 211 | } |
| 212 | |
| 213 | void test_constexpr() |
| 214 | { |
| 215 | |
| 216 | // Inside the range, equal to the endpoints, and outside the endpoints. |
| 217 | { |
| 218 | BOOST_CXX14_CONSTEXPR bool check_inside = (3 == ba::clamp ( val: 3, lo: 1, hi: 10 )); |
| 219 | BOOST_CHECK(check_inside); |
| 220 | BOOST_CXX14_CONSTEXPR bool check_min = (1 == ba::clamp ( val: 1, lo: 1, hi: 10 )); |
| 221 | BOOST_CHECK(check_min); |
| 222 | BOOST_CXX14_CONSTEXPR bool check_min_out = (1 == ba::clamp ( val: 0, lo: 1, hi: 10 )); |
| 223 | BOOST_CHECK(check_min_out); |
| 224 | BOOST_CXX14_CONSTEXPR bool check_max = (10 == ba::clamp ( val: 10, lo: 1, hi: 10 )); |
| 225 | BOOST_CHECK(check_max); |
| 226 | BOOST_CXX14_CONSTEXPR bool check_max_out = (10 == ba::clamp ( val: 11, lo: 1, hi: 10 )); |
| 227 | BOOST_CHECK(check_max_out); |
| 228 | } |
| 229 | { |
| 230 | BOOST_CXX14_CONSTEXPR bool check_inside = (3 == ba::clamp ( val: 3, lo: 10, hi: 1, p: intGreater )); |
| 231 | BOOST_CHECK(check_inside); |
| 232 | BOOST_CXX14_CONSTEXPR bool check_min = (1 == ba::clamp ( val: 1, lo: 10, hi: 1, p: intGreater )); |
| 233 | BOOST_CHECK(check_min); |
| 234 | BOOST_CXX14_CONSTEXPR bool check_min_out = (1 == ba::clamp ( val: 0, lo: 10, hi: 1, p: intGreater )); |
| 235 | BOOST_CHECK(check_min_out); |
| 236 | BOOST_CXX14_CONSTEXPR bool check_max = (10 == ba::clamp ( val: 10, lo: 10, hi: 1, p: intGreater )); |
| 237 | BOOST_CHECK(check_max); |
| 238 | BOOST_CXX14_CONSTEXPR bool check_max_out = (10 == ba::clamp ( val: 11, lo: 10, hi: 1, p: intGreater )); |
| 239 | BOOST_CHECK(check_max_out); |
| 240 | } |
| 241 | |
| 242 | // Negative numbers |
| 243 | { |
| 244 | BOOST_CXX14_CONSTEXPR bool check_inside = (-3 == ba::clamp ( val: -3, lo: -10, hi: -1 )); |
| 245 | BOOST_CHECK(check_inside); |
| 246 | BOOST_CXX14_CONSTEXPR bool check_max = (-1 == ba::clamp ( val: -1, lo: -10, hi: -1 )); |
| 247 | BOOST_CHECK(check_max); |
| 248 | BOOST_CXX14_CONSTEXPR bool check_max_out = (-1 == ba::clamp ( val: 0, lo: -10, hi: -1 )); |
| 249 | BOOST_CHECK(check_max_out); |
| 250 | BOOST_CXX14_CONSTEXPR bool check_min = (-10 == ba::clamp ( val: -10, lo: -10, hi: -1 )); |
| 251 | BOOST_CHECK(check_min); |
| 252 | BOOST_CXX14_CONSTEXPR bool check_min_out = (-10 == ba::clamp ( val: -11, lo: -10, hi: -1 )); |
| 253 | BOOST_CHECK(check_min_out); |
| 254 | } |
| 255 | |
| 256 | // Mixed positive and negative numbers |
| 257 | { |
| 258 | BOOST_CXX14_CONSTEXPR bool check_inside = (5 == ba::clamp ( val: 5, lo: -10, hi: 10 )); |
| 259 | BOOST_CHECK(check_inside); |
| 260 | BOOST_CXX14_CONSTEXPR bool check_min = (-10 == ba::clamp ( val: -10, lo: -10, hi: 10 )); |
| 261 | BOOST_CHECK(check_min); |
| 262 | BOOST_CXX14_CONSTEXPR bool check_min_out = (-10 == ba::clamp ( val: -15, lo: -10, hi: 10 )); |
| 263 | BOOST_CHECK(check_min_out); |
| 264 | BOOST_CXX14_CONSTEXPR bool check_max = (10 == ba::clamp ( val: 10, lo: -10, hi: 10 )); |
| 265 | BOOST_CHECK(check_max); |
| 266 | BOOST_CXX14_CONSTEXPR bool check_max_out = (10 == ba::clamp ( val: 15, lo: -10, hi: 10 )); |
| 267 | BOOST_CHECK(check_max_out); |
| 268 | } |
| 269 | // Unsigned |
| 270 | { |
| 271 | BOOST_CXX14_CONSTEXPR bool check_inside = (5U == ba::clamp ( val: 5U, lo: 1U, hi: 10U )); |
| 272 | BOOST_CHECK(check_inside); |
| 273 | BOOST_CXX14_CONSTEXPR bool check_min = (1U == ba::clamp ( val: 1U, lo: 1U, hi: 10U )); |
| 274 | BOOST_CHECK(check_min); |
| 275 | BOOST_CXX14_CONSTEXPR bool check_min_out = (1U == ba::clamp ( val: 0U, lo: 1U, hi: 10U )); |
| 276 | BOOST_CHECK(check_min_out); |
| 277 | BOOST_CXX14_CONSTEXPR bool check_max = (10U == ba::clamp ( val: 10U, lo: 1U, hi: 10U )); |
| 278 | BOOST_CHECK(check_max); |
| 279 | BOOST_CXX14_CONSTEXPR bool check_max_out = (10U == ba::clamp ( val: 15U, lo: 1U, hi: 10U )); |
| 280 | BOOST_CHECK(check_max_out); |
| 281 | } |
| 282 | // Mixed (1) |
| 283 | { |
| 284 | BOOST_CXX14_CONSTEXPR bool check_inside = (5U == ba::clamp ( val: 5U, lo: 1, hi: 10 )); |
| 285 | BOOST_CHECK(check_inside); |
| 286 | BOOST_CXX14_CONSTEXPR bool check_min = (1U == ba::clamp ( val: 1U, lo: 1, hi: 10 )); |
| 287 | BOOST_CHECK(check_min); |
| 288 | BOOST_CXX14_CONSTEXPR bool check_min_out = (1U == ba::clamp ( val: 0U, lo: 1, hi: 10 )); |
| 289 | BOOST_CHECK(check_min_out); |
| 290 | BOOST_CXX14_CONSTEXPR bool check_max = (10U == ba::clamp ( val: 10U, lo: 1, hi: 10 )); |
| 291 | BOOST_CHECK(check_max); |
| 292 | BOOST_CXX14_CONSTEXPR bool check_max_out = (10U == ba::clamp ( val: 15U, lo: 1, hi: 10 )); |
| 293 | BOOST_CHECK(check_max_out); |
| 294 | } |
| 295 | // Mixed (3) |
| 296 | { |
| 297 | BOOST_CXX14_CONSTEXPR bool check_inside = (5U == ba::clamp ( val: 5U, lo: 1, hi: 10. )); |
| 298 | BOOST_CHECK(check_inside); |
| 299 | BOOST_CXX14_CONSTEXPR bool check_min = (1U == ba::clamp ( val: 1U, lo: 1, hi: 10. )); |
| 300 | BOOST_CHECK(check_min); |
| 301 | BOOST_CXX14_CONSTEXPR bool check_min_out = (1U == ba::clamp ( val: 0U, lo: 1, hi: 10. )); |
| 302 | BOOST_CHECK(check_min_out); |
| 303 | BOOST_CXX14_CONSTEXPR bool check_max = (10U == ba::clamp ( val: 10U, lo: 1, hi: 10. )); |
| 304 | BOOST_CHECK(check_max); |
| 305 | BOOST_CXX14_CONSTEXPR bool check_max_out = (10U == ba::clamp ( val: 15U, lo: 1, hi: 10. )); |
| 306 | BOOST_CHECK(check_max_out); |
| 307 | } |
| 308 | { |
| 309 | BOOST_CXX14_CONSTEXPR short foo = 50; |
| 310 | BOOST_CXX14_CONSTEXPR bool check_float = ( 56 == ba::clamp ( val: foo, lo: 56.9, hi: 129 )); |
| 311 | BOOST_CHECK(check_float); |
| 312 | BOOST_CXX14_CONSTEXPR bool check_over = ( 24910 == ba::clamp ( val: foo, lo: 12345678, hi: 123456999 )); |
| 313 | BOOST_CHECK(check_over); |
| 314 | } |
| 315 | } |
| 316 | |
| 317 | BOOST_AUTO_TEST_CASE( test_main ) |
| 318 | { |
| 319 | test_ints (); |
| 320 | test_floats (); |
| 321 | test_custom (); |
| 322 | |
| 323 | test_int_range (); |
| 324 | |
| 325 | test_constexpr (); |
| 326 | // test_float_range (); |
| 327 | // test_custom_range (); |
| 328 | } |
| 329 | |