1
2 // Copyright Aleksey Gurtovoy 2003-2004
3 // Copyright Jaap Suter 2003
4 //
5 // Distributed under the Boost Software License,Version 1.0.
6 // (See accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt)
8 //
9 // See http://www.boost.org/libs/mpl for documentation.
10
11 // $Id$
12 // $Date$
13 // $Revision$
14
15 #include <boost/mpl/bitwise.hpp>
16 #include <boost/mpl/integral_c.hpp>
17 #include <boost/mpl/aux_/test.hpp>
18
19 typedef integral_c<unsigned int, 0> _0;
20 typedef integral_c<unsigned int, 1> _1;
21 typedef integral_c<unsigned int, 2> _2;
22 typedef integral_c<unsigned int, 8> _8;
23 typedef integral_c<unsigned int, 0xffffffff> _ffffffff;
24
MPL_TEST_CASE()25 MPL_TEST_CASE()
26 {
27 MPL_ASSERT_RELATION( (bitand_<_0,_0>::value), ==, 0 );
28 MPL_ASSERT_RELATION( (bitand_<_1,_0>::value), ==, 0 );
29 MPL_ASSERT_RELATION( (bitand_<_0,_1>::value), ==, 0 );
30 MPL_ASSERT_RELATION( (bitand_<_0,_ffffffff>::value), ==, 0 );
31 MPL_ASSERT_RELATION( (bitand_<_1,_ffffffff>::value), ==, 1 );
32 MPL_ASSERT_RELATION( (bitand_<_8,_ffffffff>::value), ==, 8 );
33 }
34
MPL_TEST_CASE()35 MPL_TEST_CASE()
36 {
37 MPL_ASSERT_RELATION( (bitor_<_0,_0>::value), ==, 0 );
38 MPL_ASSERT_RELATION( (bitor_<_1,_0>::value), ==, 1 );
39 MPL_ASSERT_RELATION( (bitor_<_0,_1>::value), ==, 1 );
40 MPL_ASSERT_RELATION( static_cast<long>(bitor_<_0,_ffffffff>::value), ==, static_cast<long>(0xffffffff) );
41 MPL_ASSERT_RELATION( static_cast<long>(bitor_<_1,_ffffffff>::value), ==, static_cast<long>(0xffffffff) );
42 MPL_ASSERT_RELATION( static_cast<long>(bitor_<_8,_ffffffff>::value), ==, static_cast<long>(0xffffffff) );
43 }
44
MPL_TEST_CASE()45 MPL_TEST_CASE()
46 {
47 MPL_ASSERT_RELATION( (bitxor_<_0,_0>::value), ==, 0 );
48 MPL_ASSERT_RELATION( (bitxor_<_1,_0>::value), ==, 1 );
49 MPL_ASSERT_RELATION( (bitxor_<_0,_1>::value), ==, 1 );
50 MPL_ASSERT_RELATION( static_cast<long>(bitxor_<_0,_ffffffff>::value), ==, static_cast<long>(0xffffffff ^ 0) );
51 MPL_ASSERT_RELATION( static_cast<long>(bitxor_<_1,_ffffffff>::value), ==, static_cast<long>(0xffffffff ^ 1) );
52 MPL_ASSERT_RELATION( static_cast<long>(bitxor_<_8,_ffffffff>::value), ==, static_cast<long>(0xffffffff ^ 8) );
53 }
54
MPL_TEST_CASE()55 MPL_TEST_CASE()
56 {
57 MPL_ASSERT_RELATION( (shift_right<_0,_0>::value), ==, 0 );
58 MPL_ASSERT_RELATION( (shift_right<_1,_0>::value), ==, 1 );
59 MPL_ASSERT_RELATION( (shift_right<_1,_1>::value), ==, 0 );
60 MPL_ASSERT_RELATION( (shift_right<_2,_1>::value), ==, 1 );
61 MPL_ASSERT_RELATION( (shift_right<_8,_1>::value), ==, 4 );
62 }
63
MPL_TEST_CASE()64 MPL_TEST_CASE()
65 {
66 MPL_ASSERT_RELATION( (shift_left<_0,_0>::value), ==, 0 );
67 MPL_ASSERT_RELATION( (shift_left<_1,_0>::value), ==, 1 );
68 MPL_ASSERT_RELATION( (shift_left<_1,_1>::value), ==, 2 );
69 MPL_ASSERT_RELATION( (shift_left<_2,_1>::value), ==, 4 );
70 MPL_ASSERT_RELATION( (shift_left<_8,_1>::value), ==, 16 );
71 }
72