Skip to content
Snippets Groups Projects
circ_list_tests.c 2.39 KiB
#include <assert.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>

#include "circ_list.h"

int action_add_10(int element) {
    return element + 10;
}

void print_list(element *list) {
    element *iterator = list;

    do {
        printf("%d ", iterator->data);
        iterator = iterator->next;
    } while (iterator != list);

    printf("\n");
}

int main() {
    // list_create
    element *list = list_create();
    assert(list == NULL);

    // list_insert_after
    printf("list_insert_after\n");
    list = list_insert_after(list, 1);
    assert(list->data == 1);
    print_list(list);

    list = list_insert_after(list, 3);
    assert(list->data == 3);
    assert(list->next->data == 1);
    assert(list->next->next->data == 3);
    print_list(list);

    list = list_insert_before(list, 2);
    printf("list_insert_before\n");
    assert(list->data == 2);
    assert(list->next->data == 3);
    assert(list->next->next->data == 1);
    assert(list->next->next->next->data == 2);
    print_list(list);

    // list_empty
    element *empty_list = list_create();
    assert(list_empty(empty_list) == true);

    assert(list_empty(list) == false);

    // list_count
    assert(list_count(empty_list) == 0);

    assert(list_count(list) == 3);

    // list_search
    element *search_result_1 = list_search(list, 1);
    assert(search_result_1->data == 1);

    element *search_result_2 = list_search(list, 4);
    assert(search_result_2 == NULL);

    // list_process
    printf("list_process\n");
    list_process(list, action_add_10);
    assert(list->data == 12);
    assert(list->next->data == 13);
    assert(list->next->next->data == 11);
    assert(list->next->next->next->data == 12);
    print_list(list);

    // list_remove
    printf("list_remove\n");
    element *removed_element_1 = list_remove(list, 13);
    assert(removed_element_1->data == 13);
    assert(list->data == 12);
    assert(list->next->data == 11);
    assert(list->next->next->data == 12);
    free(removed_element_1);
    print_list(list);

    // list_move
    printf("list_move\n");
    list = list_move(list);
    assert(list->data == 11);
    assert(list->next->data == 12);
    assert(list->next->next->data == 11);
    print_list(list);

    list = list_move(list);
    assert(list->data == 12);
    assert(list->next->data == 11);
    assert(list->next->next->data == 12);
    print_list(list);

    // list_free
    list_free(list);
}