libmoost
/home/mhx/git/github/libmoost/test/math/log2.cpp
Go to the documentation of this file.
00001 /* vim:set ts=3 sw=3 sts=3 et: */
00031 #include <boost/test/unit_test.hpp>
00032 #include <boost/cstdint.hpp>
00033 
00034 #include "../../include/moost/math/integer/log2.hpp"
00035 
00036 using namespace moost;
00037 
00038 BOOST_AUTO_TEST_SUITE(int_log2_test)
00039 
00040 BOOST_AUTO_TEST_CASE(int_log2_test)
00041 {
00042    BOOST_CHECK_EQUAL(math::integer::log2(1U), 0);
00043    BOOST_CHECK_EQUAL(math::integer::log2_compat(1U), 0);
00044 
00045    BOOST_CHECK_EQUAL(math::integer::log2(2U), 1);
00046    BOOST_CHECK_EQUAL(math::integer::log2_compat(2U), 1);
00047 
00048    BOOST_CHECK_EQUAL(math::integer::log2(3U), 1);
00049    BOOST_CHECK_EQUAL(math::integer::log2_compat(3U), 1);
00050 
00051    BOOST_CHECK_EQUAL(math::integer::log2(4U), 2);
00052    BOOST_CHECK_EQUAL(math::integer::log2_compat(4U), 2);
00053 
00054    BOOST_CHECK_EQUAL(math::integer::log2(65535U), 15);
00055    BOOST_CHECK_EQUAL(math::integer::log2_compat(65535U), 15);
00056 
00057    BOOST_CHECK_EQUAL(math::integer::log2(65535UL), 15);
00058    BOOST_CHECK_EQUAL(math::integer::log2_compat(65535UL), 15);
00059 
00060    BOOST_CHECK_EQUAL(math::integer::log2(65536UL), 16);
00061    BOOST_CHECK_EQUAL(math::integer::log2_compat(65536UL), 16);
00062 
00063    BOOST_CHECK_EQUAL(math::integer::log2(65537UL), 16);
00064    BOOST_CHECK_EQUAL(math::integer::log2_compat(65537UL), 16);
00065 
00066    BOOST_CHECK_EQUAL(math::integer::log2(0xFFFFFFFFUL), 31);
00067    BOOST_CHECK_EQUAL(math::integer::log2_compat(0xFFFFFFFFUL), 31);
00068 
00069    BOOST_CHECK_EQUAL(math::integer::log2(UINT64_C(0xFFFFFFFF)), 31);
00070    BOOST_CHECK_EQUAL(math::integer::log2_compat(UINT64_C(0xFFFFFFFF)), 31);
00071 
00072    BOOST_CHECK_EQUAL(math::integer::log2(UINT64_C(0x100000000)), 32);
00073    BOOST_CHECK_EQUAL(math::integer::log2_compat(UINT64_C(0x100000000)), 32);
00074 
00075    BOOST_CHECK_EQUAL(math::integer::log2(UINT64_C(0x100000001)), 32);
00076    BOOST_CHECK_EQUAL(math::integer::log2_compat(UINT64_C(0x100000001)), 32);
00077 
00078    BOOST_CHECK_EQUAL(math::integer::log2(UINT64_C(0xFFFFFFFFFFFFFFFF)), 63);
00079    BOOST_CHECK_EQUAL(math::integer::log2_compat(UINT64_C(0xFFFFFFFFFFFFFFFF)), 63);
00080 }
00081 
00082 BOOST_AUTO_TEST_SUITE_END()