/*
  Maze testing file
*/

/* Includes */
#include <stdio.h>
#include "mazegen.h"

/* Program demonstration */
int main(int argn,char *argv[])
{ printf("TEST 1: generate and print basic random mazes.\n");
  printf("        Efficiency and memory usage are not checked.\n"); 
  printf("        The two (31,15) mazes must be different.\n");
  maze_generate(3,3); 
  maze_print();
 
  maze_generate(7,5); 
  maze_print();

  maze_generate(19,11); 
  maze_print();
  
  maze_generate(31,15); 
  maze_print();

  maze_generate(31,15); 
  maze_print();


  printf("TEST 2: Four mazes, to pass test cases, memory must not leak.\n");
  maze_generate(25,25);
  maze_print();
  maze_generate(11,11);
  maze_print();
  maze_generate(33,17);
  maze_print();
  maze_generate(45,23);
  maze_print();

  printf("TEST 3: Large maze test.\n");
  maze_generate(71,95);
  maze_print();

  printf("TEST 4: Must NOT be the same maze as last time.\n");
  maze_generate(71,95);
  maze_print();

  printf("TEST 5: Super stress test:\n"); 
  printf("    Must take no longer than about 60 seconds on cs.moons.unm.edu\n");
  printf("    Torin's version runs in about 10 seconds.\n");
  printf("    An inefficient algorithm will surely show.\n");
  int i;
  for(i = 0;i < 50*14;i++)
  { if(i%50 == 0)
    printf("Made %d mazes so far.\n",i);
    maze_generate(801,601);  
  }


  printf("\nTEST 6: Error cases:\n"); 
  maze_generate(100,99);
  maze_generate(4,9);
  maze_generate(-3,-7);
  maze_generate(3,1);
  maze_generate(-2,3);

  /* Release memory */
  maze_free();

  /* Program finished properly */
  return 0;
}
