test/util/TestIntrusiveList: add AutoUnlink test
This commit is contained in:
parent
1c6e4a2b18
commit
99217593bf
@ -132,3 +132,47 @@ TEST(IntrusiveList, SafeLink)
|
|||||||
|
|
||||||
ASSERT_FALSE(a.is_linked());
|
ASSERT_FALSE(a.is_linked());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(IntrusiveList, AutoUnlink)
|
||||||
|
{
|
||||||
|
struct Item final : AutoUnlinkIntrusiveListHook {};
|
||||||
|
|
||||||
|
Item a;
|
||||||
|
ASSERT_FALSE(a.is_linked());
|
||||||
|
|
||||||
|
IntrusiveList<Item> list;
|
||||||
|
|
||||||
|
Item b;
|
||||||
|
ASSERT_FALSE(b.is_linked());
|
||||||
|
|
||||||
|
{
|
||||||
|
Item c;
|
||||||
|
|
||||||
|
list.push_back(a);
|
||||||
|
list.push_back(b);
|
||||||
|
list.push_back(c);
|
||||||
|
|
||||||
|
ASSERT_TRUE(a.is_linked());
|
||||||
|
ASSERT_TRUE(b.is_linked());
|
||||||
|
ASSERT_TRUE(c.is_linked());
|
||||||
|
|
||||||
|
auto i = list.begin();
|
||||||
|
ASSERT_EQ(&*i, &a);
|
||||||
|
++i;
|
||||||
|
ASSERT_EQ(&*i, &b);
|
||||||
|
++i;
|
||||||
|
ASSERT_EQ(&*i, &c);
|
||||||
|
++i;
|
||||||
|
ASSERT_EQ(i, list.end());
|
||||||
|
}
|
||||||
|
|
||||||
|
auto i = list.begin();
|
||||||
|
ASSERT_EQ(&*i, &a);
|
||||||
|
++i;
|
||||||
|
ASSERT_EQ(&*i, &b);
|
||||||
|
++i;
|
||||||
|
ASSERT_EQ(i, list.end());
|
||||||
|
|
||||||
|
ASSERT_TRUE(a.is_linked());
|
||||||
|
ASSERT_TRUE(b.is_linked());
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user