GCC Code Coverage Report | |||||||||||||||||||||
|
|||||||||||||||||||||
Line | Branch | Exec | Source |
1 |
#include "gtest/gtest.h" |
||
2 |
|||
3 |
#include "zserio/pmr/MemoryResource.h" |
||
4 |
|||
5 |
namespace zserio |
||
6 |
{ |
||
7 |
|||
8 |
✗✓ | 11 |
class TestResource : public zserio::pmr::MemoryResource |
9 |
{ |
||
10 |
public: |
||
11 |
11 |
explicit TestResource(size_t instanceId) : |
|
12 |
11 |
m_instanceId(instanceId) |
|
13 |
11 |
{} |
|
14 |
|||
15 |
1 |
size_t numAllocs() const |
|
16 |
{ |
||
17 |
1 |
return m_numAllocs; |
|
18 |
} |
||
19 |
|||
20 |
1 |
size_t numDeallocs() const |
|
21 |
{ |
||
22 |
1 |
return m_numDeallocs; |
|
23 |
} |
||
24 |
|||
25 |
private: |
||
26 |
1 |
void* doAllocate(size_t bytes, size_t) override |
|
27 |
{ |
||
28 |
1 |
++m_numAllocs; |
|
29 |
1 |
return ::operator new(bytes); |
|
30 |
} |
||
31 |
|||
32 |
1 |
void doDeallocate(void* p, size_t, size_t) override |
|
33 |
{ |
||
34 |
1 |
++m_numDeallocs; |
|
35 |
1 |
::operator delete(p); |
|
36 |
1 |
} |
|
37 |
|||
38 |
7 |
bool doIsEqual(const MemoryResource& other) const noexcept override |
|
39 |
{ |
||
40 |
✗✓ | 7 |
auto otherPtr = dynamic_cast<const TestResource*>(&other); |
41 |
✗✓ | 7 |
EXPECT_TRUE(otherPtr != nullptr); |
42 |
|||
43 |
7 |
return m_instanceId == otherPtr->m_instanceId; |
|
44 |
} |
||
45 |
|||
46 |
size_t m_numAllocs = 0; |
||
47 |
size_t m_numDeallocs = 0; |
||
48 |
size_t m_instanceId; |
||
49 |
}; |
||
50 |
|||
51 |
✓✗✓✗ ✓✗✗✓ |
802 |
TEST(MemoryResourceTest, allocateDeallocate) |
52 |
{ |
||
53 |
2 |
TestResource res(1); |
|
54 |
✓✗ | 1 |
auto p = res.allocate(10); |
55 |
✓✗✗✓ ✗✗✗✗ ✗✗ |
1 |
EXPECT_EQ(1, res.numAllocs()); |
56 |
✓✗ | 1 |
res.deallocate(p, 10); |
57 |
✓✗✗✓ ✗✗✗✗ ✗✗ |
1 |
EXPECT_EQ(1, res.numDeallocs()); |
58 |
1 |
} |
|
59 |
|||
60 |
✓✗✓✗ ✓✗✗✓ |
802 |
TEST(MemoryResourceTest, isEqual) |
61 |
{ |
||
62 |
2 |
TestResource res1(1); |
|
63 |
✓✗ | 2 |
TestResource res1_1(1); |
64 |
✓✗ | 2 |
TestResource res2(2); |
65 |
✗✓✗✗ ✗✗✗✗ ✗✗✓✗ |
1 |
ASSERT_TRUE(res1.isEqual(res1)); |
66 |
✗✓✗✗ ✗✗✗✗ ✗✗✓✗ |
1 |
ASSERT_TRUE(res1.isEqual(res1_1)); |
67 |
✗✓✗✗ ✗✗✗✗ ✗✗✓✗ ✓✗ |
1 |
ASSERT_FALSE(res1.isEqual(res2)); |
68 |
} |
||
69 |
|||
70 |
✓✗✓✗ ✓✗✗✓ |
802 |
TEST(MemoryResourceTest, equalOp) |
71 |
{ |
||
72 |
2 |
TestResource res1(1); |
|
73 |
✓✗ | 2 |
TestResource res1_1(1); |
74 |
✓✗ | 2 |
TestResource res2(2); |
75 |
✗✓✗✗ ✗✗✗✗ ✗✗✓✗ |
1 |
ASSERT_TRUE(res1 == res1); |
76 |
✗✓✗✗ ✗✗✗✗ ✗✗✓✗ |
1 |
ASSERT_TRUE(res1 == res1_1); |
77 |
✗✓✗✗ ✗✗✗✗ ✗✗✓✗ ✓✗ |
1 |
ASSERT_FALSE(res1 == res2); |
78 |
} |
||
79 |
|||
80 |
✓✗✓✗ ✓✗✗✓ |
802 |
TEST(MemoryResourceTest, nonEqualOp) |
81 |
{ |
||
82 |
2 |
TestResource res1(1); |
|
83 |
✓✗ | 2 |
TestResource res1_1(1); |
84 |
✓✗ | 2 |
TestResource res2(2); |
85 |
✗✓✗✗ ✗✗✗✗ ✗✗✓✗ |
1 |
ASSERT_FALSE(res1 != res1); |
86 |
✗✓✗✗ ✗✗✗✗ ✗✗✓✗ |
1 |
ASSERT_FALSE(res1 != res1_1); |
87 |
✗✓✗✗ ✗✗✗✗ ✗✗✓✗ ✓✗ |
1 |
ASSERT_TRUE(res1 != res2); |
88 |
} |
||
89 |
|||
90 |
✓✗✓✗ ✓✗✗✓ |
802 |
TEST(MemoryResourceTest, setGetDefaultResource) |
91 |
{ |
||
92 |
2 |
TestResource res(1); |
|
93 |
1 |
auto origRes = zserio::pmr::setDefaultResource(&res); |
|
94 |
✓✗✗✓ ✗✗✗✗ ✗✗✓✗ |
1 |
ASSERT_EQ(&res, zserio::pmr::getDefaultResource()); |
95 |
✓✗✗✓ ✗✗✗✗ ✗✗✓✗ |
1 |
ASSERT_EQ(&res, zserio::pmr::setDefaultResource(origRes)); |
96 |
1 |
zserio::pmr::setDefaultResource(nullptr); |
|
97 |
✓✗✗✓ ✗✗✗✗ ✗✗✓✗ ✓✗ |
1 |
ASSERT_EQ(origRes, zserio::pmr::getDefaultResource()); |
98 |
} |
||
99 |
|||
100 |
✓✗✓✗ |
2394 |
} // namespace zserio |
Generated by: GCOVR (Version 4.2) |