// Carnegie Mellon University
//   Information Networking Institute and
//   School of Computer Science
//
// Master Thesis: A Monitoring Tool for Overlay Network
// By: TungFai Chan and Annie Cheng
//
// File: TreeNodeRecord.java
// Path: eventbase/btree
// Description: B Tree Testing Program

package eventbase.btree;

public class TestBTree {

  public static void main(String[] var) {
    BTree btree = new BTree();
    IntermediateNodeRecord newChild = new IntermediateNodeRecord();

    // tesitng insert
    LeafNodeRecord rec = new LeafNodeRecord(12, 0, 0);
    btree.Insert(btree.getRoot(), rec, newChild);
    //System.out.println("====================================================== ");
    rec = new LeafNodeRecord(2, 0, 0);
    btree.Insert(btree.getRoot(), rec, newChild);
    //btree.printTree(btree.getRoot());
    //System.out.println("====================================================== ");
    rec = new LeafNodeRecord(1, 0, 0);
    btree.Insert(btree.getRoot(), rec, newChild);
    //btree.printTree(btree.getRoot());
    //System.out.println("====================================================== ");
    rec = new LeafNodeRecord(3, 0, 0);
    btree.Insert(btree.getRoot(), rec, newChild);
    //btree.printTree(btree.getRoot());
    //System.out.println("====================================================== ");
    rec = new LeafNodeRecord(13, 0, 0);
    btree.Insert(btree.getRoot(), rec, newChild);
    //btree.printTree(btree.getRoot());
    //System.out.println("====================================================== ");
    rec = new LeafNodeRecord(10, 0, 0);
    btree.Insert(btree.getRoot(), rec, newChild);
    //btree.printTree(btree.getRoot());
    //System.out.println("====================================================== ");
    rec = new LeafNodeRecord(15, 0, 0);
    btree.Insert(btree.getRoot(), rec, newChild);
    //btree.printTree(btree.getRoot());
    //System.out.println("====================================================== ");
    rec = new LeafNodeRecord(14, 0, 0);
    btree.Insert(btree.getRoot(), rec, newChild);
    //btree.printTree(btree.getRoot());
    //System.out.println("====================================================== ");
    rec = new LeafNodeRecord(2, 0, 0);
    btree.Insert(btree.getRoot(), rec, newChild);
    //btree.printTree(btree.getRoot());
    //System.out.println("====================================================== ");
    rec = new LeafNodeRecord(15, 0, 0);
    btree.Insert(btree.getRoot(), rec, newChild);
    //btree.printTree(btree.getRoot());
    //System.out.println("====================================================== ");
    rec = new LeafNodeRecord(15, 0, 0);
    btree.Insert(btree.getRoot(), rec, newChild);
    //btree.printTree(btree.getRoot());
    //System.out.println("====================================================== ");
    rec = new LeafNodeRecord(15, 0, 0);
    btree.Insert(btree.getRoot(), rec, newChild);
    //btree.printTree(btree.getRoot());
    //System.out.println("====================================================== ");
    // Testing Find
    LeafNodeRecord leaf_record = btree.getRID(1);
    //leaf_record.print();

    // Testing Iteration
    btree.setIterationPointer(16);
    System.out.println("Search forward ... ");
  //  btree.handle_backword_duplicate();
    while((leaf_record = btree.getNextRID()) != null) {
      leaf_record.print();
    }
    System.out.println("Search backword ... ");
    btree.setIterationPointer(16);
    while ((leaf_record = btree.getPrevRID()) != null) {
      leaf_record.print();
    }

    return;
  }
}