void test_slist_prepend_to_empty(void) { unsigned long *val = NULL; assert_true(test_slist == NULL); test_slist = slist_create(); assert_true(test_slist != NULL); assert_true(slist_is_empty(test_slist)); val = make_ulong_ptr(9999); assert_true(val != NULL); assert_true(slist_prepend(test_slist, val) == 0); /* Verify */ val = NULL; val = slist_index(test_slist, 0); assert_true(val != NULL); assert_ulong_equal(9999, *val); assert_true(slist_size(test_slist) == 1); slist_free_all(test_slist, NULL); test_slist = NULL; }
void test_slist_index(void) { unsigned long *val; /* Index the front */ val = slist_index(test_slist, 0); assert_ulong_equal(0, *val); /* Index the back */ val = slist_index(test_slist, slist_size(test_slist) - 1); assert_ulong_equal(999, *val); /* Index some random place */ val = slist_index(test_slist, 47); assert_ulong_equal(47, *val); }
void test_slist_reverse_existing(void) { unsigned long *val; unsigned long i, val_check; val = NULL; val_check = *(unsigned long *)slist_index(test_slist, slist_size(test_slist) - 1); assert_true(slist_reverse(test_slist) == 0); for(i = 0; i < slist_size(test_slist); i++, val_check--) { val = slist_index(test_slist, i); assert_true(val != NULL); assert_ulong_equal(*val, val_check); } }
int queue_index (Queue *queue, const void *data) { /* Precondition */ assert(queue != NULL); /* Postcondicion */ assert((int) queue->length == slist_length(queue->head)); return slist_index(queue->head, data); }
/* Complexity: O(1) */ void* queue_back(Queue *queue) { assert(queue != NULL); if(slist_is_empty((SList *)queue)) { return NULL; } return slist_index((SList *)queue, slist_size((SList *)queue) - 1); }
void test_slist_remove_data_from_existing(void) { unsigned long *val; unsigned long old_size; old_size = slist_size(test_slist); val = NULL; val = slist_index(test_slist, 10); assert_true(val != NULL); assert_true(slist_remove_data(test_slist, val) == 0); assert_true((old_size - 1) == slist_size(test_slist)); }
void test_slist_prepend_to_existing(void) { unsigned long *val; unsigned long old_size; old_size = slist_size(test_slist); val = make_ulong_ptr(7777); assert_true(slist_prepend(test_slist, val) == 0); /* Verify */ val = NULL; val = slist_index(test_slist, 0); assert_ulong_equal(7777, *val); assert_true((old_size + 1) == slist_size(test_slist)); }
void test_slist_insert_in_middle(void) { unsigned long *val; unsigned long old_size; old_size = slist_size(test_slist); val = make_ulong_ptr(6666); assert_true(slist_insert(test_slist, old_size / 2, val) == 0); /* Verify */ val = NULL; val = slist_index(test_slist, old_size / 2); assert_ulong_equal(6666, *val); assert_true((old_size + 1) == slist_size(test_slist)); }
void test_slist_insert_at_back(void) { unsigned long *val; unsigned long old_size; old_size = slist_size(test_slist); val = make_ulong_ptr(7777); assert_true(slist_insert(test_slist, old_size, val) == 0); /* Verify */ val = NULL; val = slist_index(test_slist, old_size); assert_ulong_equal(7777, *val); assert_true((old_size + 1) == slist_size(test_slist)); }
void test_slist_insert_at_front(void) { unsigned long *val; unsigned long old_size; old_size = slist_size(test_slist); val = make_ulong_ptr(8888); assert_true(slist_insert(test_slist, 0, val) == 0); /* Verify */ val = NULL; val = slist_index(test_slist, 0); assert_ulong_equal(8888, *val); assert_true((old_size + 1) == slist_size(test_slist)); }
void test_slist_remove_data_from_existing_until_empty(void) { unsigned long *val; unsigned long i; val = NULL; i = slist_size(test_slist); while(i > 0) { val = slist_index(test_slist, --i); assert_true(val != NULL); assert_true(slist_remove_data(test_slist, val) == 0); assert_true(i == slist_size(test_slist)); } assert_true(slist_is_empty(test_slist)); }
/* Complexity: O(1) */ void* queue_front(Queue *queue) { assert(queue != NULL); return slist_index((SList *)queue, 0); }