]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/align/test/align_test.cpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / align / test / align_test.cpp
1 /*
2 (c) 2014-2015 Glen Joseph Fernandes
3 <glenjofe -at- gmail.com>
4
5 Distributed under the Boost Software
6 License, Version 1.0.
7 http://boost.org/LICENSE_1_0.txt
8 */
9 #include <boost/align/align.hpp>
10 #include <boost/align/is_aligned.hpp>
11 #include <boost/core/lightweight_test.hpp>
12
13 template<std::size_t Alignment>
14 void test()
15 {
16 char s[Alignment << 1];
17 char* b = s;
18 while (!boost::alignment::is_aligned(b, Alignment)) {
19 b++;
20 }
21 {
22 std::size_t n = Alignment;
23 void* p = b;
24 void* q = boost::alignment::align(Alignment, 1, p, n);
25 BOOST_TEST(q == p);
26 BOOST_TEST(q == b);
27 BOOST_TEST(boost::alignment::is_aligned(q, Alignment));
28 BOOST_TEST(n == Alignment);
29 }
30 {
31 std::size_t n = 0;
32 void* p = b;
33 void* q = boost::alignment::align(Alignment, 1, p, n);
34 BOOST_TEST(q == 0);
35 BOOST_TEST(p == b);
36 BOOST_TEST(n == 0);
37 }
38 {
39 std::size_t n = Alignment - 1;
40 void* p = &b[1];
41 void* q = boost::alignment::align(Alignment, 1, p, n);
42 BOOST_TEST(q == 0);
43 BOOST_TEST(p == &b[1]);
44 BOOST_TEST(n == Alignment - 1);
45 }
46 {
47 std::size_t n = Alignment;
48 void* p = &b[1];
49 void* q = boost::alignment::align(Alignment, 1, p, n);
50 BOOST_TEST(q == p);
51 BOOST_TEST(p == &b[Alignment]);
52 BOOST_TEST(boost::alignment::is_aligned(q, Alignment));
53 BOOST_TEST(n == 1);
54 }
55 }
56
57 int main()
58 {
59 test<1>();
60 test<2>();
61 test<4>();
62 test<8>();
63 test<16>();
64 test<32>();
65 test<64>();
66 test<128>();
67
68 return boost::report_errors();
69 }