1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
/*
* Tests for Allegro's list function.
*/
#include <assert.h>
#include <stdio.h>
#include "allegro5/allegro.h"
#include "allegro5/internal/aintern.h"
#include "allegro5/internal/aintern_list.h"
static void test_basic_dynamic_usage(void)
{
int xs[4] = {1, 2, 3, 4};
_AL_LIST_ITEM* item;
int i;
_AL_LIST* list = _al_list_create();
assert(_al_list_is_empty(list));
assert(_al_list_front(list) == NULL);
assert(_al_list_back(list) == NULL);
assert(_al_list_size(list) == 0);
_al_list_push_back(list, &xs[0]);
assert(!_al_list_is_empty(list));
assert(_al_list_size(list) == 1);
item = _al_list_front(list);
i = 0;
while (item) {
assert(*(int*)_al_list_item_data(item) == xs[i]);
item = _al_list_at(list, i);
assert(*(int*)_al_list_item_data(item) == xs[i]);
assert(_al_list_contains(list, &xs[i]));
item = _al_list_next(list, item);
i++;
}
item = _al_list_back(list);
i = _al_list_size(list) - 1;
while (item) {
assert(*(int*)_al_list_item_data(item) == xs[i]);
item = _al_list_previous(list, item);
i--;
}
_al_list_push_back(list, &xs[1]);
assert(_al_list_size(list) == 2);
item = _al_list_front(list);
i = 0;
while (item) {
assert(*(int*)_al_list_item_data(item) == xs[i]);
item = _al_list_at(list, i);
assert(*(int*)_al_list_item_data(item) == xs[i]);
assert(_al_list_contains(list, &xs[i]));
item = _al_list_next(list, item);
i++;
}
item = _al_list_back(list);
i = _al_list_size(list) - 1;
while (item) {
assert(*(int*)_al_list_item_data(item) == xs[i]);
item = _al_list_previous(list, item);
i--;
}
_al_list_push_back(list, &xs[2]);
assert(_al_list_size(list) == 3);
item = _al_list_front(list);
i = 0;
while (item) {
assert(*(int*)_al_list_item_data(item) == xs[i]);
item = _al_list_at(list, i);
assert(*(int*)_al_list_item_data(item) == xs[i]);
assert(_al_list_contains(list, &xs[i]));
item = _al_list_next(list, item);
i++;
}
item = _al_list_back(list);
i = _al_list_size(list) - 1;
while (item) {
assert(*(int*)_al_list_item_data(item) == xs[i]);
item = _al_list_previous(list, item);
i--;
}
_al_list_push_back(list, &xs[3]);
assert(_al_list_size(list) == 4);
item = _al_list_front(list);
i = 0;
while (item) {
assert(*(int*)_al_list_item_data(item) == xs[i]);
item = _al_list_at(list, i);
assert(*(int*)_al_list_item_data(item) == xs[i]);
assert(_al_list_contains(list, &xs[i]));
item = _al_list_next(list, item);
i++;
}
item = _al_list_back(list);
i = _al_list_size(list) - 1;
while (item) {
assert(*(int*)_al_list_item_data(item) == xs[i]);
item = _al_list_previous(list, item);
i--;
}
}
int main(int argc, char *argv[])
{
(void)argc;
(void)argv;
test_basic_dynamic_usage();
return 0;
}
|