#include <iostream>
using namespace std;

#include <buttonpanel01test.h>
#include <commandline.h>
#include <maze001.h>
#include <maze002.h>
#include <maze003.h>
#include <maze004.h>
#include <maze005.h>
#include <mazegameD2state01test.h>
#include <mazematrixD2test.h>
#include <mazematrixD3test.h>



int main(int argc, char** argv)
{
  commandline cmd(argc,argv);
  uint prog(0);
  cmd.mapvar(prog,"prog");

  switch (prog)
  {
    case 0:
      cout << "$ ./main prog=1  " << mazematrixD2test::doc[1] << endl; 
      cout << "$ ./main prog=2  " << mazematrixD2test::doc[2] << endl; 
      cout << "$ ./main prog=3  " << mazematrixD2test::doc[3] << endl; 
      cout << "$ ./main prog=4  " << mazematrixD2test::doc[4] << endl; 
      cout << "$ ./main prog=5  " << mazegameD2state01test::doc[1] << endl;

      cout << "$ ./main prog=10  " << maze001::doc[1] << endl; 
      cout << "$ ./main prog=11  " << maze002::doc[1] << endl; 
      cout << maze003::doc[1] << endl; 
      cout << maze004::doc[1] << endl; 
      cout << maze005::doc[1] << endl; 

      cout << "$ ./main prog=20  " << buttonpanel01test::doc[1] << endl; 
      cout << "$ ./main prog=30  " << mazematrixD3test::doc[1] << endl; 
      
      break;

    case 1: mazematrixD2test::test01(); break;
    case 2: mazematrixD2test::test02(); break;
    case 3: return mazematrixD2test::unittest01();
    case 4: return mazematrixD2test::unittest02();
    case 5: return mazegameD2state01test::test01();

    case 10: maze001(argc,argv).eval(); break;
    case 11: maze002(argc,argv).eval(); break;
    case 12: maze003(argc,argv).eval(); break;
    case 13: maze004(argc,argv).eval(); break;
    case 14: maze005(argc,argv).eval(); break;

    case 20: buttonpanel01test(argc,argv); break;

    case 30: mazematrixD3test::test01(); break;
    case 31: mazematrixD3test::test02(); break;
    case 32: mazematrixD3test::test03(); break;

  }

  return 0;
}


