Make c90 compatible (#26)

This commit is contained in:
Bailey Thompson
2019-05-02 14:49:36 -04:00
committed by GitHub
parent 7c0bb4154d
commit 5fe6b40c3e
25 changed files with 219 additions and 169 deletions

View File

@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.5.1)
project(Containers C)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD 90)
set(CMAKE_C_FLAGS "-g -O0 -Wall -fprofile-arcs -ftest-coverage")

View File

@@ -3,7 +3,7 @@
[![Documentation](https://codedocs.xyz/bkthomps/Containers.svg)](https://codedocs.xyz/bkthomps/Containers/)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/be77f904a65b4bd0b991df85e6cb37f0)](https://www.codacy.com/app/bkthomps/Containers?utm_source=github.com&utm_medium=referral&utm_content=bkthomps/Containers&utm_campaign=Badge_Grade)
[![CodeFactor](https://www.codefactor.io/repository/github/bkthomps/containers/badge)](https://www.codefactor.io/repository/github/bkthomps/containers)
[![Language](https://img.shields.io/badge/language-C11+-orange.svg)](https://en.wikipedia.org/wiki/C_(programming_language))
[![Language](https://img.shields.io/badge/language-C90+-orange.svg)](https://en.wikipedia.org/wiki/C_(programming_language))
[![MIT license](https://img.shields.io/badge/license-MIT-blue.svg)](https://lbesson.mit-license.org/)
# Containers

View File

@@ -119,11 +119,12 @@ int deque_trim(deque me)
if (!new_block) {
return -ENOMEM;
}
for (int i = 0; i < start_block; i++) {
int i;
for (i = 0; i < start_block; i++) {
const struct node block_item = me->block[i];
free(block_item.data);
}
for (int i = end_block + 1; i < me->block_count; i++) {
for (i = end_block + 1; i < me->block_count; i++) {
const struct node block_item = me->block[i];
free(block_item.data);
}
@@ -146,7 +147,8 @@ int deque_trim(deque me)
*/
void deque_copy_to_array(void *const arr, deque me)
{
for (int i = 0; i < deque_size(me); i++) {
int i;
for (i = 0; i < deque_size(me); i++) {
deque_get_at(arr + i * me->data_size, me, i);
}
}
@@ -187,7 +189,8 @@ int deque_push_front(deque me, void *const data)
block_index = added_blocks - 1;
me->start_index += added_blocks * BLOCK_SIZE;
me->end_index += added_blocks * BLOCK_SIZE;
for (int i = 0; i < added_blocks; i++) {
int i;
for (i = 0; i < added_blocks; i++) {
struct node *const block_item = &me->block[i];
block_item->data = NULL;
}
@@ -230,7 +233,8 @@ int deque_push_back(deque me, void *const data)
}
me->block = temp;
me->block_count = new_block_count;
for (int i = block_index; i < me->block_count; i++) {
int i;
for (i = block_index; i < me->block_count; i++) {
struct node *const block_item = &me->block[i];
block_item->data = NULL;
}
@@ -414,7 +418,8 @@ int deque_clear(deque me)
free(temp_block);
return -ENOMEM;
}
for (int i = 0; i < me->block_count; i++) {
int i;
for (i = 0; i < me->block_count; i++) {
const struct node block_item = me->block[i];
free(block_item.data);
}
@@ -437,7 +442,8 @@ int deque_clear(deque me)
*/
deque deque_destroy(deque me)
{
for (int i = 0; i < me->block_count; i++) {
int i;
for (i = 0; i < me->block_count; i++) {
const struct node block_item = me->block[i];
free(block_item.data);
}

View File

@@ -107,7 +107,8 @@ void forward_list_copy_to_array(void *const arr, forward_list me)
static struct node *forward_list_get_node_at(forward_list me, const int index)
{
struct node *traverse = me->head;
for (int i = 0; i < index; i++) {
int i;
for (i = 0; i < index; i++) {
traverse = traverse->next;
}
return traverse;

View File

@@ -109,7 +109,8 @@ void list_copy_to_array(void *const arr, list me)
static struct node *list_get_node_from_head(list me, const int index)
{
struct node *traverse = me->head;
for (int i = 0; i < index; i++) {
int i;
for (i = 0; i < index; i++) {
traverse = traverse->next;
}
return traverse;
@@ -121,7 +122,8 @@ static struct node *list_get_node_from_head(list me, const int index)
static struct node *list_get_node_from_tail(list me, const int index)
{
struct node *traverse = me->tail;
for (int i = me->item_count - 1; i > index; i--) {
int i;
for (i = me->item_count - 1; i > index; i--) {
traverse = traverse->prev;
}
return traverse;

View File

@@ -137,7 +137,8 @@ int unordered_map_rehash(unordered_map me)
me->buckets = old_buckets;
return -ENOMEM;
}
for (int i = 0; i < me->capacity; i++) {
int i;
for (i = 0; i < me->capacity; i++) {
struct node *traverse = old_buckets[i];
while (traverse) {
struct node *const backup = traverse->next;
@@ -188,7 +189,8 @@ static int unordered_map_resize(unordered_map me)
return -ENOMEM;
}
me->capacity = new_capacity;
for (int i = 0; i < old_capacity; i++) {
int i;
for (i = 0; i < old_capacity; i++) {
struct node *traverse = old_buckets[i];
while (traverse) {
struct node *const backup = traverse->next;
@@ -387,7 +389,8 @@ int unordered_map_clear(unordered_map me)
if (!temp) {
return -ENOMEM;
}
for (int i = 0; i < me->capacity; i++) {
int i;
for (i = 0; i < me->capacity; i++) {
struct node *traverse = me->buckets[i];
while (traverse) {
struct node *const backup = traverse;

View File

@@ -157,7 +157,8 @@ int unordered_multimap_rehash(unordered_multimap me)
me->buckets = old_buckets;
return -ENOMEM;
}
for (int i = 0; i < me->capacity; i++) {
int i;
for (i = 0; i < me->capacity; i++) {
struct node *traverse = old_buckets[i];
while (traverse) {
struct node *const backup = traverse->next;
@@ -208,7 +209,8 @@ static int unordered_multimap_resize(unordered_multimap me)
return -ENOMEM;
}
me->capacity = new_capacity;
for (int i = 0; i < old_capacity; i++) {
int i;
for (i = 0; i < old_capacity; i++) {
struct node *traverse = old_buckets[i];
while (traverse) {
struct node *const backup = traverse->next;
@@ -509,7 +511,8 @@ int unordered_multimap_clear(unordered_multimap me)
if (!temp) {
return -ENOMEM;
}
for (int i = 0; i < me->capacity; i++) {
int i;
for (i = 0; i < me->capacity; i++) {
struct node *traverse = me->buckets[i];
while (traverse) {
struct node *const backup = traverse;

View File

@@ -135,7 +135,8 @@ int unordered_multiset_rehash(unordered_multiset me)
me->buckets = old_buckets;
return -ENOMEM;
}
for (int i = 0; i < me->capacity; i++) {
int i;
for (i = 0; i < me->capacity; i++) {
struct node *traverse = old_buckets[i];
while (traverse) {
struct node *const backup = traverse->next;
@@ -186,7 +187,8 @@ static int unordered_multiset_resize(unordered_multiset me)
return -ENOMEM;
}
me->capacity = new_capacity;
for (int i = 0; i < old_capacity; i++) {
int i;
for (i = 0; i < old_capacity; i++) {
struct node *traverse = old_buckets[i];
while (traverse) {
struct node *const backup = traverse->next;
@@ -415,7 +417,8 @@ int unordered_multiset_clear(unordered_multiset me)
if (!temp) {
return -ENOMEM;
}
for (int i = 0; i < me->capacity; i++) {
int i;
for (i = 0; i < me->capacity; i++) {
struct node *traverse = me->buckets[i];
while (traverse) {
struct node *const backup = traverse;

View File

@@ -131,7 +131,8 @@ int unordered_set_rehash(unordered_set me)
me->buckets = old_buckets;
return -ENOMEM;
}
for (int i = 0; i < me->capacity; i++) {
int i;
for (i = 0; i < me->capacity; i++) {
struct node *traverse = old_buckets[i];
while (traverse) {
struct node *const backup = traverse->next;
@@ -182,7 +183,8 @@ static int unordered_set_resize(unordered_set me)
return -ENOMEM;
}
me->capacity = new_capacity;
for (int i = 0; i < old_capacity; i++) {
int i;
for (i = 0; i < old_capacity; i++) {
struct node *traverse = old_buckets[i];
while (traverse) {
struct node *const backup = traverse->next;
@@ -344,7 +346,8 @@ int unordered_set_clear(unordered_set me)
if (!temp) {
return -ENOMEM;
}
for (int i = 0; i < me->capacity; i++) {
int i;
for (i = 0; i < me->capacity; i++) {
struct node *traverse = me->buckets[i];
while (traverse) {
struct node *const backup = traverse;

View File

@@ -8,29 +8,30 @@ void test_array(void)
array me = array_init(10, sizeof(int));
assert(me);
assert(array_size(me) == 10);
for (int i = 0; i < 10; i++) {
int i;
for (i = 0; i < 10; i++) {
int get = 0xdeadbeef;
array_get(&get, me, i);
assert(get == 0);
}
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
int get = 0xdeadbeef;
array_set(me, i, &i);
array_get(&get, me, i);
assert(get == i);
}
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
int get = 0xdeadbeef;
array_get(&get, me, i);
assert(get == i);
}
int arr[10] = {0};
array_copy_to_array(arr, me);
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
assert(arr[i] == i);
}
int *const data = array_get_data(me);
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
assert(data[i] == i);
}
int get = 0xdeadbeef;

View File

@@ -9,7 +9,8 @@ void test_deque(void)
assert(me);
assert(deque_size(me) == 0);
assert(deque_is_empty(me));
for (int i = 0; i < 10; i++) {
int i;
for (i = 0; i < 10; i++) {
deque_push_front(me, &val[i]);
int get = 0;
deque_get_first(&get, me);
@@ -19,7 +20,7 @@ void test_deque(void)
assert(!deque_is_empty(me));
int get_arr[10] = {0};
deque_copy_to_array(get_arr, me);
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
int get = 0;
deque_get_at(&get, me, i);
assert(get == val[9 - i]);
@@ -28,13 +29,13 @@ void test_deque(void)
int trimmed[5] = {0};
int get = 5;
deque_trim(me);
for (int i = 0; i < 7; i++) {
for (i = 0; i < 7; i++) {
deque_pop_back(&get, me);
assert(get == val[i]);
}
deque_copy_to_array(trimmed, me);
assert(deque_size(me) == 3);
for (int i = 0; i < 3; i++) {
for (i = 0; i < 3; i++) {
assert(10 - i == trimmed[i]);
}
int add = 3;
@@ -109,7 +110,7 @@ void test_deque(void)
assert(!me);
// Testing automatic trim
me = deque_init(sizeof(int));
for (int i = 0; i < 100; i++) {
for (i = 0; i < 100; i++) {
deque_push_back(me, &i);
deque_pop_front(&get, me);
}

View File

@@ -9,7 +9,8 @@ void test_forward_list(void)
assert(me);
assert(forward_list_size(me) == 0);
assert(forward_list_is_empty(me));
for (int i = 0; i < 10; i++) {
int i;
for (i = 0; i < 10; i++) {
forward_list_add_first(me, &val[i]);
assert(forward_list_size(me) == i + 1);
int get = 0;
@@ -20,19 +21,19 @@ void test_forward_list(void)
assert(!forward_list_is_empty(me));
int get_arr[10] = {0};
forward_list_copy_to_array(get_arr, me);
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
int get = 0;
forward_list_get_at(&get, me, i);
assert(get == val[9 - i]);
assert(get_arr[i] == val[9 - i]);
}
for (int i = 0; i < 7; i++) {
for (i = 0; i < 7; i++) {
forward_list_remove_last(me);
}
int trimmed[5] = {0};
forward_list_copy_to_array(trimmed, me);
assert(forward_list_size(me) == 3);
for (int i = 0; i < 3; i++) {
for (i = 0; i < 3; i++) {
assert(10 - i == trimmed[i]);
}
int add = 3;

View File

@@ -9,7 +9,8 @@ void test_list(void)
assert(me);
assert(list_size(me) == 0);
assert(list_is_empty(me));
for (int i = 0; i < 10; i++) {
int i;
for (i = 0; i < 10; i++) {
list_add_first(me, &val[i]);
assert(list_size(me) == i + 1);
int get = 0;
@@ -20,19 +21,19 @@ void test_list(void)
assert(!list_is_empty(me));
int get_arr[10] = {0};
list_copy_to_array(get_arr, me);
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
int get = 0;
list_get_at(&get, me, i);
assert(get == val[9 - i]);
assert(get_arr[i] == val[9 - i]);
}
for (int i = 0; i < 7; i++) {
for (i = 0; i < 7; i++) {
list_remove_last(me);
}
int trimmed[5] = {0};
list_copy_to_array(trimmed, me);
assert(list_size(me) == 3);
for (int i = 0; i < 3; i++) {
for (i = 0; i < 3; i++) {
assert(10 - i == trimmed[i]);
}
int index = list_size(me);

View File

@@ -35,17 +35,19 @@ void test_map(void)
assert(map_size(me) == 2);
assert(map_contains(me, &key));
int val_arr[10] = {5, 9, 4, -5, 0, 6, 1, 5, 7, 2};
for (int i = 0; i < 10; i++) {
int i;
for (i = 0; i < 10; i++) {
map_put(me, &val_arr[i], &value);
assert(map_contains(me, &val_arr[i]));
}
assert(map_size(me) == 9);
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
assert(map_contains(me, &val_arr[i]));
}
for (int i = -100; i < 100; i++) {
int j;
for (i = -100; i < 100; i++) {
bool contains = false;
for (int j = 0; j < 10; j++) {
for (j = 0; j < 10; j++) {
if (val_arr[j] == i) {
contains = true;
}
@@ -93,12 +95,12 @@ void test_map(void)
assert(map_size(me) == 0);
assert(!map_contains(me, &num));
// Add a lot of items and remove individually.
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
map_put(me, &i, &value);
assert(map_contains(me, &i));
}
assert(map_size(me) == 1000);
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
map_remove(me, &i);
assert(!map_contains(me, &i));
}
@@ -108,7 +110,7 @@ void test_map(void)
assert(map_size(me) == 0);
assert(map_is_empty(me));
// Add a lot of items and clear.
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
map_put(me, &i, &value);
assert(map_contains(me, &i));
}
@@ -233,7 +235,7 @@ void test_map(void)
// Add a lot of items.
int count = 0;
bool flip = false;
for (int i = 1234; i < 82400; i++) {
for (i = 1234; i < 82400; i++) {
key = i % 765;
const bool is_already_present = map_contains(me, &key);
map_put(me, &key, &num);
@@ -266,17 +268,17 @@ void test_map(void)
assert(map_size(me) == 2);
assert(map_contains(me, &key));
int c[10] = {5, 9, 4, -5, 0, 6, 1, 5, 7, 2};
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
map_put(me, &c[i], &num);
assert(map_contains(me, &c[i]));
}
assert(map_size(me) == 9);
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
assert(map_contains(me, &c[i]));
}
for (int i = -100; i < 100; i++) {
for (i = -100; i < 100; i++) {
bool contains = false;
for (int j = 0; j < 10; j++) {
for (j = 0; j < 10; j++) {
if (c[j] == i) {
contains = true;
}
@@ -324,12 +326,12 @@ void test_map(void)
assert(map_size(me) == 0);
assert(!map_contains(me, &num));
// Add a lot of items and remove individually.
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
map_put(me, &i, &num);
assert(map_contains(me, &i));
}
assert(map_size(me) == 1000);
for (int i = 5000; i < 5500; i++) {
for (i = 5000; i < 5500; i++) {
map_remove(me, &i);
assert(!map_contains(me, &i));
}
@@ -339,7 +341,7 @@ void test_map(void)
assert(map_size(me) == 0);
assert(map_is_empty(me));
// Add a lot of items and clear.
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
map_put(me, &i, &num);
assert(map_contains(me, &i));
}
@@ -377,11 +379,11 @@ void test_map(void)
map_remove(me, &key);
map_clear(me);
// Allocate many nodes.
for (int i = 8123; i < 12314; i += 3) {
for (i = 8123; i < 12314; i += 3) {
map_put(me, &i, &num);
assert(map_contains(me, &i));
}
for (int i = 13000; i > 8000; i--) {
for (i = 13000; i > 8000; i--) {
map_remove(me, &i);
assert(!map_contains(me, &i));
}
@@ -482,11 +484,11 @@ void test_map(void)
me = map_destroy(me);
assert(!me);
me = map_init(sizeof(int), sizeof(int), compare_int);
for (int i = 4817; i > -2983; i -= 11) {
for (i = 4817; i > -2983; i -= 11) {
map_put(me, &i, &num);
assert(map_contains(me, &i));
}
for (int i = -432; i < 3849; i += 7) {
for (i = -432; i < 3849; i += 7) {
map_remove(me, &i);
assert(!map_contains(me, &i));
}

View File

@@ -41,17 +41,19 @@ void test_multimap(void)
multimap_remove(me, &key, &value);
assert(multimap_size(me) == 0);
int val_arr[10] = {5, 9, 4, -5, 0, 6, 1, 5, 7, 2};
for (int i = 0; i < 10; i++) {
int i;
for (i = 0; i < 10; i++) {
multimap_put(me, &val_arr[i], &value);
assert(multimap_contains(me, &val_arr[i]));
}
assert(multimap_size(me) == 10);
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
assert(multimap_contains(me, &val_arr[i]));
}
for (int i = -100; i < 100; i++) {
int j;
for (i = -100; i < 100; i++) {
bool contains = false;
for (int j = 0; j < 10; j++) {
for (j = 0; j < 10; j++) {
if (val_arr[j] == i) {
contains = true;
}
@@ -113,12 +115,12 @@ void test_multimap(void)
assert(multimap_size(me) == 0);
assert(!multimap_contains(me, &num));
// Add a lot of items and remove individually.
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
multimap_put(me, &i, &value);
assert(multimap_contains(me, &i));
}
assert(multimap_size(me) == 1000);
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
multimap_remove(me, &i, &value);
assert(!multimap_contains(me, &i));
}
@@ -128,7 +130,7 @@ void test_multimap(void)
assert(multimap_size(me) == 0);
assert(multimap_is_empty(me));
// Add a lot of items and clear.
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
multimap_put(me, &i, &value);
assert(multimap_contains(me, &i));
}
@@ -142,7 +144,7 @@ void test_multimap(void)
multimap_put(me, &key, &value);
assert(multimap_size(me) == 1);
key = 7;
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
multimap_put(me, &key, &value);
}
assert(multimap_size(me) == 11);
@@ -263,7 +265,7 @@ void test_multimap(void)
// Add a lot of items.
count = 0;
bool flip = false;
for (int i = 1234; i < 82400; i++) {
for (i = 1234; i < 82400; i++) {
key = i % 765;
multimap_put(me, &key, &num);
assert(multimap_contains(me, &key));
@@ -292,17 +294,17 @@ void test_multimap(void)
assert(multimap_size(me) == 3);
assert(multimap_contains(me, &key));
int c[10] = {5, 9, 4, -5, 0, 6, 1, 5, 7, 2};
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
multimap_put(me, &c[i], &value);
assert(multimap_contains(me, &c[i]));
}
assert(multimap_size(me) == 13);
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
assert(multimap_contains(me, &c[i]));
}
for (int i = -100; i < 100; i++) {
for (i = -100; i < 100; i++) {
bool contains = false;
for (int j = 0; j < 10; j++) {
for (j = 0; j < 10; j++) {
if (c[j] == i) {
contains = true;
}
@@ -352,12 +354,12 @@ void test_multimap(void)
multimap_clear(me);
// Add a lot of items and remove individually.
value = 37;
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
multimap_put(me, &i, &value);
assert(multimap_contains(me, &i));
}
assert(multimap_size(me) == 1000);
for (int i = 5000; i < 5500; i++) {
for (i = 5000; i < 5500; i++) {
multimap_remove(me, &i, &value);
assert(!multimap_contains(me, &i));
}
@@ -367,7 +369,7 @@ void test_multimap(void)
assert(multimap_size(me) == 0);
assert(multimap_is_empty(me));
// Add a lot of items and clear.
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
multimap_put(me, &i, &num);
assert(multimap_contains(me, &i));
}
@@ -406,11 +408,11 @@ void test_multimap(void)
multimap_clear(me);
// Allocate many nodes.
value = 54;
for (int i = 8123; i < 12314; i += 3) {
for (i = 8123; i < 12314; i += 3) {
multimap_put(me, &i, &value);
assert(multimap_contains(me, &i));
}
for (int i = 13000; i > 8000; i--) {
for (i = 13000; i > 8000; i--) {
multimap_remove(me, &i, &value);
assert(!multimap_contains(me, &i));
}
@@ -512,11 +514,11 @@ void test_multimap(void)
assert(!me);
me = multimap_init(sizeof(int), sizeof(int), compare_int, compare_int);
value = 97;
for (int i = 4817; i > -2983; i -= 11) {
for (i = 4817; i > -2983; i -= 11) {
multimap_put(me, &i, &value);
assert(multimap_contains(me, &i));
}
for (int i = -432; i < 3849; i += 7) {
for (i = -432; i < 3849; i += 7) {
multimap_remove(me, &i, &value);
assert(!multimap_contains(me, &i));
}

View File

@@ -38,17 +38,19 @@ void test_multiset(void)
multiset_remove(me, &key);
assert(multiset_size(me) == 0);
int val_arr[10] = {5, 9, 4, -5, 0, 6, 1, 5, 7, 2};
for (int i = 0; i < 10; i++) {
int i;
for (i = 0; i < 10; i++) {
multiset_put(me, &val_arr[i]);
assert(multiset_contains(me, &val_arr[i]));
}
assert(multiset_size(me) == 10);
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
assert(multiset_contains(me, &val_arr[i]));
}
for (int i = -100; i < 100; i++) {
int j;
for (i = -100; i < 100; i++) {
bool contains = false;
for (int j = 0; j < 10; j++) {
for (j = 0; j < 10; j++) {
if (val_arr[j] == i) {
contains = true;
}
@@ -100,12 +102,12 @@ void test_multiset(void)
assert(multiset_size(me) == 0);
assert(!multiset_contains(me, &num));
// Add a lot of items and remove individually.
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
multiset_put(me, &i);
assert(multiset_contains(me, &i));
}
assert(multiset_size(me) == 1000);
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
multiset_remove(me, &i);
assert(!multiset_contains(me, &i));
}
@@ -115,7 +117,7 @@ void test_multiset(void)
assert(multiset_size(me) == 0);
assert(multiset_is_empty(me));
// Add a lot of items and clear.
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
multiset_put(me, &i);
assert(multiset_contains(me, &i));
}
@@ -129,7 +131,7 @@ void test_multiset(void)
multiset_put(me, &key);
assert(multiset_size(me) == 1);
key = 7;
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
multiset_put(me, &key);
}
assert(multiset_size(me) == 11);
@@ -250,7 +252,7 @@ void test_multiset(void)
// Add a lot of items.
int count = 0;
bool flip = false;
for (int i = 1234; i < 82400; i++) {
for (i = 1234; i < 82400; i++) {
key = i % 765;
multiset_put(me, &key);
assert(multiset_contains(me, &key));
@@ -279,17 +281,17 @@ void test_multiset(void)
assert(multiset_size(me) == 3);
assert(multiset_contains(me, &key));
int c[10] = {5, 9, 4, -5, 0, 6, 1, 5, 7, 2};
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
multiset_put(me, &c[i]);
assert(multiset_contains(me, &c[i]));
}
assert(multiset_size(me) == 13);
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
assert(multiset_contains(me, &c[i]));
}
for (int i = -100; i < 100; i++) {
for (i = -100; i < 100; i++) {
bool contains = false;
for (int j = 0; j < 10; j++) {
for (j = 0; j < 10; j++) {
if (c[j] == i) {
contains = true;
}
@@ -338,12 +340,12 @@ void test_multiset(void)
assert(!multiset_contains(me, &num));
multiset_clear(me);
// Add a lot of items and remove individually.
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
multiset_put(me, &i);
assert(multiset_contains(me, &i));
}
assert(multiset_size(me) == 1000);
for (int i = 5000; i < 5500; i++) {
for (i = 5000; i < 5500; i++) {
multiset_remove(me, &i);
assert(!multiset_contains(me, &i));
}
@@ -353,7 +355,7 @@ void test_multiset(void)
assert(multiset_size(me) == 0);
assert(multiset_is_empty(me));
// Add a lot of items and clear.
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
multiset_put(me, &i);
assert(multiset_contains(me, &i));
}
@@ -391,11 +393,11 @@ void test_multiset(void)
multiset_remove(me, &key);
multiset_clear(me);
// Allocate many nodes.
for (int i = 8123; i < 12314; i += 3) {
for (i = 8123; i < 12314; i += 3) {
multiset_put(me, &i);
assert(multiset_contains(me, &i));
}
for (int i = 13000; i > 8000; i--) {
for (i = 13000; i > 8000; i--) {
multiset_remove(me, &i);
assert(!multiset_contains(me, &i));
}
@@ -496,11 +498,11 @@ void test_multiset(void)
me = multiset_destroy(me);
assert(!me);
me = multiset_init(sizeof(int), compare_int);
for (int i = 4817; i > -2983; i -= 11) {
for (i = 4817; i > -2983; i -= 11) {
multiset_put(me, &i);
assert(multiset_contains(me, &i));
}
for (int i = -432; i < 3849; i += 7) {
for (i = -432; i < 3849; i += 7) {
multiset_remove(me, &i);
assert(!multiset_contains(me, &i));
}

View File

@@ -15,7 +15,8 @@ static void priority_queue_verify(priority_queue me)
{
void *const vector_storage = vector_get_data(me->data);
const int size = vector_size(me->data);
for (int i = 0; i < size; i++) {
int i;
for (i = 0; i < size; i++) {
const int val = *(int *) (vector_storage + i * me->data_size);
const int left_child = 2 * i + 1;
const int right_child = 2 * i + 2;
@@ -109,7 +110,8 @@ void test_priority_queue(void)
priority_queue_front(&item, me);
assert(item == 9);
int latest = item;
for (int i = 0; i < 15; i++) {
int i;
for (i = 0; i < 15; i++) {
stub_priority_queue_pop(&item, me);
assert(item <= latest);
latest = item;

View File

@@ -9,7 +9,8 @@ void test_queue(void)
assert(me);
assert(queue_size(me) == 0);
assert(queue_is_empty(me));
for (int i = 0; i < 10; i++) {
int i;
for (i = 0; i < 10; i++) {
queue_push(me, &val[i]);
int get = 0;
assert(queue_back(&get, me));
@@ -22,10 +23,10 @@ void test_queue(void)
assert(!queue_is_empty(me));
int get_arr[10] = {0};
queue_copy_to_array(get_arr, me);
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
assert(get_arr[i] == i + 1);
}
for (int i = 0; i < 9; i++) {
for (i = 0; i < 9; i++) {
int get = 0;
assert(queue_pop(&get, me));
assert(get == i + 1);
@@ -42,7 +43,7 @@ void test_queue(void)
assert(!me);
me = queue_init(sizeof(int));
assert(me);
for (int i = 123; i < 123456; i++) {
for (i = 123; i < 123456; i++) {
queue_push(me, &i);
}
const int old_size = queue_size(me);
@@ -55,7 +56,7 @@ void test_queue(void)
queue_destroy(me);
// Testing automatic trim
me = queue_init(sizeof(int));
for (int i = 0; i < 100; i++) {
for (i = 0; i < 100; i++) {
queue_push(me, &i);
queue_pop(&get, me);
}

View File

@@ -230,7 +230,8 @@ void test_set(void)
// Add a lot of items.
int count = 0;
bool flip = false;
for (int i = 1234; i < 82400; i++) {
int i;
for (i = 1234; i < 82400; i++) {
int num = i % 765;
const bool is_already_present = stub_set_contains(me, &num);
stub_set_put(me, &num);
@@ -263,17 +264,18 @@ void test_set(void)
assert(set_size(me) == 2);
assert(stub_set_contains(me, &key));
int c[10] = {5, 9, 4, -5, 0, 6, 1, 5, 7, 2};
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
stub_set_put(me, &c[i]);
assert(stub_set_contains(me, &c[i]));
}
assert(set_size(me) == 9);
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
assert(stub_set_contains(me, &c[i]));
}
for (int i = -100; i < 100; i++) {
int j;
for (i = -100; i < 100; i++) {
bool contains = false;
for (int j = 0; j < 10; j++) {
for (j = 0; j < 10; j++) {
if (c[j] == i) {
contains = true;
}
@@ -321,12 +323,12 @@ void test_set(void)
assert(set_size(me) == 0);
assert(!stub_set_contains(me, &num));
// Add a lot of items and remove individually.
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
stub_set_put(me, &i);
assert(stub_set_contains(me, &i));
}
assert(set_size(me) == 1000);
for (int i = 5000; i < 5500; i++) {
for (i = 5000; i < 5500; i++) {
stub_set_remove(me, &i);
assert(!stub_set_contains(me, &i));
}
@@ -336,7 +338,7 @@ void test_set(void)
assert(set_size(me) == 0);
assert(set_is_empty(me));
// Add a lot of items and clear.
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
stub_set_put(me, &i);
assert(stub_set_contains(me, &i));
}
@@ -374,11 +376,11 @@ void test_set(void)
stub_set_remove(me, &key);
stub_set_clear(me);
// Allocate many nodes.
for (int i = 8123; i < 12314; i += 3) {
for (i = 8123; i < 12314; i += 3) {
stub_set_put(me, &i);
assert(stub_set_contains(me, &i));
}
for (int i = 13000; i > 8000; i--) {
for (i = 13000; i > 8000; i--) {
stub_set_remove(me, &i);
assert(!stub_set_contains(me, &i));
}
@@ -479,11 +481,11 @@ void test_set(void)
me = stub_set_destroy(me);
assert(!me);
me = set_init(sizeof(int), compare_int);
for (int i = 4817; i > -2983; i -= 11) {
for (i = 4817; i > -2983; i -= 11) {
stub_set_put(me, &i);
assert(stub_set_contains(me, &i));
}
for (int i = -432; i < 3849; i += 7) {
for (i = -432; i < 3849; i += 7) {
stub_set_remove(me, &i);
assert(!stub_set_contains(me, &i));
}
@@ -495,7 +497,7 @@ void test_set(void)
key = 5;
stub_set_remove(me, &key);
stub_set_clear(me);
// Two children edge case other side.
// Two children edge case on the other side.
key = 8;
stub_set_put(me, &key);
key = 4;

View File

@@ -9,7 +9,8 @@ void test_stack(void)
assert(me);
assert(stack_size(me) == 0);
assert(stack_is_empty(me));
for (int i = 0; i < 10; i++) {
int i;
for (i = 0; i < 10; i++) {
stack_push(me, &val[i]);
int get = 0;
assert(stack_top(&get, me));
@@ -19,10 +20,10 @@ void test_stack(void)
assert(!stack_is_empty(me));
int get_arr[10] = {0};
stack_copy_to_array(get_arr, me);
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
assert(get_arr[i] == i + 1);
}
for (int i = 0; i < 9; i++) {
for (i = 0; i < 9; i++) {
int get = 0;
assert(stack_pop(&get, me));
assert(get == 10 - i);
@@ -38,7 +39,7 @@ void test_stack(void)
assert(!me);
// Testing automatic trim
me = stack_init(sizeof(int));
for (int i = 0; i < 100; i++) {
for (i = 0; i < 100; i++) {
stack_push(me, &i);
stack_pop(&get, me);
}

View File

@@ -51,17 +51,19 @@ void test_unordered_map(void)
assert(unordered_map_size(me) == 2);
assert(unordered_map_contains(me, &key));
int val_arr[10] = {5, 9, 4, -5, 0, 6, 1, 5, 7, 2};
for (int i = 0; i < 10; i++) {
int i;
for (i = 0; i < 10; i++) {
unordered_map_put(me, &val_arr[i], &value);
assert(unordered_map_contains(me, &val_arr[i]));
}
assert(unordered_map_size(me) == 9);
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
assert(unordered_map_contains(me, &val_arr[i]));
}
for (int i = -100; i < 100; i++) {
int j;
for (i = -100; i < 100; i++) {
bool contains = false;
for (int j = 0; j < 10; j++) {
for (j = 0; j < 10; j++) {
if (val_arr[j] == i) {
contains = true;
}
@@ -109,12 +111,12 @@ void test_unordered_map(void)
assert(unordered_map_size(me) == 0);
assert(!unordered_map_contains(me, &num));
// Add a lot of items and remove individually.
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
unordered_map_put(me, &i, &value);
assert(unordered_map_contains(me, &i));
}
assert(unordered_map_size(me) == 1000);
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
unordered_map_remove(me, &i);
assert(!unordered_map_contains(me, &i));
}
@@ -124,7 +126,7 @@ void test_unordered_map(void)
assert(unordered_map_size(me) == 0);
assert(unordered_map_is_empty(me));
// Add a lot of items and clear.
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
unordered_map_put(me, &i, &value);
assert(unordered_map_contains(me, &i));
}

View File

@@ -63,17 +63,19 @@ void test_unordered_multimap(void)
unordered_multimap_remove(me, &key, &value);
assert(unordered_multimap_size(me) == 0);
int c[10] = {5, 9, 4, -5, 0, 6, 1, 5, 7, 2};
for (int i = 0; i < 10; i++) {
int i;
for (i = 0; i < 10; i++) {
unordered_multimap_put(me, &c[i], &value);
assert(unordered_multimap_contains(me, &c[i]));
}
assert(unordered_multimap_size(me) == 10);
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
assert(unordered_multimap_contains(me, &c[i]));
}
for (int i = -100; i < 100; i++) {
int j;
for (i = -100; i < 100; i++) {
bool contains = false;
for (int j = 0; j < 10; j++) {
for (j = 0; j < 10; j++) {
if (c[j] == i) {
contains = true;
}
@@ -135,12 +137,12 @@ void test_unordered_multimap(void)
assert(unordered_multimap_size(me) == 0);
assert(!unordered_multimap_contains(me, &num));
// Add a lot of items and remove individually.
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
unordered_multimap_put(me, &i, &value);
assert(unordered_multimap_contains(me, &i));
}
assert(unordered_multimap_size(me) == 1000);
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
unordered_multimap_remove(me, &i, &value);
assert(!unordered_multimap_contains(me, &i));
}
@@ -150,7 +152,7 @@ void test_unordered_multimap(void)
assert(unordered_multimap_size(me) == 0);
assert(unordered_multimap_is_empty(me));
// Add a lot of items and clear.
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
unordered_multimap_put(me, &i, &value);
assert(unordered_multimap_contains(me, &i));
}
@@ -167,7 +169,7 @@ void test_unordered_multimap(void)
unordered_multimap_put(me, &key, &value);
assert(unordered_multimap_size(me) == 1);
key = 7;
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
unordered_multimap_put(me, &key, &value);
}
assert(unordered_multimap_size(me) == 11);

View File

@@ -54,17 +54,19 @@ void test_unordered_multiset(void)
unordered_multiset_remove(me, &key);
assert(unordered_multiset_size(me) == 0);
int c[10] = {5, 9, 4, -5, 0, 6, 1, 5, 7, 2};
for (int i = 0; i < 10; i++) {
int i;
for (i = 0; i < 10; i++) {
unordered_multiset_put(me, &c[i]);
assert(unordered_multiset_contains(me, &c[i]));
}
assert(unordered_multiset_size(me) == 10);
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
assert(unordered_multiset_contains(me, &c[i]));
}
for (int i = -100; i < 100; i++) {
int j;
for (i = -100; i < 100; i++) {
bool contains = false;
for (int j = 0; j < 10; j++) {
for (j = 0; j < 10; j++) {
if (c[j] == i) {
contains = true;
}
@@ -116,12 +118,12 @@ void test_unordered_multiset(void)
assert(unordered_multiset_size(me) == 0);
assert(!unordered_multiset_contains(me, &num));
// Add a lot of items and remove individually.
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
unordered_multiset_put(me, &i);
assert(unordered_multiset_contains(me, &i));
}
assert(unordered_multiset_size(me) == 1000);
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
unordered_multiset_remove(me, &i);
assert(!unordered_multiset_contains(me, &i));
}
@@ -131,7 +133,7 @@ void test_unordered_multiset(void)
assert(unordered_multiset_size(me) == 0);
assert(unordered_multiset_is_empty(me));
// Add a lot of items and clear.
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
unordered_multiset_put(me, &i);
assert(unordered_multiset_contains(me, &i));
}
@@ -148,7 +150,7 @@ void test_unordered_multiset(void)
unordered_multiset_put(me, &key);
assert(unordered_multiset_size(me) == 1);
key = 7;
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
unordered_multiset_put(me, &key);
}
assert(unordered_multiset_size(me) == 11);

View File

@@ -45,17 +45,19 @@ void test_unordered_set(void)
assert(unordered_set_size(me) == 2);
assert(unordered_set_contains(me, &key));
int val_arr[10] = {5, 9, 4, -5, 0, 6, 1, 5, 7, 2};
for (int i = 0; i < 10; i++) {
int i;
for (i = 0; i < 10; i++) {
unordered_set_put(me, &val_arr[i]);
assert(unordered_set_contains(me, &val_arr[i]));
}
assert(unordered_set_size(me) == 9);
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
assert(unordered_set_contains(me, &val_arr[i]));
}
for (int i = -100; i < 100; i++) {
int j;
for (i = -100; i < 100; i++) {
bool contains = false;
for (int j = 0; j < 10; j++) {
for (j = 0; j < 10; j++) {
if (val_arr[j] == i) {
contains = true;
}
@@ -103,12 +105,12 @@ void test_unordered_set(void)
assert(unordered_set_size(me) == 0);
assert(!unordered_set_contains(me, &num));
// Add a lot of items and remove individually.
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
unordered_set_put(me, &i);
assert(unordered_set_contains(me, &i));
}
assert(unordered_set_size(me) == 1000);
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
unordered_set_remove(me, &i);
assert(!unordered_set_contains(me, &i));
}
@@ -118,7 +120,7 @@ void test_unordered_set(void)
assert(unordered_set_size(me) == 0);
assert(unordered_set_is_empty(me));
// Add a lot of items and clear.
for (int i = 5000; i < 6000; i++) {
for (i = 5000; i < 6000; i++) {
unordered_set_put(me, &i);
assert(unordered_set_contains(me, &i));
}

View File

@@ -7,9 +7,11 @@ static void test_vector_of_vectors(void)
// Test using a vector of vectors of ints
vector outer = vector_init(sizeof(vector));
// Add vectors to the outer vector
for (int i = 0; i < 5; i++) {
int i;
int j;
for (i = 0; i < 5; i++) {
vector inner = vector_init(sizeof(int));
for (int j = 1; j <= 10; j++) {
for (j = 1; j <= 10; j++) {
vector_add_last(inner, &j);
}
assert(vector_size(inner) == 10);
@@ -17,10 +19,10 @@ static void test_vector_of_vectors(void)
}
assert(vector_size(outer) == 5);
// Delete the vectors in the outer vector
for (int i = 0; i < 5; i++) {
for (i = 0; i < 5; i++) {
vector inner = NULL;
vector_get_first(&inner, outer);
for (int j = 0; j < 10; j++) {
for (j = 0; j < 10; j++) {
int num = 0xdeadbeef;
vector_get_at(&num, inner, j);
assert(num == j + 1);
@@ -35,20 +37,22 @@ static void test_vector_of_vectors(void)
static void test_vector_dynamic(void)
{
char **str = malloc(5 * sizeof(char **));
for (int i = 0; i < 5; i++) {
int i;
int j;
for (i = 0; i < 5; i++) {
str[i] = malloc(10 * sizeof(char *));
for (int j = 0; j < 9; j++) {
for (j = 0; j < 9; j++) {
str[i][j] = (char) ('a' + i);
}
str[i][9] = '\0';
}
vector str_vector = vector_init(sizeof(char *));
assert(str_vector);
for (int i = 0; i < 5; i++) {
for (i = 0; i < 5; i++) {
vector_add_last(str_vector, &str[i]);
}
assert(vector_size(str_vector) == 5);
for (int i = 0; i < 5; i++) {
for (i = 0; i < 5; i++) {
char *retrieve = NULL;
vector_get_first(&retrieve, str_vector);
vector_remove_first(str_vector);
@@ -69,7 +73,8 @@ void test_vector(void)
assert(me);
assert(vector_size(me) == 0);
assert(vector_is_empty(me));
for (int i = 0; i < 10; i++) {
int i;
for (i = 0; i < 10; i++) {
vector_add_first(me, &val[i]);
int get = 0;
vector_get_first(&get, me);
@@ -79,26 +84,26 @@ void test_vector(void)
assert(!vector_is_empty(me));
int get_arr[10] = {0};
vector_copy_to_array(get_arr, me);
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
int get = 0;
vector_get_at(&get, me, i);
assert(get == val[9 - i]);
assert(get_arr[i] == val[9 - i]);
}
int *const data = vector_get_data(me);
for (int i = 0; i < 10; i++) {
for (i = 0; i < 10; i++) {
assert(data[i] == val[9 - i]);
}
assert(vector_capacity(me) >= vector_size(me));
int trimmed[5] = {0};
vector_trim(me);
vector_reserve(me, 3);
for (int i = 0; i < 7; i++) {
for (i = 0; i < 7; i++) {
vector_remove_last(me);
}
vector_copy_to_array(trimmed, me);
assert(vector_size(me) == 3);
for (int i = 0; i < 3; i++) {
for (i = 0; i < 3; i++) {
assert(10 - i == trimmed[i]);
}
int add = 3;
@@ -169,7 +174,7 @@ void test_vector(void)
assert(vector_remove_at(me, -1) == -EINVAL);
assert(vector_add_at(me, -1, &set) == -EINVAL);
vector_clear(me);
for (int i = 0; i < 32; i++) {
for (i = 0; i < 32; i++) {
vector_add_last(me, &i);
}
vector_clear(me);