1 // This file is part of CAF, the C++ Actor Framework. See the file LICENSE in
2 // the main distribution directory for license terms and copyright or visit
3 // https://github.com/actor-framework/actor-framework/blob/master/LICENSE.
4 
5 #define CAF_SUITE detail.bounds_checker
6 
7 #include "caf/detail/bounds_checker.hpp"
8 
9 #include "caf/test/dsl.hpp"
10 
11 namespace {
12 
13 template <class T>
check(int64_t x)14 bool check(int64_t x) {
15   return caf::detail::bounds_checker<T>::check(x);
16 }
17 
18 } // namespace
19 
CAF_TEST(small integers)20 CAF_TEST(small integers) {
21   CAF_CHECK_EQUAL(check<int8_t>(128), false);
22   CAF_CHECK_EQUAL(check<int8_t>(127), true);
23   CAF_CHECK_EQUAL(check<int8_t>(-128), true);
24   CAF_CHECK_EQUAL(check<int8_t>(-129), false);
25   CAF_CHECK_EQUAL(check<uint8_t>(-1), false);
26   CAF_CHECK_EQUAL(check<uint8_t>(0), true);
27   CAF_CHECK_EQUAL(check<uint8_t>(255), true);
28   CAF_CHECK_EQUAL(check<uint8_t>(256), false);
29   CAF_CHECK_EQUAL(check<int16_t>(-32769), false);
30   CAF_CHECK_EQUAL(check<int16_t>(-32768), true);
31   CAF_CHECK_EQUAL(check<int16_t>(32767), true);
32   CAF_CHECK_EQUAL(check<int16_t>(32768), false);
33   CAF_CHECK_EQUAL(check<uint16_t>(-1), false);
34   CAF_CHECK_EQUAL(check<uint16_t>(0), true);
35   CAF_CHECK_EQUAL(check<uint16_t>(65535), true);
36   CAF_CHECK_EQUAL(check<uint16_t>(65536), false);
37 }
38 
CAF_TEST(large unsigned integers)39 CAF_TEST(large unsigned integers) {
40   CAF_CHECK_EQUAL(check<uint64_t>(-1), false);
41   CAF_CHECK_EQUAL(check<uint64_t>(0), true);
42   CAF_CHECK_EQUAL(check<uint64_t>(std::numeric_limits<int64_t>::max()), true);
43 }
44