view src/test/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/index/ParentIndexTest.java @ 146:371b6ddb78f2

repair putAttributeIndex and deleteAttributeIndex
author one
date Fri, 21 Nov 2014 12:46:06 +0900
parents 72f454eb04ec
children feb2346ace19
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 junit.framework.Assert;

import org.junit.Test;

import fj.data.List;
import fj.data.Option;
import fj.data.TreeMap;

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().success().b();
      editor = editor.putAttribute(path.add(0).add(num), "test",ByteBuffer.wrap("test".getBytes())).b().success().b();
    }
    
    TreeMap<TreeNode, TreeNode> 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());
    TreeMap<TreeNode, TreeNode> oldTreeParentIndex = oldTree.getParentIndex();
    oldParentOp = oldTreeParentIndex.get(oldNode);
    Assert.assertTrue(oldParentOp.isSome());
        
  }
}