dynamic_memory.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2014 Pavel Kirienko <pavel.kirienko@gmail.com>
3  */
4 
5 #include <gtest/gtest.h>
7 
8 TEST(DynamicMemory, Basic)
9 {
11  EXPECT_EQ(4, pool32.getNumFreeBlocks());
12  EXPECT_EQ(0, pool32.getPeakNumUsedBlocks());
13  const void* ptr1 = pool32.allocate(16);
14  ASSERT_TRUE(ptr1);
15  EXPECT_EQ(1, pool32.getNumUsedBlocks());
16  EXPECT_FALSE(pool32.allocate(120));
17  EXPECT_EQ(1, pool32.getNumUsedBlocks());
18  pool32.deallocate(ptr1);
19  EXPECT_EQ(0, pool32.getNumUsedBlocks());
20  EXPECT_EQ(1, pool32.getPeakNumUsedBlocks());
21 }
22 
23 TEST(DynamicMemory, OutOfMemory)
24 {
26 
27  EXPECT_EQ(2, pool32.getNumFreeBlocks());
28  EXPECT_EQ(0, pool32.getNumUsedBlocks());
29  EXPECT_EQ(0, pool32.getPeakNumUsedBlocks());
30 
31  const void* ptr1 = pool32.allocate(32);
32  ASSERT_TRUE(ptr1);
33  EXPECT_EQ(1, pool32.getNumUsedBlocks());
34  EXPECT_EQ(1, pool32.getPeakNumUsedBlocks());
35 
36  const void* ptr2 = pool32.allocate(32);
37  ASSERT_TRUE(ptr2);
38  EXPECT_EQ(2, pool32.getNumUsedBlocks());
39  EXPECT_EQ(2, pool32.getPeakNumUsedBlocks());
40 
41  ASSERT_FALSE(pool32.allocate(32)); // No free blocks left --> UAVCAN_NULLPTR
42  EXPECT_EQ(2, pool32.getNumUsedBlocks());
43  EXPECT_EQ(0, pool32.getNumFreeBlocks());
44  EXPECT_EQ(2, pool32.getPeakNumUsedBlocks());
45 }
46 
47 TEST(DynamicMemory, LimitedPoolAllocator)
48 {
50  uavcan::LimitedPoolAllocator lim(pool32, 2);
51 
52  EXPECT_EQ(2, lim.getBlockCapacity());
53  EXPECT_EQ(0, pool32.getPeakNumUsedBlocks());
54 
55  const void* ptr1 = lim.allocate(1);
56  const void* ptr2 = lim.allocate(1);
57  const void* ptr3 = lim.allocate(1);
58 
59  EXPECT_TRUE(ptr1);
60  EXPECT_TRUE(ptr2);
61  EXPECT_FALSE(ptr3);
62 
63  lim.deallocate(ptr2);
64  const void* ptr4 = lim.allocate(1);
65  lim.deallocate(ptr1);
66  const void* ptr5 = lim.allocate(1);
67  const void* ptr6 = lim.allocate(1);
68 
69  EXPECT_TRUE(ptr4);
70  EXPECT_TRUE(ptr5);
71  EXPECT_FALSE(ptr6);
72 
73  EXPECT_EQ(2, pool32.getPeakNumUsedBlocks());
74 }
uavcan::PoolAllocator::deallocate
virtual void deallocate(const void *ptr)
Definition: dynamic_memory.hpp:185
uavcan::LimitedPoolAllocator
Definition: dynamic_memory.hpp:112
dynamic_memory.hpp
uavcan::PoolAllocator
Definition: dynamic_memory.hpp:51
TEST
TEST(DynamicMemory, Basic)
Definition: dynamic_memory.cpp:8
uavcan::PoolAllocator::allocate
virtual void * allocate(std::size_t size)
Definition: dynamic_memory.hpp:160
uavcan::PoolAllocator::getNumFreeBlocks
uint16_t getNumFreeBlocks() const
Definition: dynamic_memory.hpp:91
uavcan::LimitedPoolAllocator::allocate
virtual void * allocate(std::size_t size)
Definition: uc_dynamic_memory.cpp:12
uavcan::LimitedPoolAllocator::getBlockCapacity
virtual uint16_t getBlockCapacity() const
Definition: uc_dynamic_memory.cpp:36
uavcan::PoolAllocator::getPeakNumUsedBlocks
uint16_t getPeakNumUsedBlocks() const
Definition: dynamic_memory.hpp:101
uavcan::PoolAllocator::getNumUsedBlocks
uint16_t getNumUsedBlocks() const
Definition: dynamic_memory.hpp:85
uavcan::LimitedPoolAllocator::deallocate
virtual void deallocate(const void *ptr)
Definition: uc_dynamic_memory.cpp:25


uavcan_communicator
Author(s):
autogenerated on Fri Dec 13 2024 03:10:02