view src/test/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/index/ParentIndexTest.java @ 157:f98f2704b154 untilIndex

minnerChange
author one
date Sun, 07 Dec 2014 18:43:32 +0900
parents d9fbddf77bf6
children
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.TreeEditor;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor;
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 DefaultTreeEditor (new DefaultTraverser()));
    jungle.createNewTree("tree");
    JungleTree tree = jungle.getTreeByName("tree");
    JungleTreeEditor editor = tree.getTreeEditor();
    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);
        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();
    TreeNode oldParent = parentIndex.get(oldNode);
    Assert.assertTrue(oldParent == null);
    ParentIndex oldTreeParentIndex = oldTree.getParentIndex();
    oldParent = oldTreeParentIndex.get(oldNode);
    Assert.assertTrue(oldParent != null);

  }
}