]>
Commit | Line | Data |
---|---|---|
7c673cae | 1 | /* |
b32b8144 FG |
2 | Copyright 2014-2015 Glen Joseph Fernandes |
3 | (glenjofe@gmail.com) | |
7c673cae | 4 | |
b32b8144 FG |
5 | Distributed 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 | ||
12 | template<std::size_t Alignment> | |
13 | void 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 | ||
56 | int 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 | } |