1 // buffer_test.cpp -------------------------------------------------------------------//
3 // Copyright Beman Dawes 2014
5 // Distributed under the Boost Software License, Version 1.0.
6 // See http://www.boost.org/LICENSE_1_0.txt
8 // See library home page at http://www.boost.org/libs/endian
10 //--------------------------------------------------------------------------------------//
12 #include <boost/endian/detail/disable_warnings.hpp>
14 //#define BOOST_ENDIAN_LOG
15 #include <boost/endian/buffers.hpp>
16 #include <boost/detail/lightweight_main.hpp>
17 #include <boost/core/lightweight_test.hpp>
18 #include <boost/cstdint.hpp>
22 using namespace boost::endian
;
29 // check_size ------------------------------------------------------------//
34 BOOST_TEST_EQ(sizeof(big_int8_buf_t
), 1u);
35 BOOST_TEST_EQ(sizeof(big_int16_buf_t
), 2u);
36 BOOST_TEST_EQ(sizeof(big_int24_buf_t
), 3u);
37 BOOST_TEST_EQ(sizeof(big_int32_buf_t
), 4u);
38 BOOST_TEST_EQ(sizeof(big_int40_buf_t
), 5u);
39 BOOST_TEST_EQ(sizeof(big_int48_buf_t
), 6u);
40 BOOST_TEST_EQ(sizeof(big_int56_buf_t
), 7u);
41 BOOST_TEST_EQ(sizeof(big_int64_buf_t
), 8u);
43 BOOST_TEST_EQ(sizeof(big_uint8_buf_t
), 1u);
44 BOOST_TEST_EQ(sizeof(big_uint16_buf_t
), 2u);
45 BOOST_TEST_EQ(sizeof(big_uint24_buf_t
), 3u);
46 BOOST_TEST_EQ(sizeof(big_uint32_buf_t
), 4u);
47 BOOST_TEST_EQ(sizeof(big_uint40_buf_t
), 5u);
48 BOOST_TEST_EQ(sizeof(big_uint48_buf_t
), 6u);
49 BOOST_TEST_EQ(sizeof(big_uint56_buf_t
), 7u);
50 BOOST_TEST_EQ(sizeof(big_uint64_buf_t
), 8u);
52 BOOST_TEST_EQ(sizeof(little_int8_buf_t
), 1u);
53 BOOST_TEST_EQ(sizeof(little_int16_buf_t
), 2u);
54 BOOST_TEST_EQ(sizeof(little_int24_buf_t
), 3u);
55 BOOST_TEST_EQ(sizeof(little_int32_buf_t
), 4u);
56 BOOST_TEST_EQ(sizeof(little_int40_buf_t
), 5u);
57 BOOST_TEST_EQ(sizeof(little_int48_buf_t
), 6u);
58 BOOST_TEST_EQ(sizeof(little_int56_buf_t
), 7u);
59 BOOST_TEST_EQ(sizeof(little_int64_buf_t
), 8u);
61 BOOST_TEST_EQ(sizeof(little_uint8_buf_t
), 1u);
62 BOOST_TEST_EQ(sizeof(little_uint16_buf_t
), 2u);
63 BOOST_TEST_EQ(sizeof(little_uint24_buf_t
), 3u);
64 BOOST_TEST_EQ(sizeof(little_uint32_buf_t
), 4u);
65 BOOST_TEST_EQ(sizeof(little_uint40_buf_t
), 5u);
66 BOOST_TEST_EQ(sizeof(little_uint48_buf_t
), 6u);
67 BOOST_TEST_EQ(sizeof(little_uint56_buf_t
), 7u);
68 BOOST_TEST_EQ(sizeof(little_uint64_buf_t
), 8u);
70 BOOST_TEST_EQ(sizeof(native_int8_buf_t
), 1u);
71 BOOST_TEST_EQ(sizeof(native_int16_buf_t
), 2u);
72 BOOST_TEST_EQ(sizeof(native_int24_buf_t
), 3u);
73 BOOST_TEST_EQ(sizeof(native_int32_buf_t
), 4u);
74 BOOST_TEST_EQ(sizeof(native_int40_buf_t
), 5u);
75 BOOST_TEST_EQ(sizeof(native_int48_buf_t
), 6u);
76 BOOST_TEST_EQ(sizeof(native_int56_buf_t
), 7u);
77 BOOST_TEST_EQ(sizeof(native_int64_buf_t
), 8u);
79 BOOST_TEST_EQ(sizeof(native_uint8_buf_t
), 1u);
80 BOOST_TEST_EQ(sizeof(native_uint16_buf_t
), 2u);
81 BOOST_TEST_EQ(sizeof(native_uint24_buf_t
), 3u);
82 BOOST_TEST_EQ(sizeof(native_uint32_buf_t
), 4u);
83 BOOST_TEST_EQ(sizeof(native_uint40_buf_t
), 5u);
84 BOOST_TEST_EQ(sizeof(native_uint48_buf_t
), 6u);
85 BOOST_TEST_EQ(sizeof(native_uint56_buf_t
), 7u);
86 BOOST_TEST_EQ(sizeof(native_uint64_buf_t
), 8u);
88 BOOST_TEST_EQ(sizeof(big_int8_buf_at
), 1u);
89 BOOST_TEST_EQ(sizeof(big_int16_buf_at
), 2u);
90 BOOST_TEST_EQ(sizeof(big_int32_buf_at
), 4u);
91 BOOST_TEST_EQ(sizeof(big_int64_buf_at
), 8u);
93 BOOST_TEST_EQ(sizeof(big_uint8_buf_at
), 1u);
94 BOOST_TEST_EQ(sizeof(big_uint16_buf_at
), 2u);
95 BOOST_TEST_EQ(sizeof(big_uint32_buf_at
), 4u);
96 BOOST_TEST_EQ(sizeof(big_uint64_buf_at
), 8u);
98 BOOST_TEST_EQ(sizeof(little_int8_buf_at
), 1u);
99 BOOST_TEST_EQ(sizeof(little_int16_buf_at
), 2u);
100 BOOST_TEST_EQ(sizeof(little_int32_buf_at
), 4u);
101 BOOST_TEST_EQ(sizeof(little_int64_buf_at
), 8u);
103 BOOST_TEST_EQ(sizeof(little_uint8_buf_at
), 1u);
104 BOOST_TEST_EQ(sizeof(little_uint16_buf_at
), 2u);
105 BOOST_TEST_EQ(sizeof(little_uint32_buf_at
), 4u);
106 BOOST_TEST_EQ(sizeof(little_uint64_buf_at
), 8u);
109 // test_inserter_and_extractor -----------------------------------------------------//
111 void test_inserter_and_extractor()
113 std::cout
<< "test inserter and extractor..." << std::endl
;
115 big_uint64_buf_t
bu64(0x010203040506070ULL
);
116 little_uint64_buf_t
lu64(0x010203040506070ULL
);
120 std::stringstream ss
;
124 BOOST_TEST_EQ(x
, 0x010203040506070ULL
);
129 BOOST_TEST_EQ(x
, 0x010203040506070ULL
);
132 ss
<< 0x010203040506070ULL
;
133 big_uint64_buf_t
bu64z(0);
135 BOOST_TEST_EQ(bu64z
.value(), bu64
.value());
138 ss
<< 0x010203040506070ULL
;
139 little_uint64_buf_t
lu64z(0);
141 BOOST_TEST_EQ(lu64z
.value(), lu64
.value());
143 std::cout
<< "test inserter and extractor complete" << std::endl
;
147 } // unnamed namespace
149 //--------------------------------------------------------------------------------------//
151 int cpp_main(int, char *[])
153 cout
<< "byte swap intrinsics: " BOOST_ENDIAN_INTRINSIC_MSG
<< endl
;
155 cout
<< " construct big endian aligned" << endl
;
156 big_int32_buf_at
x(1122334455);
158 cout
<< " assign to buffer from built-in integer" << endl
;
161 cout
<< " operator==(buffer.value(), built-in)" << endl
;
162 bool b1(x
.value() == 1234567890);
165 cout
<< " construct little endian unaligned" << endl
;
166 little_int32_buf_t
x2(1122334455);
168 cout
<< " assign to buffer from built-in integer" << endl
;
171 cout
<< " operator==(buffer.value(), built-in)" << endl
;
172 bool b2(x2
.value() == 1234567890);
176 test_inserter_and_extractor();
178 cout
<< " done" << endl
;
180 return ::boost::report_errors();
183 #include <boost/endian/detail/disable_warnings_pop.hpp>