mesytec-mnode/src/mana.test.cc

37 lines
1,011 B
C++
Raw Normal View History

#include <gtest/gtest.h>
#include <mesytec-mnode/mnode_cpp_types.h>
#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);
}