|
|
@@ -1,4 +1,5 @@
|
|
|
#include <cmath>
|
|
|
+#include <limits>
|
|
|
#include <memory>
|
|
|
#include <gtest/gtest.h>
|
|
|
#include <entt/core/memory.hpp>
|
|
|
@@ -51,17 +52,15 @@ TEST(Memory, NextPowerOfTwo) {
|
|
|
constexpr auto next_power_of_two_of_zero = entt::next_power_of_two(0u);
|
|
|
|
|
|
ASSERT_EQ(next_power_of_two_of_zero, 1u);
|
|
|
- ASSERT_EQ(entt::next_power_of_two(1u), 2u);
|
|
|
+ ASSERT_EQ(entt::next_power_of_two(1u), 1u);
|
|
|
+ ASSERT_EQ(entt::next_power_of_two(2u), 2u);
|
|
|
+ ASSERT_EQ(entt::next_power_of_two(3u), 4u);
|
|
|
ASSERT_EQ(entt::next_power_of_two(17u), 32u);
|
|
|
- ASSERT_EQ(entt::next_power_of_two(32u), 64u);
|
|
|
- ASSERT_EQ(entt::next_power_of_two(32u), 64u);
|
|
|
-
|
|
|
- if constexpr(sizeof(std::size_t) > sizeof(std::uint32_t)) {
|
|
|
- ASSERT_EQ(entt::next_power_of_two(std::pow(2, 32)), std::pow(2, 33));
|
|
|
- ASSERT_EQ(entt::next_power_of_two(std::pow(2, 64)), 0u);
|
|
|
- } else {
|
|
|
- ASSERT_EQ(entt::next_power_of_two(std::pow(2, 32)), 0u);
|
|
|
- }
|
|
|
+ ASSERT_EQ(entt::next_power_of_two(32u), 32u);
|
|
|
+ ASSERT_EQ(entt::next_power_of_two(33u), 64u);
|
|
|
+ ASSERT_EQ(entt::next_power_of_two(std::pow(2, 16)), std::pow(2, 16));
|
|
|
+ ASSERT_EQ(entt::next_power_of_two(std::pow(2, 16) + 1u), std::pow(2, 17));
|
|
|
+ ASSERT_DEATH(static_cast<void>(entt::next_power_of_two((std::size_t{1u} << (std::numeric_limits<std::size_t>::digits - 1)) + 1)), "");
|
|
|
}
|
|
|
|
|
|
TEST(Memory, FastMod) {
|