1#ifndef BOOST_SAFE_NUMERICS_TEST_VALUES_HPP
2#define BOOST_SAFE_NUMERICS_TEST_VALUES_HPP
3
4// test_values.hpp
5//
6// Copyright (c) 2012 Robert Ramey
7//
8// Distributed under the Boost Software License, Version 1.0. (See
9// accompanying file LICENSE_1_0.txt or copy at
10// http://www.boost.org/LICENSE_1_0.txt)
11
12#include <cstdint>
13#include <type_traits> // integral_constant
14#include <boost/mp11/list.hpp>
15#include <boost/mp11/algorithm.hpp>
16
17#define TEST_VALUE(type, value) std::integral_constant<type,(type)value>
18
19using test_values = boost::mp11::mp_list<
20 TEST_VALUE(std::int8_t,0x01),
21 TEST_VALUE(std::int8_t,0x7f),
22 TEST_VALUE(std::int8_t,0x80),
23 TEST_VALUE(std::int8_t,0xff),
24 TEST_VALUE(std::int16_t,0x0001),
25 TEST_VALUE(std::int16_t,0x7fff),
26 TEST_VALUE(std::int16_t,0x8000),
27 TEST_VALUE(std::int16_t,0xffff),
28 TEST_VALUE(std::int32_t,0x00000001),
29 TEST_VALUE(std::int32_t,0x7fffffff),
30 TEST_VALUE(std::int32_t,0x80000000),
31 TEST_VALUE(std::int32_t,0xffffffff),
32 TEST_VALUE(std::int64_t,0x0000000000000001),
33 TEST_VALUE(std::int64_t,0x7fffffffffffffff),
34 TEST_VALUE(std::int64_t,0x8000000000000000),
35 TEST_VALUE(std::int64_t,0xffffffffffffffff),
36 TEST_VALUE(std::uint8_t,0x01),
37 TEST_VALUE(std::uint8_t,0x7f),
38 TEST_VALUE(std::uint8_t,0x80),
39 TEST_VALUE(std::uint8_t,0xff),
40 TEST_VALUE(std::uint16_t,0x0001),
41 TEST_VALUE(std::uint16_t,0x7fff),
42 TEST_VALUE(std::uint16_t,0x8000),
43 TEST_VALUE(std::uint16_t,0xffff),
44 TEST_VALUE(std::uint32_t,0x00000001),
45 TEST_VALUE(std::uint32_t,0x7fffffff),
46 TEST_VALUE(std::uint32_t,0x80000000),
47 TEST_VALUE(std::uint32_t,0xffffffff),
48 TEST_VALUE(std::uint64_t,0x0000000000000001),
49 TEST_VALUE(std::uint64_t,0x7fffffffffffffff),
50 TEST_VALUE(std::uint64_t,0x8000000000000000),
51 TEST_VALUE(std::uint64_t,0xffffffffffffffff),
52 TEST_VALUE(std::int8_t,0x0) // uh oh - breaks test_types
53>;
54
55/*
56template<typename T>
57using extract_value_type = typename T::value_type;
58using test_types = boost::mp11:: mp_unique<
59 boost::mp11::mp_transform<
60 extract_value_type,
61 test_values
62 >
63>;
64*/
65
66using test_types = boost::mp11::mp_list<
67 std::int8_t, std::int16_t, std::int32_t, std::int64_t,
68 std::uint8_t, std::uint16_t, std::uint32_t, std::uint64_t
69>;
70
71#endif
72

source code of boost/libs/safe_numerics/test/test_values.hpp