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