
#include <cassert>
#include <iostream>
using namespace std;

#include <commandline.h>
#include <snakeindextest.h>
#include <snakesorttest.h>
#include <spiralindextest.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  Print a 1D snake sort." << endl;
      cout << "./main prog=2  Display a 2D snake sort." << endl;
      cout << "./main prog=3  Display a 3D snake sort." << endl;

      cout << "./main prog=11 Print 2D snake index forwards iterator." << endl;
      cout << "./main prog=12 Print 2D snake index backwards iterator." << endl;
      cout << "./main prog=13 Print 2D snake index vertical iterator." << endl;

      cout << "./main prog=21 Print 2D spiral indexes." << endl;
      cout << "./main prog=22 Display 2D spiral." << endl;
      cout << "./main prog=23 Print 3D spiral indexes." << endl;
      cout << "./main prog=24 Display 3D spiral." << endl;
      break;
  
    case 1: snakesorttest::test01(argc,argv); break;
    case 2: snakesorttest().test02(argc,argv); break;
    case 3: snakesorttest().test03(argc,argv); break;

    case 11: snakeindextest::test01(); break;
    case 12: snakeindextest::test02(); break;
    case 13: snakeindextest::test03(); break;

    case 21: spiralindextest::test01(argc,argv); break;
    case 22: spiralindextest().test02(argc,argv); break;
    case 23: spiralindextest::test03(argc,argv); break;
    case 24: spiralindextest().test04(argc,argv); break;

    default: cout << "error:  No case handled." << endl; return 1;
  }

  return 0;
}



