21 #define BOOST_TEST_MODULE libjmmcg_tests
22 #include <boost/test/included/unit_test.hpp>
24 #include "core/integer_power.hpp"
26 using namespace libjmmcg;
28 BOOST_AUTO_TEST_SUITE(dynamic_integer_powers)
30 BOOST_AUTO_TEST_CASE(two_pow_zero)
32 BOOST_CHECK_EQUAL(pow<0>(2), 1);
35 BOOST_AUTO_TEST_CASE(two_pow_one)
37 BOOST_CHECK_EQUAL(pow<1>(2), 2);
40 BOOST_AUTO_TEST_CASE(two_pow_two)
42 BOOST_CHECK_EQUAL(pow<2>(2), 4);
45 BOOST_AUTO_TEST_CASE(two_pow_eight)
47 BOOST_CHECK_EQUAL(pow<8>(2), 256);
50 BOOST_AUTO_TEST_CASE(two_pow_minus_one)
52 BOOST_CHECK_EQUAL(pow<-1>(2.0), 0.5);
55 BOOST_AUTO_TEST_CASE(two_pow_minus_two)
57 BOOST_CHECK_EQUAL(pow<-2>(2.0), 0.25);
60 BOOST_AUTO_TEST_SUITE_END()
62 BOOST_AUTO_TEST_SUITE(static_integer_powers)
64 BOOST_AUTO_TEST_CASE(two_pow_zero)
67 const double res=pow_2_0_t::result;
68 BOOST_CHECK_EQUAL(pow<0>(2), res);
71 BOOST_AUTO_TEST_CASE(two_pow_one)
74 const double res=pow_2_1_t::result;
75 BOOST_CHECK_EQUAL(pow<1>(2), res);
78 BOOST_AUTO_TEST_CASE(two_pow_two)
81 const double res=pow_2_2_t::result;
82 BOOST_CHECK_EQUAL(pow<2>(2), res);
85 BOOST_AUTO_TEST_CASE(two_pow_eight)
88 const double res=pow_2_8_t::result;
89 BOOST_CHECK_EQUAL(pow<8>(2), res);
92 BOOST_AUTO_TEST_CASE(two_pow_minus_one)
95 const double res=pow_2_n1_t::result;
96 BOOST_CHECK_EQUAL(0, res);
99 BOOST_AUTO_TEST_CASE(two_pow_minus_two)
102 const double res=pow_2_n2_t::result;
103 BOOST_CHECK_EQUAL(0, res);
106 BOOST_AUTO_TEST_SUITE_END()