コード例 #1
0
ファイル: MerkleTree.java プロジェクト: LefKok/upright
  public static void main(String[] args) {
    Vector<Indexable> files = new Vector<Indexable>();
    for (int i = 0; i < 5; i++) {
      files.add(new BFTFile(new String("Taylor" + i)));
    }
    MerkleTree tree = new MerkleTree(files);
    // System.out.println(tree.getRoot().min + ":" + tree.getRoot().max);
    BFT.util.UnsignedTypes.printBytes(tree.getRoot().getBytes());

    // System.out.println("Changing a leaf!");
    BFTFile newFile = new BFTFile(new String("Hello World!"));
    tree.updateLeafData(3, newFile);
    tree.update();
    // System.out.println(tree.getRoot().min + ":" + tree.getRoot().max);
    BFT.util.UnsignedTypes.printBytes(tree.getRoot().getBytes());

    // System.out.println("Adding a leaf past the current capacity!");
    newFile = new BFTFile(new String("Goodbye Cruel World!"));
    tree.updateLeafData(12, newFile);
    tree.update();
    // System.out.println(tree.getRoot().min + ":" + tree.getRoot().max);
    BFT.util.UnsignedTypes.printBytes(tree.getRoot().getBytes());

    // System.out.println("Changing a leaf!");
    newFile = new BFTFile(new String("Hello World!"));
    tree.updateLeafData(14, newFile);
    tree.update();
    // System.out.println(tree.getRoot().min + ":" + tree.getRoot().max);
    BFT.util.UnsignedTypes.printBytes(tree.getRoot().getBytes());

    // System.out.println("Adding a leaf past the current capacity!");
    newFile = new BFTFile(new String("Goodbye Cruel World!"));
    tree.updateLeafData(49, newFile);
    tree.update();
    // System.out.println(tree.getRoot().min + ":" + tree.getRoot().max);
    BFT.util.UnsignedTypes.printBytes(tree.getRoot().getBytes());

    System.out.print("Testing leaf node retrieval 1: ");
    MerkleTreeNode test = new MerkleTreeNode(12);
    MerkleTreeNode test1 = tree.getNode(12);
    if (test.equals(test1)) {
      // System.out.println("FAIL");
      BFT.util.UnsignedTypes.printBytes(test.getBytes());
      // System.out.println();
      BFT.util.UnsignedTypes.printBytes(test1.getBytes());
    } else {
      // System.out.println("WIN");
    }

    System.out.print("Testing leaf node retrieval 2 (");
    newFile = (BFTFile) tree.getLeafData(49);
    System.out.print(newFile.getFilename() + "): ");
    test = new MerkleTreeNode(newFile.getBytes(), 49);
    test1 = tree.getNode(49);
    if (test.equals(test1)) {
      // System.out.println("WIN");
    } else {
      // System.out.println("FAIL");
      BFT.util.UnsignedTypes.printBytes(test.getBytes());
      // System.out.println();
      BFT.util.UnsignedTypes.printBytes(test1.getBytes());
    }

    System.out.print("Testing intermediate node retrieval (52,53): ");
    try {
      test = tree.getNode(52, 53);
      // if(test.min == 52 && test.max == 53) //System.out.println("WIN");
      // else //System.out.println("FAIL");
    } catch (NotInTreeException e3) {
      // System.out.println("FAIL");
    }

    System.out.print("Testing tree equality 1: ");
    Vector<Indexable> files1 = new Vector<Indexable>();
    for (int i = 0; i < 5; i++) {
      files1.add(new BFTFile(new String("Taylor" + i)));
    }
    Vector<Indexable> files2 = new Vector<Indexable>();
    for (int i = 0; i < 5; i++) {
      files2.add(new BFTFile(new String("Taylor" + i)));
    }
    MerkleTree tree1 = new MerkleTree(files1);
    MerkleTree tree2 = new MerkleTree(files2);
    if (tree1.getRoot().equals(tree2.getRoot())) // System.out.println("WIN");
      // else //System.out.println("FAIL");

      System.out.print("Testing tree equality 2: ");
    tree2.updateLeafData(7, new BFTFile(new String("IGGY IGGY")));
    tree2.update();
    if (!tree1.getRoot().equals(tree2.getRoot())) // System.out.println("WIN");
      // else //System.out.println("FAIL");

      System.out.print("Testing tree equality 3: ");
    MerkleTreeNode pullNode = null;
    try {
      pullNode = tree1.getNode(0, 3);
      // if(tree2.equals(pullNode)) //System.out.println("WIN");
      // else //System.out.println("FAIL");
    } catch (NotInTreeException e2) {
      // System.out.println("FAIL");
    }

    System.out.print("Testing tree equality 4: ");
    try {
      pullNode = tree1.getNode(0, 3);
      byte[] token = pullNode.getToken();
      // if(tree2.equals(token)) //System.out.println("WIN");
      // else //System.out.println("FAIL");
    } catch (NotInTreeException e1) {
      // System.out.println("FAIL");
    }

    System.out.print("Testing get methods 1: ");
    try {
      pullNode = tree1.getNode(32, 33);
      // System.out.println("FAIL");
    } catch (NotInTreeException e) {
      // System.out.println("WIN");
    }

    System.out.print("Testing get methods 2: ");
    tree1.updateLeafData(33, new BFTFile(new String("IGGY IGGY")));
    try {
      pullNode = tree1.getNode(32, 33);
      // System.out.println("WIN");
    } catch (NotInTreeException e) {
      // System.out.println("FAIL");
    }

    System.out.print("Testing get methods 3: ");
    if (pullNode.min == 32 && pullNode.max == 33) {
      // System.out.println("WIN");
    } else {
      // System.out.println("FAIL");
    }
  }