#include <stdio.h>
#include <stdlib.h>
#include "noidea.linkedlist.h"

NOIDEA_linkedlist array[100];
NOIDEA_linkedlist copy[100];

char One[] = "One\n";
char Two[] = "Two\n";
char Tree[] = "Tree\n";
char Four[] = "Four\n";


void seelist(NOIDEA_linkedlist * list2see)
{
	if((list2see == NULL)||(list2see->next == 0))
	{
		return;
	}
	NOIDEA_linkedlist * pivot = list2see->next;
	while (pivot->next != 0)
	{
		printf(pivot->data);
		pivot = pivot->next;
	}
	printf(pivot->data);
}

void dumb(void*ptr)
{
	//printf("FREEING MEMORY !!!!\n");
}

int main(void)
{
	printf ("test list\n");

	NOIDEA_linkedlist * list = &array[0];
	NOIDEA_linkedlist_push(list,Tree,&array[1]);
	NOIDEA_linkedlist_push(list,Two,&array[2]);
	NOIDEA_linkedlist_push(list,One,&array[3]);
	NOIDEA_linkedlist_append(list,Four,&array[4]);
	NOIDEA_linkedlist_append(list,Four,&array[5]);
	NOIDEA_linkedlist_append(list,Four,&array[6]);

	printf(NOIDEA_linkedlist_pop(list,&dumb));
	NOIDEA_linkedlist_push(list,One,&array[7]);

	printf(NOIDEA_linkedlist_getTail(list));
	printf(NOIDEA_linkedlist_getNth(list,3));

	NOIDEA_linkedlist_remove(list,3,&dumb);
	NOIDEA_linkedlist_insert(list,2,Tree,&array[8]);

	printf("%d\n",NOIDEA_linkedlist_lenght(list));
	printf("%d\n",NOIDEA_linkedlist_count(list,Four));

	NOIDEA_linkedlist * dupe = NOIDEA_linkedlist_copylist(list,&copy[0]);
	NOIDEA_linkedlist_emptylist(dupe,&dumb);

	NOIDEA_linkedlist * secondhalf = NOIDEA_linkedlist_split(list,4,&array[9]);
	NOIDEA_linkedlist_join(secondhalf,list);

	printf("%d\n",NOIDEA_linkedlist_movenode(secondhalf,1,3));	

	seelist(secondhalf);

	//seelist(list);


	return 0;
}
