40 {
41
43
44 std::array<int, 2> a;
45 uint64_t b = 0;
46 char* c = nullptr;
47 std::tuple<int, void* (*)(int)> d { 1, nullptr };
48
49 EXPECT_EQ(m_FreeList.Empty(), true);
50 EXPECT_EQ(m_FreeList.ApplyforNBlocks(), 1);
51 EXPECT_EQ(m_FreeList.Size(), 0);
52 EXPECT_EQ(m_FreeList.Begin(), nullptr);
53 EXPECT_EQ(m_FreeList.End(), nullptr);
54
55 {
56 m_FreeList.Push(&a);
57 m_FreeList.Push(&b);
58 m_FreeList.Push(&c);
59 m_FreeList.Push(&d);
60
61 EXPECT_EQ(m_FreeList.Empty(), false);
62 EXPECT_EQ(m_FreeList.ApplyforNBlocks(), 1);
63 EXPECT_EQ(m_FreeList.Size(), 4);
64 EXPECT_EQ(m_FreeList.End(), &a);
65
66 const void* p = m_FreeList.Begin();
67 EXPECT_EQ(p, &d);
68
69 const void* p1 = *(void**)p;
70 EXPECT_EQ(p1, &c);
71
72 const void* p2 = *(void**)p1;
73 EXPECT_EQ(p2, &b);
74
75 const void* p3 = *(void**)p2;
76 EXPECT_EQ(p3, &a);
77
78 const void* p4 = *(void**)p3;
79 EXPECT_EQ(p4, nullptr);
80 }
81
82 {
83 EXPECT_EQ(m_FreeList.Pop(), &d);
84 EXPECT_EQ(m_FreeList.Pop(), &c);
85 EXPECT_EQ(m_FreeList.Pop(), &b);
86 EXPECT_EQ(m_FreeList.Pop(), &a);
87
88 EXPECT_EQ(m_FreeList.Empty(), true);
89 EXPECT_EQ(m_FreeList.ApplyforNBlocks(), 1);
90 EXPECT_EQ(m_FreeList.Size(), 0);
91 EXPECT_EQ(m_FreeList.Begin(), nullptr);
92 EXPECT_EQ(m_FreeList.End(), nullptr);
93 }
94 }
#define SPICESTEST_PROFILE_FUNCTION()