Mercurial > hg > Members > tatsuki > bench > jungle-core
view src/test/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/index/AttributeIndexTest.java @ 143:afbe19c98f53
change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
bag
author | one |
---|---|
date | Sat, 15 Nov 2014 17:48:07 +0900 |
parents | f46a6e0e4594 |
children | 0854f9a9e81d |
line wrap: on
line source
package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.index; import java.nio.ByteBuffer; import org.junit.Test; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle; 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.NodePath; 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.transaction.IndexJungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; import junit.framework.Assert; import fj.data.List; import fj.data.TreeMap; public class AttributeIndexTest { @Test public void PutAttributeIndexTest(){ DefaultJungle jungle = new DefaultJungle(null,"hoge",new DefaultTreeEditor(new DefaultTraverser())); JungleTree tree = jungle.createNewTree("fuga"); IndexJungleTreeEditor editor = tree.getIndexTreeEditor(); TreeMap<String, TreeMap<String, List<NodePath>>> emptyIndex = editor.getIndex(); Assert.assertTrue(emptyIndex.isEmpty()); NodePath path = new DefaultNodePath(); Either<Error, JungleTreeEditor> either = editor.addNewChildAt(path, 0); Assert.assertFalse(either.isA()); JungleTreeEditor editor2 = either.b(); Either<Error, JungleTreeEditor> either2 = editor2.putAttribute(path.add(0),"key", ByteBuffer.wrap("test".toString().getBytes())); Assert.assertFalse(either2.isA()); JungleTreeEditor editor3 = either2.b(); editor3.success(); IndexJungleTreeEditor IndexEditor = tree.getIndexTreeEditor(); TreeMap<String, TreeMap<String, List< NodePath>>> index = IndexEditor.getIndex(); NodePath targetPath = index.get("key").some().get("test").some().head(); TreeNode targetNode = getTarget(tree.getRootNode(), targetPath); Assert.assertEquals(targetNode.getAttributes().getString("key"),"test"); JungleTreeEditor editor4 = tree.getIndexTreeEditor(); Either<Error, JungleTreeEditor> either3 = editor4.deleteAttribute(path.add(0), "key"); Assert.assertFalse(either3.isA()); JungleTreeEditor editor5 = either3.b(); editor5.success(); IndexJungleTreeEditor IndexEditor2 = tree.getIndexTreeEditor(); TreeMap<String, TreeMap<String, List<NodePath>>> deleteIndex = IndexEditor2.getIndex(); Assert.assertTrue(deleteIndex.isEmpty()); } public TreeNode getTarget(TreeNode node, NodePath path) { Pair<Integer, NodePath> removeHeadPath = path.pop(); if (removeHeadPath.left() == -1) return getTarget(node, removeHeadPath.right()); Either<Error, TreeNode> either = node.getChildren().at(removeHeadPath.left()); if (either.isA()) return node; TreeNode child = either.b(); if (removeHeadPath.right().size() == 0) return child; TreeNode target = getTarget(child, removeHeadPath.right()); return target; } }