diff --git a/AK/Tests/TestVector.cpp b/AK/Tests/TestVector.cpp index ea5f7a9526..5b7e8f0c0f 100644 --- a/AK/Tests/TestVector.cpp +++ b/AK/Tests/TestVector.cpp @@ -1,5 +1,6 @@ #include #include +#include #include TEST_CASE(construct) @@ -98,4 +99,39 @@ TEST_CASE(prepend_vector) EXPECT_EQ(ints.size(), 0); } +TEST_CASE(prepend_vector_object) +{ + struct SubObject { + SubObject(int v) : value(v) {} + int value { 0 }; + }; + struct Object { + OwnPtr object; + }; + + Vector objects; + objects.append({ make(1) }); + objects.append({ make(2) }); + objects.append({ make(3) }); + + EXPECT_EQ(objects.size(), 3); + + Vector more_objects; + objects.append({ make(4) }); + objects.append({ make(5) }); + objects.append({ make(6) }); + EXPECT_EQ(more_objects.size(), 3); + + objects.prepend(move(more_objects)); + EXPECT_EQ(more_objects.size(), 0); + EXPECT_EQ(objects.size(), 6); + + EXPECT_EQ(objects[0].object->value, 4); + EXPECT_EQ(objects[1].object->value, 5); + EXPECT_EQ(objects[2].object->value, 6); + EXPECT_EQ(objects[3].object->value, 1); + EXPECT_EQ(objects[4].object->value, 2); + EXPECT_EQ(objects[5].object->value, 3); +} + TEST_MAIN(Vector)