diff --git a/Sources/Objectively/Vector.c b/Sources/Objectively/Vector.c index 85db78d..72aa678 100644 --- a/Sources/Objectively/Vector.c +++ b/Sources/Objectively/Vector.c @@ -200,6 +200,7 @@ static Vector *initWithElements(Vector *self, size_t size, size_t count, ident e self = $(self, initWithSize, size); if (self) { + self->capacity = count; self->count = count; self->elements = elements; } diff --git a/Tests/Objectively/Vector.c b/Tests/Objectively/Vector.c index 228b791..0e42096 100644 --- a/Tests/Objectively/Vector.c +++ b/Tests/Objectively/Vector.c @@ -159,8 +159,22 @@ START_TEST(initWithElements) { ck_assert_ptr_eq(_Vector(), classof(vector)); ck_assert_int_eq(3, vector->count); + ck_assert_int_eq(3, vector->capacity); ck_assert_ptr_eq(foo, vector->elements); + for (int i = 0; i < 3; i++) { + $(vector, add, &(Foo) { .bar = i }); + } + + ck_assert_int_eq(6, vector->count); + ck_assert_int_le(6, vector->capacity); + ck_assert_int_eq(2, VectorElement(vector, Foo, 5)->bar); + + Vector *copy = (Vector *) $((Object *) vector, copy); + ck_assert_int_eq(6, copy->count); + ck_assert_int_eq(2, VectorElement(copy, Foo, 5)->bar); + + release(copy); release(vector); } END_TEST