JayBeams  0.1
Another project to have fun coding.
ut_p2ceil.cpp
Go to the documentation of this file.
1 #include <jb/p2ceil.hpp>
2 
3 #include <boost/test/unit_test.hpp>
4 
5 /**
6  * @test Verify that p2ceil works correctly for 64-bit numbers.
7  */
8 BOOST_AUTO_TEST_CASE(p2ceil_simple_64) {
9  BOOST_CHECK_EQUAL(jb::p2ceil(std::uint64_t(3)), 4);
10  BOOST_CHECK_EQUAL(jb::p2ceil(std::uint64_t(4)), 8);
11  BOOST_CHECK_EQUAL(jb::p2ceil(std::uint64_t(8)), 16);
12  BOOST_CHECK_EQUAL(jb::p2ceil(std::uint64_t(17)), 32);
13  BOOST_CHECK_EQUAL(jb::p2ceil(std::uint64_t(2317)), 4096);
14 }
15 
16 /**
17  * @test Verify that p2ceil is known at compile-time.
18  */
19 BOOST_AUTO_TEST_CASE(p2ceil_compile_time) {
20  constexpr std::uint64_t actual = jb::p2ceil(std::uint64_t(17));
21  static_assert(actual == 32, "Error in p2ceil static assert");
22  BOOST_CHECK_EQUAL(actual, 32);
23 }
24 
25 /**
26  * @test Verify that p2ceil works correctly for 32-bit numbers.
27  */
28 BOOST_AUTO_TEST_CASE(p2ceil_simple_32) {
29  BOOST_CHECK_EQUAL(jb::p2ceil(std::uint32_t(3)), 4);
30  BOOST_CHECK_EQUAL(jb::p2ceil(std::uint32_t(4)), 8);
31  BOOST_CHECK_EQUAL(jb::p2ceil(std::uint32_t(8)), 16);
32  BOOST_CHECK_EQUAL(jb::p2ceil(std::uint32_t(17)), 32);
33  BOOST_CHECK_EQUAL(jb::p2ceil(std::uint32_t(2317)), 4096);
34 }
35 
36 /**
37  * @test Verify that p2ceil works correctly for 16-bit numbers.
38  */
39 BOOST_AUTO_TEST_CASE(p2ceil_simple_16) {
40  BOOST_CHECK_EQUAL(jb::p2ceil(std::uint16_t(3)), 4);
41  BOOST_CHECK_EQUAL(jb::p2ceil(std::uint16_t(4)), 8);
42  BOOST_CHECK_EQUAL(jb::p2ceil(std::uint16_t(8)), 16);
43  BOOST_CHECK_EQUAL(jb::p2ceil(std::uint16_t(17)), 32);
44  BOOST_CHECK_EQUAL(jb::p2ceil(std::uint16_t(2317)), 4096);
45 }
46 
47 /**
48  * @test Verify that p2ceil works correctly for 8-bit numbers.
49  */
50 BOOST_AUTO_TEST_CASE(p2ceil_simple_8) {
51  BOOST_CHECK_EQUAL(jb::p2ceil(std::uint8_t(3)), 4);
52  BOOST_CHECK_EQUAL(jb::p2ceil(std::uint8_t(4)), 8);
53  BOOST_CHECK_EQUAL(jb::p2ceil(std::uint8_t(8)), 16);
54  BOOST_CHECK_EQUAL(jb::p2ceil(std::uint8_t(17)), 32);
55  BOOST_CHECK_EQUAL(jb::p2ceil(std::uint8_t(125)), 128);
56 }
BOOST_AUTO_TEST_CASE(p2ceil_simple_64)
Definition: ut_p2ceil.cpp:8
constexpr std::uint64_t p2ceil(std::uint64_t n)
Find the smallest power of 2 larger than n for a 64-bit integer.
Definition: p2ceil.hpp:34