]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/algorithm/test/power_test.cpp
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / boost / libs / algorithm / test / power_test.cpp
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
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
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 }