#include #include #include "internal/mana_arena.h" using namespace mesytec::mnode; TEST(mnode_mana, Arena) { mana::Arena arena; ASSERT_EQ(arena.allocations(), 0); ASSERT_EQ(arena.pad_waste(), 0); ASSERT_EQ(arena.segment_count(), 0); ASSERT_EQ(arena.capacity(), 0); ASSERT_EQ(arena.used(), 0); for (size_t i=0; i<10; ++i) { auto mem = arena.push_size(mana::Arena::default_pad + 2); ASSERT_NE(mem, nullptr); } ASSERT_EQ(arena.allocations(), 10); ASSERT_GE(arena.pad_waste(), 0); ASSERT_GE(arena.segment_count(), 1); ASSERT_GE(arena.capacity(), 10 * (mana::Arena::default_pad + 2)); ASSERT_EQ(arena.used(), 10 * (mana::Arena::default_pad + 2)); arena.reset(); ASSERT_EQ(arena.allocations(), 0); ASSERT_EQ(arena.pad_waste(), 0); ASSERT_GE(arena.segment_count(), 1); ASSERT_GE(arena.capacity(), 10 * (mana::Arena::default_pad + 2)); ASSERT_EQ(arena.used(), 0); }