Imported Upstream version 1.72.0
[platform/upstream/boost.git] / libs / endian / test / endian_hpp_test.cpp
1 //  Copyright 2019 Peter Dimov
2 //  Distributed under the Boost Software License, Version 1.0.
3 //  http://www.boost.org/LICENSE_1_0.txt
4
5 #include <boost/endian.hpp>
6 #include <boost/core/lightweight_test.hpp>
7
8 int main()
9 {
10     using namespace boost::endian;
11
12     // conversion
13
14     {
15         BOOST_TEST_EQ( endian_reverse( 0x01020304 ), 0x04030201 );
16     }
17
18     // buffers
19
20     {
21         little_uint32_buf_t v( 0x01020304 );
22
23         BOOST_TEST_EQ( v.data()[ 0 ], 0x04 );
24         BOOST_TEST_EQ( v.data()[ 1 ], 0x03 );
25         BOOST_TEST_EQ( v.data()[ 2 ], 0x02 );
26         BOOST_TEST_EQ( v.data()[ 3 ], 0x01 );
27     }
28
29     {
30         big_uint32_buf_t v( 0x01020304 );
31
32         BOOST_TEST_EQ( v.data()[ 0 ], 0x01 );
33         BOOST_TEST_EQ( v.data()[ 1 ], 0x02 );
34         BOOST_TEST_EQ( v.data()[ 2 ], 0x03 );
35         BOOST_TEST_EQ( v.data()[ 3 ], 0x04 );
36     }
37
38     // arithmetic
39
40     {
41         little_uint32_t v( 0x01020304 );
42
43         BOOST_TEST_EQ( v.data()[ 0 ], 0x04 );
44         BOOST_TEST_EQ( v.data()[ 1 ], 0x03 );
45         BOOST_TEST_EQ( v.data()[ 2 ], 0x02 );
46         BOOST_TEST_EQ( v.data()[ 3 ], 0x01 );
47     }
48
49     {
50         big_uint32_t v( 0x01020304 );
51
52         BOOST_TEST_EQ( v.data()[ 0 ], 0x01 );
53         BOOST_TEST_EQ( v.data()[ 1 ], 0x02 );
54         BOOST_TEST_EQ( v.data()[ 2 ], 0x03 );
55         BOOST_TEST_EQ( v.data()[ 3 ], 0x04 );
56     }
57
58     return boost::report_errors();
59 }