view src/test/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/index/ParentIndexTest.java @ 151:d9fbddf77bf6

add class Index
author one
date Sat, 22 Nov 2014 14:46:44 +0900
parents feb2346ace19
children f98f2704b154 809f813d1083
line wrap: on
line source

package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.index;

import java.nio.ByteBuffer;
import java.util.Iterator;

import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser;
import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex;
import junit.framework.Assert;
import org.junit.Test;
import fj.data.Option;

public class ParentIndexTest {

  @Test
  public void testParentIndex() {
    Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTraverser());
    jungle.createNewTree("tree");
    JungleTree tree = jungle.getTreeByName("tree");
    JungleTreeEditor editor = tree.getIndexTreeEditor();
    DefaultNodePath path = new DefaultNodePath();
    editor = editor.addNewChildAt(path, 0).b();

    for (int num = 0; num < 5; num++) {
      editor = editor.addNewChildAt(path.add(0), num).b();
      editor = editor.putAttribute(path.add(0).add(num), "test", ByteBuffer.wrap("test".getBytes())).b();
      editor = editor.success().b();
    }

    ParentIndex parentIndex = tree.getParentIndex();
    TreeNode node = tree.getRootNode();
    for (int num = 0; node.getChildren().size() != 0; num++) {
      Iterator<TreeNode> children = node.getChildren().iterator();
      for (; children.hasNext();) {
        TreeNode child = children.next();
        TreeNode parent = parentIndex.get(child).some();
        Assert.assertEquals(parent, node);
      }
      node = node.getChildren().at(num).b();
    }

    JungleTree oldTree = tree.getOldTree(tree.revision() - 1).b();
    TreeNode oldRoot = oldTree.getRootNode();
    TreeNode oldNode = oldRoot.getChildren().at(0).b();
    Option<TreeNode> oldParentOp = parentIndex.get(oldNode);
    Assert.assertTrue(oldParentOp.isNone());
    ParentIndex oldTreeParentIndex = oldTree.getParentIndex();
    oldParentOp = oldTreeParentIndex.get(oldNode);
    Assert.assertTrue(oldParentOp.isSome());

  }
}