SpiecsEngine
 
Loading...
Searching...
No Matches

◆ TEST_F() [8/72]

SpicesTest::TEST_F ( free_list_test ,
PushRangePopRange  )

Testing scl::free_list::PushRange/PopRange.

Definition at line 99 of file FreeList_test.h.

99 {
100
102
103 scl::free_list list;
104
105 std::array<int, 2> a;
106 uint64_t b = 0;
107 char* c = nullptr;
108 std::tuple<int, void* (*)(int)> d { 1, nullptr };
109
110 m_FreeList.Push(&a);
111 m_FreeList.Push(&b);
112
113 list.Push(&c);
114 list.Push(&d);
115
116 {
117 m_FreeList.PushRange(list.Begin(), list.End(), list.Size());
118
119 EXPECT_EQ(m_FreeList.Empty(), false);
120 EXPECT_EQ(m_FreeList.ApplyforNBlocks(), 1);
121 EXPECT_EQ(m_FreeList.Size(), 4);
122 EXPECT_EQ(m_FreeList.End(), &a);
123
124 const void* p = m_FreeList.Begin();
125 EXPECT_EQ(p, &d);
126
127 const void* p1 = *(void**)p;
128 EXPECT_EQ(p1, &c);
129
130 const void* p2 = *(void**)p1;
131 EXPECT_EQ(p2, &b);
132
133 const void* p3 = *(void**)p2;
134 EXPECT_EQ(p3, &a);
135
136 const void* p4 = *(void**)p3;
137 EXPECT_EQ(p4, nullptr);
138 }
139
140 {
141 scl::free_list list2;
142 m_FreeList.PopRange(list2.Begin(), list2.End(), list.Size());
143
144 {
145 EXPECT_EQ(m_FreeList.Empty(), false);
146 EXPECT_EQ(m_FreeList.ApplyforNBlocks(), 1);
147 EXPECT_EQ(m_FreeList.Size(), 2);
148 EXPECT_EQ(m_FreeList.End(), &a);
149
150 const void* p = m_FreeList.Begin();
151 EXPECT_EQ(p, &b);
152
153 const void* p1 = *(void**)p;
154 EXPECT_EQ(p1, &a);
155
156 const void* p2 = *(void**)p1;
157 EXPECT_EQ(p2, nullptr);
158 }
159
160 {
161 EXPECT_EQ(list2.Empty(), false);
162 EXPECT_EQ(list2.ApplyforNBlocks(), 1);
163 EXPECT_EQ(list2.Size(), 0);
164 EXPECT_EQ(list2.End(), &c);
165
166 const void* p = list2.Begin();
167 EXPECT_EQ(p, &d);
168
169 const void* p1 = *(void**)p;
170 EXPECT_EQ(p1, &c);
171
172 const void* p2 = *(void**)p1;
173 EXPECT_EQ(p2, nullptr);
174 }
175 }
176 }
#define SPICESTEST_PROFILE_FUNCTION()
bool Empty() const
Determine if this list is empty.
Definition FreeList.h:50
void PopRange(void *&start, void *&end, size_t size)
Pop unused memory blocks from this free list.
Definition FreeList.cpp:76
void Push(void *obj)
Recycle a object memory to this free list.
Definition FreeList.cpp:13
const void * Begin() const
Get current pointer.
Definition FreeList.h:88
const size_t ApplyforNBlocks() const
Get m_NBlocksAppliedFor reference.
Definition FreeList.h:55
void *& End()
Get end pointer (no const & reference version).
Definition FreeList.h:100
const size_t Size() const
Get this freelist spare size.
Definition FreeList.h:66
Free list for memory pool.
Definition FreeList.h:16

References scl::free_list::Begin(), scl::free_list::Empty(), scl::free_list::End(), and scl::free_list::Push().