#include <iostream>
using namespace std;

#include <bsptree001.h>
#include <commandline.h>
#include <treeindexedD2test.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   - Basic printing and inserting." << endl;
      cout << "./main prog=2   - Building and printing a simple tree." << endl;
      cout << "./main prog=3 in=treeindexedD201.txt" << endl;
      cout << "                - Reading a tree from a text file." << endl;
      cout << "./main prog=4   - Build a bsp tree in 2D. Test 5 points in their 5 regions." << endl;
      cout << "./main prog=5   - Visually see and interact with a bsp tree." << endl;
      cout << "./main prog=6   - Testing move(T const bpath,T const nsteps)." << endl;
      cout << "./main prog=7   - Testing treeindexedD2iter.h classes. " << endl;
      cout << "./main prog=8 in=map01.txt  - BSP Tree Demo" << endl;

      cout << "./main prog=20 " << bsptree001::doc[1] << endl;


      break;

    case 1: treeindexedD2test::test01(); break;
    case 2: treeindexedD2test::test02(); break;
    case 3: return treeindexedD2test::unittest01(argc,argv);
    case 4: return treeindexedD2test::unittest02(); 
    case 5: treeindexedD2test().test03(argc,argv); break;
    case 6: return treeindexedD2test::unittest04(); 
    case 7: treeindexedD2test::test04(); break;
    case 8: return treeindexedD2test().test05(argc,argv); 

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

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

  return 0;
}


