mirror of
https://github.com/mutouyun/cpp-ipc.git
synced 2025-12-06 16:56:45 +08:00
fix ut
This commit is contained in:
parent
019a60b371
commit
ec602f50af
@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
#include <algorithm> // std::swap
|
#include <algorithm> // std::swap
|
||||||
|
|
||||||
|
#include "libimp/log.h"
|
||||||
#include "libpmr/allocator.h"
|
#include "libpmr/allocator.h"
|
||||||
|
|
||||||
LIBPMR_NAMESPACE_BEG_
|
LIBPMR_NAMESPACE_BEG_
|
||||||
@ -25,10 +26,20 @@ void allocator::swap(allocator &other) noexcept {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void *allocator::allocate(std::size_t s, std::size_t a) const {
|
void *allocator::allocate(std::size_t s, std::size_t a) const {
|
||||||
|
LIBIMP_LOG_();
|
||||||
|
if ((a & (a - 1)) != 0) {
|
||||||
|
log.error("failed: allocate alignment is not a power of 2.");
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
return get_holder().alloc(s, a);
|
return get_holder().alloc(s, a);
|
||||||
}
|
}
|
||||||
|
|
||||||
void allocator::deallocate(void *p, std::size_t s, std::size_t a) const {
|
void allocator::deallocate(void *p, std::size_t s, std::size_t a) const {
|
||||||
|
LIBIMP_LOG_();
|
||||||
|
if ((a & (a - 1)) != 0) {
|
||||||
|
log.error("failed: allocate alignment is not a power of 2.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
get_holder().dealloc(p, s, a);
|
get_holder().dealloc(p, s, a);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -92,10 +92,6 @@ void *monotonic_buffer_resource::allocate(std::size_t bytes, std::size_t alignme
|
|||||||
log.error("failed: allocate bytes = 0.");
|
log.error("failed: allocate bytes = 0.");
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
if ((alignment & (alignment - 1)) != 0) {
|
|
||||||
log.error("failed: allocate alignment is not a power of 2.");
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
void *p = head_;
|
void *p = head_;
|
||||||
auto s = static_cast<std::size_t>(tail_ - head_);
|
auto s = static_cast<std::size_t>(tail_ - head_);
|
||||||
if (std::align(alignment, bytes, p, s) == nullptr) {
|
if (std::align(alignment, bytes, p, s) == nullptr) {
|
||||||
|
|||||||
@ -28,7 +28,7 @@ TEST(memory_resource, traits) {
|
|||||||
EXPECT_FALSE(pmr::has_allocate<void>::value);
|
EXPECT_FALSE(pmr::has_allocate<void>::value);
|
||||||
EXPECT_FALSE(pmr::has_allocate<int>::value);
|
EXPECT_FALSE(pmr::has_allocate<int>::value);
|
||||||
EXPECT_FALSE(pmr::has_allocate<std::vector<int>>::value);
|
EXPECT_FALSE(pmr::has_allocate<std::vector<int>>::value);
|
||||||
EXPECT_TRUE (pmr::has_allocate<std::allocator<int>>::value);
|
EXPECT_FALSE(pmr::has_allocate<std::allocator<int>>::value);
|
||||||
#if defined(LIBIMP_CPP_17) && defined(__cpp_lib_memory_resource)
|
#if defined(LIBIMP_CPP_17) && defined(__cpp_lib_memory_resource)
|
||||||
EXPECT_TRUE (pmr::has_allocate<std::pmr::memory_resource>::value);
|
EXPECT_TRUE (pmr::has_allocate<std::pmr::memory_resource>::value);
|
||||||
EXPECT_TRUE (pmr::has_allocate<std::pmr::polymorphic_allocator<int>>::value);
|
EXPECT_TRUE (pmr::has_allocate<std::pmr::polymorphic_allocator<int>>::value);
|
||||||
|
|||||||
@ -102,13 +102,13 @@ TEST(monotonic_buffer_resource, release) {
|
|||||||
tmp.release();
|
tmp.release();
|
||||||
ASSERT_EQ(dummy.allocated, 0);
|
ASSERT_EQ(dummy.allocated, 0);
|
||||||
ASSERT_NE(tmp.allocate(1024), nullptr);
|
ASSERT_NE(tmp.allocate(1024), nullptr);
|
||||||
ASSERT_GE(dummy.allocated, 1024);
|
ASSERT_GE(dummy.allocated, 1024u);
|
||||||
ASSERT_LE(dummy.allocated, 1024 * 1.5);
|
ASSERT_LE(dummy.allocated, 1024u * 1.5);
|
||||||
tmp.release();
|
tmp.release();
|
||||||
ASSERT_EQ(dummy.allocated, 0);
|
ASSERT_EQ(dummy.allocated, 0);
|
||||||
ASSERT_NE(tmp.allocate(1024), nullptr);
|
ASSERT_NE(tmp.allocate(1024), nullptr);
|
||||||
ASSERT_GE(dummy.allocated, 1024);
|
ASSERT_GE(dummy.allocated, 1024u);
|
||||||
ASSERT_LE(dummy.allocated, 1024 * 1.5);
|
ASSERT_LE(dummy.allocated, 1024u * 1.5);
|
||||||
}
|
}
|
||||||
ASSERT_EQ(dummy.allocated, 0);
|
ASSERT_EQ(dummy.allocated, 0);
|
||||||
std::array<imp::byte, 4096> buffer;
|
std::array<imp::byte, 4096> buffer;
|
||||||
@ -119,7 +119,7 @@ TEST(monotonic_buffer_resource, release) {
|
|||||||
ASSERT_EQ(dummy.allocated, 0);
|
ASSERT_EQ(dummy.allocated, 0);
|
||||||
p = tmp.allocate(10240);
|
p = tmp.allocate(10240);
|
||||||
ASSERT_NE(p, buffer.data());
|
ASSERT_NE(p, buffer.data());
|
||||||
ASSERT_LE(dummy.allocated, 10240 + 1024);
|
ASSERT_LE(dummy.allocated, 10240u + 1024u);
|
||||||
tmp.release();
|
tmp.release();
|
||||||
ASSERT_EQ(dummy.allocated, 0);
|
ASSERT_EQ(dummy.allocated, 0);
|
||||||
p = tmp.allocate(1024);
|
p = tmp.allocate(1024);
|
||||||
@ -127,7 +127,7 @@ TEST(monotonic_buffer_resource, release) {
|
|||||||
ASSERT_EQ(dummy.allocated, 0);
|
ASSERT_EQ(dummy.allocated, 0);
|
||||||
p = tmp.allocate(10240);
|
p = tmp.allocate(10240);
|
||||||
ASSERT_NE(p, buffer.data());
|
ASSERT_NE(p, buffer.data());
|
||||||
ASSERT_LE(dummy.allocated, 10240 + 1024);
|
ASSERT_LE(dummy.allocated, 10240u + 1024u);
|
||||||
}
|
}
|
||||||
ASSERT_EQ(dummy.allocated, 0);
|
ASSERT_EQ(dummy.allocated, 0);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user