1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 04:17:35 +00:00

AK+Tests: Add IntrusiveList<T,...>::insert_before(..) method

The insert_before method on AK::InlineLinkedList is used, so in order to
achieve feature parity, we need to implement it for AK::IntrusiveList as
well.
This commit is contained in:
Brian Gianforcaro 2021-06-15 02:33:59 -07:00 committed by Andreas Kling
parent 4586668fc3
commit b7f8343f87
2 changed files with 49 additions and 0 deletions

View file

@ -33,6 +33,32 @@ TEST_CASE(insert)
delete list.take_last();
}
TEST_CASE(insert_before)
{
IntrusiveTestList list;
auto two = new IntrusiveTestItem();
list.append(*two);
auto zero = new IntrusiveTestItem();
list.append(*zero);
auto one = new IntrusiveTestItem();
list.insert_before(*zero, *one);
EXPECT_EQ(list.first(), two);
EXPECT_EQ(list.last(), zero);
EXPECT(list.contains(*zero));
EXPECT(list.contains(*one));
EXPECT(list.contains(*two));
EXPECT(zero->m_list_node.is_in_list());
EXPECT(one->m_list_node.is_in_list());
EXPECT(two->m_list_node.is_in_list());
EXPECT_EQ(list.size_slow(), 3u);
while (auto elem = list.take_first()) {
delete elem;
}
}
TEST_CASE(enumeration)
{
constexpr size_t expected_size = 10;