#include <stdio.h>

#include "basic.h"
#include "stack.h"

static char * pPushArray[8];
static int pushArraySize = (sizeof(pPushArray) / sizeof(char *));


static char *pStrArray[] = {NULL, "dog", "cat", "bird", "emu", "koala","angry monkey", "bufflehead"};
static int strArraySize = (sizeof(pStrArray) / sizeof(char *));

int main(char *argv[], int argc)
{
  Stack * pMyStack;
  Stack * pMyStack2;
  StackItem myItem;
  StackItem myItem2;

  int i;

  stackInit();

  pMyStack = stackCreate((StackItem *)pStrArray, strArraySize, false);

  if (pMyStack == NULL)
    printf("ducked up\n");

  for(i=0;i<strArraySize;i++)
    if (stackPop(pMyStack, &myItem) == 0)
      printf("stack[%d]: %s\n",i,(char *)myItem);
    else
      printf("stack[%d]: ducked up\n",i);

  if (stackPop(pMyStack, &myItem) == 0)
    printf("stack: %s\n",(char *)myItem);
  else
    printf("stack empty now\n");


  pMyStack2 = stackCreate((StackItem *)pPushArray, pushArraySize, true);

  for(i=0;i<pushArraySize;i++)
    if (stackPush(pMyStack2, (StackItem)(pStrArray[i]) ) == 0)
      printf("stack push[%d]: %s\n",i,(char *)(pStrArray[i]) );
    else
      printf("stack push[%d]: ducked up\n",i);

  for(i=0;i<pushArraySize;i++)
    if (stackPop(pMyStack2, &myItem2) == 0)
      printf("stack pop[%d]: %s\n",i,(char *)myItem2);
    else
      printf("stack pop[%d]: ducked up\n",i);

  return 0;
}

