libs
libuavcan
libuavcan
test
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>
6
#include <
uavcan/dynamic_memory.hpp
>
7
8
TEST
(DynamicMemory, Basic)
9
{
10
uavcan::PoolAllocator<128, 32>
pool32;
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
{
25
uavcan::PoolAllocator<64, 32>
pool32;
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
{
49
uavcan::PoolAllocator<128, 32>
pool32;
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