AK: Use Vector::empend() a bit in the unit tests, and fix a bug.

There was a bug in the "prepend_vector_object" test but it was masked
by us not printing failures. (The bug was that we were adding three
elements to the "objects" vector and then checking that another
vector called "more_objects" indeed had three elements. Oops!)
This commit is contained in:
Andreas Kling 2019-08-01 16:23:21 +02:00
commit 9230b42f28
Notes: sideshowbarker 2024-07-19 12:57:19 +09:00

View file

@ -1,6 +1,6 @@
#include <AK/TestSuite.h>
#include <AK/AKString.h> #include <AK/AKString.h>
#include <AK/OwnPtr.h> #include <AK/OwnPtr.h>
#include <AK/TestSuite.h>
#include <AK/Vector.h> #include <AK/Vector.h>
TEST_CASE(construct) TEST_CASE(construct)
@ -102,36 +102,43 @@ TEST_CASE(prepend_vector)
TEST_CASE(prepend_vector_object) TEST_CASE(prepend_vector_object)
{ {
struct SubObject { struct SubObject {
SubObject(int v) : value(v) {} SubObject(int v)
: value(v)
{
}
int value { 0 }; int value { 0 };
}; };
struct Object { struct Object {
OwnPtr<SubObject> object; Object(NonnullOwnPtr<SubObject>&& a_subobject)
: subobject(move(a_subobject))
{
}
OwnPtr<SubObject> subobject;
}; };
Vector<Object> objects; Vector<Object> objects;
objects.append({ make<SubObject>(1) }); objects.empend(make<SubObject>(1));
objects.append({ make<SubObject>(2) }); objects.empend(make<SubObject>(2));
objects.append({ make<SubObject>(3) }); objects.empend(make<SubObject>(3));
EXPECT_EQ(objects.size(), 3); EXPECT_EQ(objects.size(), 3);
Vector<Object> more_objects; Vector<Object> more_objects;
objects.append({ make<SubObject>(4) }); more_objects.empend(make<SubObject>(4));
objects.append({ make<SubObject>(5) }); more_objects.empend(make<SubObject>(5));
objects.append({ make<SubObject>(6) }); more_objects.empend(make<SubObject>(6));
EXPECT_EQ(more_objects.size(), 3); EXPECT_EQ(more_objects.size(), 4);
objects.prepend(move(more_objects)); objects.prepend(move(more_objects));
EXPECT_EQ(more_objects.size(), 0); EXPECT_EQ(more_objects.size(), 0);
EXPECT_EQ(objects.size(), 6); EXPECT_EQ(objects.size(), 6);
EXPECT_EQ(objects[0].object->value, 4); EXPECT_EQ(objects[0].subobject->value, 4);
EXPECT_EQ(objects[1].object->value, 5); EXPECT_EQ(objects[1].subobject->value, 5);
EXPECT_EQ(objects[2].object->value, 6); EXPECT_EQ(objects[2].subobject->value, 6);
EXPECT_EQ(objects[3].object->value, 1); EXPECT_EQ(objects[3].subobject->value, 1);
EXPECT_EQ(objects[4].object->value, 2); EXPECT_EQ(objects[4].subobject->value, 2);
EXPECT_EQ(objects[5].object->value, 3); EXPECT_EQ(objects[5].subobject->value, 3);
} }
TEST_MAIN(Vector) TEST_MAIN(Vector)