Vector reword + map
This commit is contained in:
+80
-39
@@ -6,13 +6,13 @@ MICROTEST(vector_container, can_init_and_free) {
|
||||
vector_container_t vector = {};
|
||||
malunal_size_t temporary = 0;
|
||||
|
||||
result = vector_container_init(4, 32, libc_allocator(), &vector);
|
||||
result = vector_container_init(4, libc_allocator(), &vector);
|
||||
MICROTEST_EXPECT_NULL(result.domain);
|
||||
|
||||
allocator_mptr_t allocator;
|
||||
result = vector_container_allocator(&vector, &allocator);
|
||||
MICROTEST_EXPECT_NULL(result.domain);
|
||||
MICROTEST_EXPECT_EQ(allocator, libc_allocator());
|
||||
MICROTEST_EXPECT_PTR_EQ(allocator, libc_allocator());
|
||||
|
||||
result = vector_container_stride(&vector, &temporary);
|
||||
MICROTEST_EXPECT_NULL(result.domain);
|
||||
@@ -24,7 +24,7 @@ MICROTEST(vector_container, can_init_and_free) {
|
||||
|
||||
result = vector_container_capacity(&vector, &temporary);
|
||||
MICROTEST_EXPECT_NULL(result.domain);
|
||||
MICROTEST_EXPECT_EQ(temporary, 32);
|
||||
MICROTEST_EXPECT_EQ(temporary, MALUNAL_CONTAINERS_VECTOR_INIT_CAPACITY);
|
||||
|
||||
result = vector_container_free(&vector);
|
||||
MICROTEST_EXPECT_NULL(result.domain);
|
||||
@@ -42,10 +42,49 @@ MICROTEST(vector_container, can_init_and_free) {
|
||||
MICROTEST_EXPECT_EQ(temporary, 0);
|
||||
}
|
||||
|
||||
MICROTEST(vector_container, resize_rounds_to_power_of_two) {
|
||||
error_t result = {};
|
||||
vector_container_t vector = {};
|
||||
vector_container_init(4, libc_allocator(), &vector);
|
||||
|
||||
result = vector_container_resize(&vector, 24);
|
||||
MICROTEST_EXPECT_NULL(result.domain);
|
||||
|
||||
malunal_size_t capacity = 0;
|
||||
vector_container_capacity(&vector, &capacity);
|
||||
MICROTEST_EXPECT_EQ(capacity, 32);
|
||||
printf("Capacity = %d\n", capacity);
|
||||
|
||||
vector_container_free(&vector);
|
||||
}
|
||||
|
||||
MICROTEST(vector_container, resize_perserves_elements) {
|
||||
error_t result = {};
|
||||
vector_container_t vector = {};
|
||||
vector_container_init(4, libc_allocator(), &vector);
|
||||
|
||||
malunal_size_t capacity = 0;
|
||||
vector_container_capacity(&vector, &capacity);
|
||||
for (malunal_int32_t index = 0; index < capacity; index++) {
|
||||
malunal_int32_t value = (index + 1) * 10;
|
||||
vector_container_append(&vector, &value);
|
||||
}
|
||||
|
||||
result = vector_container_resize(&vector, 24);
|
||||
MICROTEST_EXPECT_NULL(result.domain);
|
||||
for (malunal_int32_t index = 0; index < capacity; index++) {
|
||||
malunal_int32_t out = 0;
|
||||
vector_container_get(&vector, index, &out);
|
||||
MICROTEST_EXPECT_EQ(out, (index + 1) * 10);
|
||||
}
|
||||
|
||||
vector_container_free(&vector);
|
||||
}
|
||||
|
||||
MICROTEST(vector_container, append_then_get_round_trips_value) {
|
||||
error_t result = {};
|
||||
vector_container_t vector = {};
|
||||
vector_container_init(4, 32, libc_allocator(), &vector);
|
||||
vector_container_init(4, libc_allocator(), &vector);
|
||||
|
||||
malunal_int32_t a = 42;
|
||||
result = vector_container_append(&vector, &a);
|
||||
@@ -67,24 +106,26 @@ MICROTEST(vector_container, append_then_get_round_trips_value) {
|
||||
MICROTEST(vector_container, append_past_capacity_grows_and_preserves) {
|
||||
error_t result = {};
|
||||
vector_container_t vector = {};
|
||||
vector_container_init(4, 4, libc_allocator(), &vector);
|
||||
vector_container_init(4, libc_allocator(), &vector);
|
||||
|
||||
malunal_int32_t vals[5] = { 10, 20, 30, 40, 50 };
|
||||
for (malunal_int32_t index = 0; index < 5; index++) {
|
||||
result = vector_container_append(&vector, &vals[index]);
|
||||
malunal_size_t oldcap = 0;
|
||||
vector_container_capacity(&vector, &oldcap);
|
||||
for (malunal_int32_t index = 0; index < oldcap + 1; index++) {
|
||||
malunal_int32_t value = (index + 1) * 10;
|
||||
result = vector_container_append(&vector, &value);
|
||||
MICROTEST_EXPECT_NULL(result.domain);
|
||||
}
|
||||
|
||||
malunal_size_t capacity = 0;
|
||||
malunal_size_t count = 0;
|
||||
vector_container_capacity(&vector, &capacity);
|
||||
malunal_size_t newcap = 0;
|
||||
malunal_size_t count = 0;
|
||||
vector_container_capacity(&vector, &newcap);
|
||||
vector_container_count(&vector, &count);
|
||||
MICROTEST_EXPECT_GT(capacity, 5);
|
||||
MICROTEST_EXPECT_EQ(count, 5);
|
||||
for (malunal_int32_t index = 0; index < 5; index++) {
|
||||
MICROTEST_EXPECT_GE(newcap, oldcap * 2);
|
||||
MICROTEST_EXPECT_EQ(count, oldcap + 1);
|
||||
for (malunal_int32_t index = 0; index < oldcap; index++) {
|
||||
malunal_int32_t out = 0;
|
||||
vector_container_get(&vector, index, &out);
|
||||
MICROTEST_EXPECT_EQ(out, vals[index]);
|
||||
MICROTEST_EXPECT_EQ(out, (index + 1) * 10);
|
||||
}
|
||||
|
||||
vector_container_free(&vector);
|
||||
@@ -93,7 +134,7 @@ MICROTEST(vector_container, append_past_capacity_grows_and_preserves) {
|
||||
MICROTEST(vector_container, remove_first_matching_element) {
|
||||
error_t result = {};
|
||||
vector_container_t vector = {};
|
||||
vector_container_init(4, 32, libc_allocator(), &vector);
|
||||
vector_container_init(4, libc_allocator(), &vector);
|
||||
|
||||
malunal_int32_t vals[3] = { 10, 20, 30 };
|
||||
vector_container_append(&vector, &vals[0]);
|
||||
@@ -117,7 +158,7 @@ MICROTEST(vector_container, remove_first_matching_element) {
|
||||
MICROTEST(vector_container, remove_of_absent_element_succeeds) {
|
||||
error_t result = {};
|
||||
vector_container_t vector = {};
|
||||
vector_container_init(4, 32, libc_allocator(), &vector);
|
||||
vector_container_init(4, libc_allocator(), &vector);
|
||||
|
||||
malunal_int32_t a = 1;
|
||||
vector_container_append(&vector, &a);
|
||||
@@ -134,7 +175,7 @@ MICROTEST(vector_container, remove_of_absent_element_succeeds) {
|
||||
MICROTEST(vector_container, contains_finds_a_present_element) {
|
||||
error_t result = {};
|
||||
vector_container_t vector = {};
|
||||
vector_container_init(4, 32, libc_allocator(), &vector);
|
||||
vector_container_init(4, libc_allocator(), &vector);
|
||||
|
||||
malunal_int32_t a = 1;
|
||||
malunal_int32_t b = 2;
|
||||
@@ -150,7 +191,7 @@ MICROTEST(vector_container, contains_finds_a_present_element) {
|
||||
MICROTEST(vector_container, contains_rejects_an_absent_element) {
|
||||
error_t result = {};
|
||||
vector_container_t vector = {};
|
||||
vector_container_init(4, 32, libc_allocator(), &vector);
|
||||
vector_container_init(4, libc_allocator(), &vector);
|
||||
|
||||
malunal_int32_t a = 1;
|
||||
malunal_int32_t b = 2;
|
||||
@@ -159,8 +200,8 @@ MICROTEST(vector_container, contains_rejects_an_absent_element) {
|
||||
|
||||
malunal_int32_t missing = 404;
|
||||
result = vector_container_contains(&vector, &missing);
|
||||
MICROTEST_EXPECT_EQ(result.domain, &ERROR_DOMAIN_CONTAINER_T);
|
||||
MICROTEST_EXPECT_EQ(result.code, CONTAINER_ERROR_FAILURE);
|
||||
MICROTEST_EXPECT_PTR_EQ(result.domain, &ERROR_DOMAIN_CONTAINER_T);
|
||||
MICROTEST_EXPECT_EQ(result.code, CONTAINER_ERROR_FAILURE);
|
||||
|
||||
vector_container_free(&vector);
|
||||
}
|
||||
@@ -168,7 +209,7 @@ MICROTEST(vector_container, contains_rejects_an_absent_element) {
|
||||
MICROTEST(vector_container, clear_resets_count_but_keeps_capacity) {
|
||||
error_t result = {};
|
||||
vector_container_t vector = {};
|
||||
vector_container_init(4, 32, libc_allocator(), &vector);
|
||||
vector_container_init(4, libc_allocator(), &vector);
|
||||
|
||||
malunal_int32_t a = 1;
|
||||
malunal_int32_t b = 2;
|
||||
@@ -182,8 +223,8 @@ MICROTEST(vector_container, clear_resets_count_but_keeps_capacity) {
|
||||
malunal_size_t capacity = 0;
|
||||
vector_container_count(&vector, &count);
|
||||
vector_container_capacity(&vector, &capacity);
|
||||
MICROTEST_EXPECT_EQ(count, 0);
|
||||
MICROTEST_EXPECT_EQ(capacity, 32);
|
||||
MICROTEST_EXPECT_EQ(count, 0);
|
||||
MICROTEST_EXPECT_EQ(capacity, MALUNAL_CONTAINERS_VECTOR_INIT_CAPACITY);
|
||||
|
||||
vector_container_free(&vector);
|
||||
}
|
||||
@@ -191,7 +232,7 @@ MICROTEST(vector_container, clear_resets_count_but_keeps_capacity) {
|
||||
MICROTEST(vector_container, set_overwrites_existing_element) {
|
||||
error_t result = {};
|
||||
vector_container_t vector = {};
|
||||
vector_container_init(4, 32, libc_allocator(), &vector);
|
||||
vector_container_init(4, libc_allocator(), &vector);
|
||||
|
||||
malunal_int32_t vals[3] = { 10, 20, 333 };
|
||||
vector_container_append(&vector, &vals[0]);
|
||||
@@ -210,18 +251,18 @@ MICROTEST(vector_container, set_overwrites_existing_element) {
|
||||
MICROTEST(vector_container, get_set_reports_out_of_bounds_at_count) {
|
||||
error_t result = {};
|
||||
vector_container_t vector = {};
|
||||
vector_container_init(4, 32, libc_allocator(), &vector);
|
||||
vector_container_init(4, libc_allocator(), &vector);
|
||||
|
||||
malunal_int32_t a = 10;
|
||||
malunal_int32_t out = 0;
|
||||
result = vector_container_get(&vector, 4, &out);
|
||||
MICROTEST_EXPECT_EQ(result.domain, &ERROR_DOMAIN_CONTAINER_T);
|
||||
MICROTEST_EXPECT_EQ(result.code, CONTAINER_ERROR_OUT_OF_BOUNDS);
|
||||
MICROTEST_EXPECT_PTR_EQ(result.domain, &ERROR_DOMAIN_CONTAINER_T);
|
||||
MICROTEST_EXPECT_EQ(result.code, CONTAINER_ERROR_OUT_OF_BOUNDS);
|
||||
|
||||
result = NO_ERROR;
|
||||
result = vector_container_set(&vector, 4, &out);
|
||||
MICROTEST_EXPECT_EQ(result.domain, &ERROR_DOMAIN_CONTAINER_T);
|
||||
MICROTEST_EXPECT_EQ(result.code, CONTAINER_ERROR_OUT_OF_BOUNDS);
|
||||
MICROTEST_EXPECT_PTR_EQ(result.domain, &ERROR_DOMAIN_CONTAINER_T);
|
||||
MICROTEST_EXPECT_EQ(result.code, CONTAINER_ERROR_OUT_OF_BOUNDS);
|
||||
|
||||
vector_container_free(&vector);
|
||||
}
|
||||
@@ -229,7 +270,7 @@ MICROTEST(vector_container, get_set_reports_out_of_bounds_at_count) {
|
||||
MICROTEST(vector_container, insert_at_end_appends_value) {
|
||||
error_t result = {};
|
||||
vector_container_t vector = {};
|
||||
vector_container_init(4, 32, libc_allocator(), &vector);
|
||||
vector_container_init(4, libc_allocator(), &vector);
|
||||
|
||||
malunal_int32_t vals[3] = { 10, 20, 30 };
|
||||
vector_container_append(&vector, &vals[0]);
|
||||
@@ -248,7 +289,7 @@ MICROTEST(vector_container, insert_at_end_appends_value) {
|
||||
MICROTEST(vector_container, insert_at_middle_shifts_later_elements) {
|
||||
error_t result = {};
|
||||
vector_container_t vector = {};
|
||||
vector_container_init(4, 32, libc_allocator(), &vector);
|
||||
vector_container_init(4, libc_allocator(), &vector);
|
||||
|
||||
malunal_int32_t vals[3] = { 10, 20, 30 };
|
||||
vector_container_append(&vector, &vals[0]);
|
||||
@@ -271,7 +312,7 @@ MICROTEST(vector_container, insert_at_middle_shifts_later_elements) {
|
||||
MICROTEST(vector_container, remove_at_last_preserves_earlier_elements) {
|
||||
error_t result = {};
|
||||
vector_container_t vector = {};
|
||||
vector_container_init(4, 32, libc_allocator(), &vector);
|
||||
vector_container_init(4, libc_allocator(), &vector);
|
||||
|
||||
malunal_int32_t vals[3] = { 10, 20, 30 };
|
||||
vector_container_append(&vector, &vals[0]);
|
||||
@@ -297,7 +338,7 @@ MICROTEST(vector_container, remove_at_last_preserves_earlier_elements) {
|
||||
MICROTEST(vector_container, remove_at_middle_shifts_later_elements_left) {
|
||||
error_t result = {};
|
||||
vector_container_t vector = {};
|
||||
vector_container_init(4, 32, libc_allocator(), &vector);
|
||||
vector_container_init(4, libc_allocator(), &vector);
|
||||
|
||||
malunal_int32_t vals[3] = { 10, 20, 30 };
|
||||
vector_container_append(&vector, &vals[0]);
|
||||
@@ -323,11 +364,11 @@ MICROTEST(vector_container, remove_at_middle_shifts_later_elements_left) {
|
||||
MICROTEST(vector_container, remove_at_on_empty_vector_is_out_of_bounds) {
|
||||
error_t result = {};
|
||||
vector_container_t vector = {};
|
||||
vector_container_init(4, 32, libc_allocator(), &vector);
|
||||
vector_container_init(4, libc_allocator(), &vector);
|
||||
|
||||
result = vector_container_remove_at(&vector, 0);
|
||||
MICROTEST_EXPECT_EQ(result.domain, &ERROR_DOMAIN_CONTAINER_T);
|
||||
MICROTEST_EXPECT_EQ(result.code, CONTAINER_ERROR_OUT_OF_BOUNDS);
|
||||
MICROTEST_EXPECT_PTR_EQ(result.domain, &ERROR_DOMAIN_CONTAINER_T);
|
||||
MICROTEST_EXPECT_EQ(result.code, CONTAINER_ERROR_OUT_OF_BOUNDS);
|
||||
|
||||
vector_container_free(&vector);
|
||||
}
|
||||
@@ -335,7 +376,7 @@ MICROTEST(vector_container, remove_at_on_empty_vector_is_out_of_bounds) {
|
||||
MICROTEST(vector_container, index_of_finds_present_element) {
|
||||
error_t result = {};
|
||||
vector_container_t vector = {};
|
||||
vector_container_init(4, 32, libc_allocator(), &vector);
|
||||
vector_container_init(4, libc_allocator(), &vector);
|
||||
|
||||
malunal_int32_t vals[3] = { 50, 60, 70 };
|
||||
vector_container_append(&vector, &vals[0]);
|
||||
@@ -353,7 +394,7 @@ MICROTEST(vector_container, index_of_finds_present_element) {
|
||||
MICROTEST(vector_container, index_of_reports_missing_element) {
|
||||
error_t result = {};
|
||||
vector_container_t vector = {};
|
||||
vector_container_init(4, 32, libc_allocator(), &vector);
|
||||
vector_container_init(4, libc_allocator(), &vector);
|
||||
|
||||
malunal_int32_t a = 50;
|
||||
vector_container_append(&vector, &a);
|
||||
|
||||
Reference in New Issue
Block a user