]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
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 | ||
92f5a8d4 | 21 | void test_power () |
7c673cae FG |
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 | } | |
92f5a8d4 TL |
37 | |
38 | ||
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 | ||
81 | BOOST_AUTO_TEST_CASE( test_main ) { | |
82 | test_power (); | |
83 | test_power_constexpr (); | |
84 | } |