/*
 * Program to test "linked list of integers" code.
 */
#include <stdio.h>
#include <stdlib.h>
#include "int-list.h"

int main(void) {

    int_list_t * list;
    int i, rcount;
    int data[] = { 2, 4, 6, 8, 4, 12 };
    int to_remove[] = { 4, 0, 2, 12 };

    /* create list */
    if ((list = int_list_create()) == NULL) {
        fprintf(stderr, "could not create list\n");
        return EXIT_FAILURE;
    }
    /* print */
    fprintf(stdout, "\ninitial list contents:\n");
    int_list_print(stdout, "  %d\n", list);
    fprintf(stdout, "\n");

    /* insert some things */
    for (i = 0; i < sizeof(data)/sizeof(data[0]); ++i) {
        if (int_list_insert(list, data[i]) == -1) {
            fprintf(stdout, "unable to insert %d\n", data[i]);
        }
        else {
            fprintf(stdout, "inserted %d\n", data[i]);
        }
    }
    /* print */
    fprintf(stdout, "\nlist contents after inserts:\n");
    int_list_print(stdout, "  %d\n", list);
    fprintf(stdout, "\n");

    /* remove some things */
    for (i = 0; i < sizeof(to_remove)/sizeof(to_remove[0]); ++i) {
        rcount = int_list_remove(list, to_remove[i]);
        fprintf(stdout, "removed %d instances of %d\n", rcount, to_remove[i]);
    }
    /* print */
    fprintf(stdout, "\nlist contents after removes:\n");
    int_list_print(stdout, "  %d\n", list);
    fprintf(stdout, "\n");

    /* free list */
    int_list_free(list);
    
    return EXIT_SUCCESS;
}