1 // deprecated_test.cpp ---------------------------------------------------------------//
2
3 // Copyright Beman Dawes 2014, 2015
4
5 // Distributed under the Boost Software License, Version 1.0.
6 // See http://www.boost.org/LICENSE_1_0.txt
7
8 // See library home page at http://www.boost.org/libs/endian
9
10 //--------------------------------------------------------------------------------------//
11
12 #include <boost/endian/detail/disable_warnings.hpp>
13
14 #define BOOST_ENDIAN_DEPRECATED_NAMES
15 #include <boost/endian/endian.hpp>
16 #include <boost/detail/lightweight_main.hpp>
17 #include <boost/core/lightweight_test.hpp>
18 #include <boost/cstdint.hpp>
19 #include <iostream>
20 #include <sstream>
21
22 using namespace boost::endian;
23 using std::cout;
24 using std::endl;
25
26 namespace
27 {
28
29 // check_size ----------------------------------------------------------------------//
30
check_size()31 void check_size()
32 {
33 BOOST_TEST_EQ(sizeof(big8_t), 1);
34 BOOST_TEST_EQ(sizeof(big16_t), 2);
35 BOOST_TEST_EQ(sizeof(big24_t), 3);
36 BOOST_TEST_EQ(sizeof(big32_t), 4);
37 BOOST_TEST_EQ(sizeof(big40_t), 5);
38 BOOST_TEST_EQ(sizeof(big48_t), 6);
39 BOOST_TEST_EQ(sizeof(big56_t), 7);
40 BOOST_TEST_EQ(sizeof(big64_t), 8);
41
42 BOOST_TEST_EQ(sizeof(ubig8_t), 1);
43 BOOST_TEST_EQ(sizeof(ubig16_t), 2);
44 BOOST_TEST_EQ(sizeof(ubig24_t), 3);
45 BOOST_TEST_EQ(sizeof(ubig32_t), 4);
46 BOOST_TEST_EQ(sizeof(ubig40_t), 5);
47 BOOST_TEST_EQ(sizeof(ubig48_t), 6);
48 BOOST_TEST_EQ(sizeof(ubig56_t), 7);
49 BOOST_TEST_EQ(sizeof(ubig64_t), 8);
50
51 BOOST_TEST_EQ(sizeof(little8_t), 1);
52 BOOST_TEST_EQ(sizeof(little16_t), 2);
53 BOOST_TEST_EQ(sizeof(little24_t), 3);
54 BOOST_TEST_EQ(sizeof(little32_t), 4);
55 BOOST_TEST_EQ(sizeof(little40_t), 5);
56 BOOST_TEST_EQ(sizeof(little48_t), 6);
57 BOOST_TEST_EQ(sizeof(little56_t), 7);
58 BOOST_TEST_EQ(sizeof(little64_t), 8);
59
60 BOOST_TEST_EQ(sizeof(ulittle8_t), 1);
61 BOOST_TEST_EQ(sizeof(ulittle16_t), 2);
62 BOOST_TEST_EQ(sizeof(ulittle24_t), 3);
63 BOOST_TEST_EQ(sizeof(ulittle32_t), 4);
64 BOOST_TEST_EQ(sizeof(ulittle40_t), 5);
65 BOOST_TEST_EQ(sizeof(ulittle48_t), 6);
66 BOOST_TEST_EQ(sizeof(ulittle56_t), 7);
67 BOOST_TEST_EQ(sizeof(ulittle64_t), 8);
68
69 BOOST_TEST_EQ(sizeof(native8_t), 1);
70 BOOST_TEST_EQ(sizeof(native16_t), 2);
71 BOOST_TEST_EQ(sizeof(native24_t), 3);
72 BOOST_TEST_EQ(sizeof(native32_t), 4);
73 BOOST_TEST_EQ(sizeof(native40_t), 5);
74 BOOST_TEST_EQ(sizeof(native48_t), 6);
75 BOOST_TEST_EQ(sizeof(native56_t), 7);
76 BOOST_TEST_EQ(sizeof(native64_t), 8);
77
78 BOOST_TEST_EQ(sizeof(unative8_t), 1);
79 BOOST_TEST_EQ(sizeof(unative16_t), 2);
80 BOOST_TEST_EQ(sizeof(unative24_t), 3);
81 BOOST_TEST_EQ(sizeof(unative32_t), 4);
82 BOOST_TEST_EQ(sizeof(unative40_t), 5);
83 BOOST_TEST_EQ(sizeof(unative48_t), 6);
84 BOOST_TEST_EQ(sizeof(unative56_t), 7);
85 BOOST_TEST_EQ(sizeof(unative64_t), 8);
86
87 BOOST_TEST_EQ(sizeof(aligned_big16_t), 2);
88 BOOST_TEST_EQ(sizeof(aligned_big32_t), 4);
89 BOOST_TEST_EQ(sizeof(aligned_big64_t), 8);
90
91 BOOST_TEST_EQ(sizeof(aligned_ubig16_t), 2);
92 BOOST_TEST_EQ(sizeof(aligned_ubig32_t), 4);
93 BOOST_TEST_EQ(sizeof(aligned_ubig64_t), 8);
94
95 BOOST_TEST_EQ(sizeof(aligned_little16_t), 2);
96 BOOST_TEST_EQ(sizeof(aligned_little32_t), 4);
97 BOOST_TEST_EQ(sizeof(aligned_little64_t), 8);
98
99 BOOST_TEST_EQ(sizeof(aligned_ulittle16_t), 2);
100 BOOST_TEST_EQ(sizeof(aligned_ulittle32_t), 4);
101 BOOST_TEST_EQ(sizeof(aligned_ulittle64_t), 8);
102
103 # ifndef BOOST_NO_CXX11_TEMPLATE_ALIASES
104 BOOST_TEST_EQ(sizeof(endian<endianness::big, int_least16_t, 16>), 2);
105 BOOST_TEST_EQ(sizeof(endian<endianness::big,
106 int_least16_t, 16, alignment::unaligned>), 2);
107 # endif
108 } // check_size
109
110 // test_inserter_and_extractor -----------------------------------------------------//
111
test_inserter_and_extractor()112 void test_inserter_and_extractor()
113 {
114 std::cout << "test inserter and extractor..." << std::endl;
115
116 ubig64_t bu64(0x010203040506070ULL);
117 ulittle64_t lu64(0x010203040506070ULL);
118
119 boost::uint64_t x;
120
121 std::stringstream ss;
122
123 ss << bu64;
124 ss >> x;
125 BOOST_TEST_EQ(x, 0x010203040506070ULL);
126
127 ss.clear();
128 ss << lu64;
129 ss >> x;
130 BOOST_TEST_EQ(x, 0x010203040506070ULL);
131
132 ss.clear();
133 ss << 0x010203040506070ULL;
134 ubig64_t bu64z(0);
135 ss >> bu64z;
136 BOOST_TEST_EQ(bu64z, bu64);
137
138 ss.clear();
139 ss << 0x010203040506070ULL;
140 ulittle64_t lu64z(0);
141 ss >> lu64z;
142 BOOST_TEST_EQ(lu64z, lu64);
143
144 std::cout << "test inserter and extractor complete" << std::endl;
145
146 }
147
148 } // unnamed namespace
149
150 //--------------------------------------------------------------------------------------//
151
cpp_main(int,char * [])152 int cpp_main(int, char *[])
153 {
154 cout << "byte swap intrinsics: " BOOST_ENDIAN_INTRINSIC_MSG << endl;
155
156 cout << " construct big endian aligned" << endl;
157 big32_t x(1122334455);
158
159 cout << " assign to buffer from built-in integer" << endl;
160 x = 1234567890;
161
162 cout << " operator==(buffer.value(), built-in)" << endl;
163 bool b1(x == 1234567890);
164 BOOST_TEST(b1);
165
166 cout << " construct little endian unaligned" << endl;
167 little32_t x2(1122334455);
168
169 cout << " assign to buffer from built-in integer" << endl;
170 x2 = 1234567890;
171
172 cout << " operator==(buffer.value(), built-in)" << endl;
173 bool b2(x2 == 1234567890);
174 BOOST_TEST(b2);
175
176 check_size();
177 test_inserter_and_extractor();
178
179 cout << " done" << endl;
180
181 return ::boost::report_errors();
182 }
183
184 #include <boost/endian/detail/disable_warnings_pop.hpp>
185