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