Add darray remove operations
This commit is contained in:
+105
-20
@@ -561,24 +561,19 @@ void dqn_darray_test()
|
||||
// Test basic insert
|
||||
{
|
||||
DqnV2 va = dqn_v2(5, 10);
|
||||
DQN_ASSERT(DQN_DARRAY_PUSH(&vecDArray, &va));
|
||||
DQN_DARRAY_PUSH(&vecDArray, va);
|
||||
|
||||
DqnV2 vb = vecDArray[0];
|
||||
DQN_ASSERT(dqn_v2_equals(va, vb));
|
||||
|
||||
DQN_ASSERT(dqn_darray_get_capacity(vecDArray) == 1);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(vecDArray) == 1);
|
||||
|
||||
DqnV2 *empty = NULL;
|
||||
DQN_ASSERT(DQN_DARRAY_PUSH(NULL, empty) == false);
|
||||
DQN_ASSERT(DQN_DARRAY_PUSH(NULL, &va) == false);
|
||||
DQN_ASSERT(DQN_DARRAY_PUSH(&vecDArray, empty) == false);
|
||||
}
|
||||
|
||||
// Test array resizing and freeing
|
||||
{
|
||||
DqnV2 va = dqn_v2(10, 15);
|
||||
DQN_DARRAY_PUSH(&vecDArray, &va);
|
||||
DQN_DARRAY_PUSH(&vecDArray, va);
|
||||
|
||||
DqnV2 vb = vecDArray[0];
|
||||
DQN_ASSERT(dqn_v2_equals(va, vb) == false);
|
||||
@@ -589,44 +584,44 @@ void dqn_darray_test()
|
||||
DQN_ASSERT(dqn_darray_get_capacity(vecDArray) == 2);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(vecDArray) == 2);
|
||||
|
||||
DQN_DARRAY_PUSH(&vecDArray, &va);
|
||||
DQN_DARRAY_PUSH(&vecDArray, va);
|
||||
DQN_ASSERT(dqn_darray_get_capacity(vecDArray) == 3);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(vecDArray) == 3);
|
||||
|
||||
DQN_DARRAY_PUSH(&vecDArray, &va);
|
||||
DQN_DARRAY_PUSH(&vecDArray, va);
|
||||
DQN_ASSERT(dqn_darray_get_capacity(vecDArray) == 4);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(vecDArray) == 4);
|
||||
|
||||
DQN_DARRAY_PUSH(&vecDArray, &va);
|
||||
DQN_DARRAY_PUSH(&vecDArray, va);
|
||||
DQN_ASSERT(dqn_darray_get_capacity(vecDArray) == 5);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(vecDArray) == 5);
|
||||
|
||||
DQN_DARRAY_PUSH(&vecDArray, &va);
|
||||
DQN_DARRAY_PUSH(&vecDArray, va);
|
||||
DQN_ASSERT(dqn_darray_get_capacity(vecDArray) == 6);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(vecDArray) == 6);
|
||||
|
||||
DQN_DARRAY_PUSH(&vecDArray, &va);
|
||||
DQN_DARRAY_PUSH(&vecDArray, va);
|
||||
DQN_ASSERT(dqn_darray_get_capacity(vecDArray) == 7);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(vecDArray) == 7);
|
||||
|
||||
DQN_DARRAY_PUSH(&vecDArray, &va);
|
||||
DQN_DARRAY_PUSH(&vecDArray, va);
|
||||
DQN_ASSERT(dqn_darray_get_capacity(vecDArray) == 8);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(vecDArray) == 8);
|
||||
|
||||
DQN_DARRAY_PUSH(&vecDArray, &va);
|
||||
DQN_DARRAY_PUSH(&vecDArray, va);
|
||||
DQN_ASSERT(dqn_darray_get_capacity(vecDArray) == 9);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(vecDArray) == 9);
|
||||
|
||||
DQN_DARRAY_PUSH(&vecDArray, &va);
|
||||
DQN_DARRAY_PUSH(&vecDArray, va);
|
||||
DQN_ASSERT(dqn_darray_get_capacity(vecDArray) == 10);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(vecDArray) == 10);
|
||||
|
||||
DQN_DARRAY_PUSH(&vecDArray, &va);
|
||||
DQN_DARRAY_PUSH(&vecDArray, va);
|
||||
DQN_ASSERT(dqn_darray_get_capacity(vecDArray) == 12);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(vecDArray) == 11);
|
||||
|
||||
DqnV2 vc = dqn_v2(90, 100);
|
||||
DQN_DARRAY_PUSH(&vecDArray, &vc);
|
||||
DQN_DARRAY_PUSH(&vecDArray, vc);
|
||||
DQN_ASSERT(dqn_darray_get_capacity(vecDArray) == 12);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(vecDArray) == 12);
|
||||
DQN_ASSERT(dqn_v2_equals(vc, vecDArray[11]));
|
||||
@@ -641,11 +636,101 @@ void dqn_darray_test()
|
||||
DQN_ASSERT(dqn_darray_get_capacity(array) == 1);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(array) == 0);
|
||||
|
||||
f32 *empty = NULL;
|
||||
DQN_ASSERT(DQN_DARRAY_PUSH(NULL, empty) == false);
|
||||
DQN_ASSERT(DQN_DARRAY_PUSH(&array, empty) == false);
|
||||
dqn_darray_free(array);
|
||||
}
|
||||
|
||||
{
|
||||
DqnV2 a = dqn_v2(1, 2);
|
||||
DqnV2 b = dqn_v2(3, 4);
|
||||
DqnV2 c = dqn_v2(5, 6);
|
||||
DqnV2 d = dqn_v2(7, 8);
|
||||
|
||||
DqnV2 *array = DQN_DARRAY_INIT(DqnV2, 16);
|
||||
DQN_ASSERT(array);
|
||||
DQN_ASSERT(dqn_darray_remove(array, 0) == false);
|
||||
DQN_ASSERT(dqn_darray_get_capacity(array) == 16);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(array) == 0);
|
||||
|
||||
DQN_ASSERT(dqn_darray_clear(array));
|
||||
DQN_ASSERT(dqn_darray_get_capacity(array) == 16);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(array) == 0);
|
||||
|
||||
DQN_DARRAY_PUSH(&array, a);
|
||||
DQN_DARRAY_PUSH(&array, b);
|
||||
DQN_DARRAY_PUSH(&array, c);
|
||||
DQN_DARRAY_PUSH(&array, d);
|
||||
DQN_ASSERT(dqn_darray_get_capacity(array) == 16);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(array) == 4);
|
||||
|
||||
DQN_ASSERT(dqn_darray_remove(array, 0));
|
||||
DQN_ASSERT(dqn_v2_equals(array[0], d));
|
||||
DQN_ASSERT(dqn_v2_equals(array[1], b));
|
||||
DQN_ASSERT(dqn_v2_equals(array[2], c));
|
||||
DQN_ASSERT(dqn_darray_get_capacity(array) == 16);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(array) == 3);
|
||||
|
||||
DQN_ASSERT(dqn_darray_remove(array, 2));
|
||||
DQN_ASSERT(dqn_v2_equals(array[0], d));
|
||||
DQN_ASSERT(dqn_v2_equals(array[1], b));
|
||||
DQN_ASSERT(dqn_darray_get_capacity(array) == 16);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(array) == 2);
|
||||
|
||||
DQN_ASSERT(dqn_darray_remove(array, 100) == false);
|
||||
DQN_ASSERT(dqn_v2_equals(array[0], d));
|
||||
DQN_ASSERT(dqn_v2_equals(array[1], b));
|
||||
DQN_ASSERT(dqn_darray_get_capacity(array) == 16);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(array) == 2);
|
||||
|
||||
DQN_ASSERT(dqn_darray_clear(array));
|
||||
DQN_ASSERT(dqn_darray_get_capacity(array) == 16);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(array) == 0);
|
||||
|
||||
dqn_darray_free(array);
|
||||
}
|
||||
|
||||
{
|
||||
DqnV2 a = dqn_v2(1, 2);
|
||||
DqnV2 b = dqn_v2(3, 4);
|
||||
DqnV2 c = dqn_v2(5, 6);
|
||||
DqnV2 d = dqn_v2(7, 8);
|
||||
|
||||
DqnV2 *array = DQN_DARRAY_INIT(DqnV2, 16);
|
||||
DQN_ASSERT(array);
|
||||
|
||||
DQN_DARRAY_PUSH(&array, a);
|
||||
DQN_DARRAY_PUSH(&array, b);
|
||||
DQN_DARRAY_PUSH(&array, c);
|
||||
DQN_DARRAY_PUSH(&array, d);
|
||||
DQN_ASSERT(dqn_darray_get_capacity(array) == 16);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(array) == 4);
|
||||
|
||||
dqn_darray_remove_stable(array, 0);
|
||||
DQN_ASSERT(dqn_v2_equals(array[0], b));
|
||||
DQN_ASSERT(dqn_v2_equals(array[1], c));
|
||||
DQN_ASSERT(dqn_v2_equals(array[2], d));
|
||||
DQN_ASSERT(dqn_darray_get_capacity(array) == 16);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(array) == 3);
|
||||
|
||||
dqn_darray_remove_stable(array, 1);
|
||||
DQN_ASSERT(dqn_v2_equals(array[0], b));
|
||||
DQN_ASSERT(dqn_v2_equals(array[1], d));
|
||||
DQN_ASSERT(dqn_darray_get_capacity(array) == 16);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(array) == 2);
|
||||
|
||||
dqn_darray_remove_stable(array, 1);
|
||||
DQN_ASSERT(dqn_v2_equals(array[0], b));
|
||||
DQN_ASSERT(dqn_darray_get_capacity(array) == 16);
|
||||
DQN_ASSERT(dqn_darray_get_num_items(array) == 1);
|
||||
dqn_darray_free(array);
|
||||
}
|
||||
|
||||
{
|
||||
DQN_ASSERT(dqn_darray_clear(NULL) == false);
|
||||
DQN_ASSERT(dqn_darray_clear(NULL) == false);
|
||||
DQN_ASSERT(dqn_darray_free(NULL) == false);
|
||||
}
|
||||
|
||||
|
||||
printf("dqn_darray_test(): Completed successfully\n");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user