power_test.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*
  2. Copyright (c) Marshall Clow 2014.
  3. Distributed under the Boost Software License, Version 1.0. (See accompanying
  4. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  5. For more information, see http://www.boost.org
  6. */
  7. #include <iostream>
  8. #include <functional>
  9. #include <boost/config.hpp>
  10. #include <boost/algorithm/algorithm.hpp>
  11. #define BOOST_TEST_MAIN
  12. #include <boost/test/unit_test.hpp>
  13. namespace ba = boost::algorithm;
  14. void test_power ()
  15. {
  16. BOOST_CHECK ( ba::power(0, 0) == 1);
  17. BOOST_CHECK ( ba::power(5, 0) == 1);
  18. BOOST_CHECK ( ba::power(1, 1) == 1);
  19. BOOST_CHECK ( ba::power(1, 4) == 1);
  20. BOOST_CHECK ( ba::power(3, 2) == 9);
  21. BOOST_CHECK ( ba::power(2, 3) == 8);
  22. BOOST_CHECK ( ba::power(3, 3) == 27);
  23. BOOST_CHECK ( ba::power(2, 30) == 0x40000000);
  24. BOOST_CHECK ( ba::power(5L, 10) == 3125*3125);
  25. BOOST_CHECK ( ba::power(18, 3) == 18*18*18);
  26. BOOST_CHECK ( ba::power(3,2) == ba::power(3,2, std::multiplies<int>()));
  27. BOOST_CHECK ( ba::power(3,2, std::plus<int>()) == 6);
  28. }
  29. void test_power_constexpr ()
  30. {
  31. BOOST_CXX14_CONSTEXPR bool check_zero_power1 =
  32. ba::power(0, 0) == 1;
  33. BOOST_CHECK(check_zero_power1);
  34. BOOST_CXX14_CONSTEXPR bool check_zero_power2 =
  35. ba::power(5, 0) == 1;
  36. BOOST_CHECK(check_zero_power2);
  37. BOOST_CXX14_CONSTEXPR bool check_one_base1 =
  38. ba::power(1, 1) == 1;
  39. BOOST_CHECK(check_one_base1);
  40. BOOST_CXX14_CONSTEXPR bool check_one_base2 =
  41. ba::power(1, 4) == 1;
  42. BOOST_CHECK(check_one_base2);
  43. BOOST_CXX14_CONSTEXPR bool check_power1 =
  44. ba::power(3, 2) == 9;
  45. BOOST_CHECK(check_power1);
  46. BOOST_CXX14_CONSTEXPR bool check_power2 =
  47. ba::power(2, 3) == 8;
  48. BOOST_CHECK(check_power2);
  49. BOOST_CXX14_CONSTEXPR bool check_power3 =
  50. ba::power(3, 3) == 27;
  51. BOOST_CHECK(check_power3);
  52. BOOST_CXX14_CONSTEXPR bool check_power4 =
  53. ba::power(2, 30) == 0x40000000;
  54. BOOST_CHECK(check_power4);
  55. BOOST_CXX14_CONSTEXPR bool check_power5 =
  56. ba::power(5L, 10) == 3125*3125;
  57. BOOST_CHECK(check_power5);
  58. BOOST_CXX14_CONSTEXPR bool check_power6 =
  59. ba::power(18, 3) == 18*18*18;
  60. BOOST_CHECK(check_power6);
  61. BOOST_CXX14_CONSTEXPR bool check_multiple =
  62. ba::power(3, 2, std::multiplies<int>()) == ba::power(3, 2);
  63. BOOST_CHECK(check_multiple);
  64. BOOST_CXX14_CONSTEXPR bool check_plus =
  65. ba::power(3, 2, std::plus<int>()) == 6;
  66. BOOST_CHECK(check_plus);
  67. }
  68. BOOST_AUTO_TEST_CASE( test_main ) {
  69. test_power ();
  70. test_power_constexpr ();
  71. }