summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/align/test/align_down_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/align/test/align_down_test.cpp')
-rw-r--r--src/boost/libs/align/test/align_down_test.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/boost/libs/align/test/align_down_test.cpp b/src/boost/libs/align/test/align_down_test.cpp
new file mode 100644
index 00000000..6b4d64dd
--- /dev/null
+++ b/src/boost/libs/align/test/align_down_test.cpp
@@ -0,0 +1,43 @@
+/*
+Copyright 2015 Glen Joseph Fernandes
+(glenjofe@gmail.com)
+
+Distributed under the Boost Software License, Version 1.0.
+(http://www.boost.org/LICENSE_1_0.txt)
+*/
+#include <boost/align/align_down.hpp>
+#include <boost/align/is_aligned.hpp>
+#include <boost/core/lightweight_test.hpp>
+
+template<std::size_t Alignment>
+void test()
+{
+ char s[Alignment << 1];
+ char* b = s;
+ while (!boost::alignment::is_aligned(b, Alignment)) {
+ ++b;
+ }
+ {
+ void* p = &b[Alignment];
+ BOOST_TEST(boost::alignment::align_down(p, Alignment) == p);
+ }
+ {
+ void* p = &b[Alignment - 1];
+ void* q = b;
+ BOOST_TEST(boost::alignment::align_down(p, Alignment) == q);
+ }
+}
+
+int main()
+{
+ test<1>();
+ test<2>();
+ test<4>();
+ test<8>();
+ test<16>();
+ test<32>();
+ test<64>();
+ test<128>();
+
+ return boost::report_errors();
+}