annotate src/test/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/index/AddChildrenIndexTest.java @ 144:0854f9a9e81d

change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
author one
date Sun, 16 Nov 2014 06:40:48 +0900
parents afbe19c98f53
children a2c374a2686b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
135
6e9a8d26e0cf refactor
one
parents:
diff changeset
1 package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.index;
6e9a8d26e0cf refactor
one
parents:
diff changeset
2
6e9a8d26e0cf refactor
one
parents:
diff changeset
3 import java.nio.ByteBuffer;
6e9a8d26e0cf refactor
one
parents:
diff changeset
4 import java.util.Iterator;
6e9a8d26e0cf refactor
one
parents:
diff changeset
5
6e9a8d26e0cf refactor
one
parents:
diff changeset
6 import org.junit.Test;
6e9a8d26e0cf refactor
one
parents:
diff changeset
7
6e9a8d26e0cf refactor
one
parents:
diff changeset
8 import fj.data.List;
6e9a8d26e0cf refactor
one
parents:
diff changeset
9 import fj.data.TreeMap;
6e9a8d26e0cf refactor
one
parents:
diff changeset
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle;
6e9a8d26e0cf refactor
one
parents:
diff changeset
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
6e9a8d26e0cf refactor
one
parents:
diff changeset
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
6e9a8d26e0cf refactor
one
parents:
diff changeset
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
6e9a8d26e0cf refactor
one
parents:
diff changeset
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
6e9a8d26e0cf refactor
one
parents:
diff changeset
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
6e9a8d26e0cf refactor
one
parents:
diff changeset
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor;
6e9a8d26e0cf refactor
one
parents:
diff changeset
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
6e9a8d26e0cf refactor
one
parents:
diff changeset
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode;
6e9a8d26e0cf refactor
one
parents:
diff changeset
19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.IndexJungleTreeEditor;
6e9a8d26e0cf refactor
one
parents:
diff changeset
20 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser;
6e9a8d26e0cf refactor
one
parents:
diff changeset
21 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser;
6e9a8d26e0cf refactor
one
parents:
diff changeset
22 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
6e9a8d26e0cf refactor
one
parents:
diff changeset
23 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
6e9a8d26e0cf refactor
one
parents:
diff changeset
24 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
6e9a8d26e0cf refactor
one
parents:
diff changeset
25 import junit.framework.Assert;
6e9a8d26e0cf refactor
one
parents:
diff changeset
26
6e9a8d26e0cf refactor
one
parents:
diff changeset
27 public class AddChildrenIndexTest {
6e9a8d26e0cf refactor
one
parents:
diff changeset
28
144
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
29 @Test
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
30 public void AddChildrenTest() {
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
31 Jungle jungle = new DefaultJungle(null, "hogehoge", new DefaultTreeEditor(new DefaultTraverser()));
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
32 jungle.createNewTree("tree");
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
33 JungleTree tree = jungle.getTreeByName("tree");
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
34 createTree(tree);
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
35 tree.getRootNode();
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
36 InterfaceTraverser ifTraverser = tree.getTraverser();
135
6e9a8d26e0cf refactor
one
parents:
diff changeset
37
144
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
38 Iterator<Pair<TreeNode, NodePath>> pairIterator = ifTraverser.find((TreeNode node) -> {
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
39 List<ByteBuffer> attributeList = node.getAttributes().get(key);
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
40 if (attributeList.isNotEmpty()) {
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
41 for (ByteBuffer attribute : attributeList) {
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
42 byte[] byteAttribute = attribute.array();
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
43 String str = new String(byteAttribute);
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
44 System.out.println("attribute = " + str);
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
45 if (str.equals("<-1,0,1>"))
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
46 return true;
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
47 continue;
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
48 }
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
49 }
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
50 return false;
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
51 }, key, "<-1,0,1>");
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
52
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
53 for (; pairIterator.hasNext(); pairIterator.next()) {
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
54
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
55 }
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
56 ifTraverser.commitIndex();
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
57
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
58 IndexJungleTreeEditor editor = tree.getIndexTreeEditor();
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
59 Either<Error, JungleTreeEditor> either = editor.addNewChildAt(new DefaultNodePath().add(0), 0);
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
60 either.b().success();
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
61
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
62 InterfaceTraverser newIfTraverser = tree.getTraverser();
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
63 TreeMap<String, TreeMap<String, List<NodePath>>> newIndex = newIfTraverser.getIndex();
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
64 NodePath targetPath = newIndex.get(key).some().get("<-1,0,2>").some().head();
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
65 TreeNode targetNode = getTarget(tree.getRootNode(), targetPath);
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
66 Iterator<String> attributeIterator = targetNode.getAttributes().getString(key);
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
67 Assert.assertTrue(attributeIterator.hasNext());
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
68 String attribute = attributeIterator.next();
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
69 Assert.assertEquals(attribute, "<-1,0,1>");
135
6e9a8d26e0cf refactor
one
parents:
diff changeset
70
144
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
71 }
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
72
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
73 public static String key = "KEY";
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
74 public static DefaultTreeNode factory = new DefaultTreeNode();
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
75
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
76 public void createTree(JungleTree tree) {
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
77 NodePath root = new DefaultNodePath();
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
78 createChildren(tree, root, 0);
135
6e9a8d26e0cf refactor
one
parents:
diff changeset
79
144
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
80 for (int x = 0; x < 3; x++) {
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
81 createChildren(tree, root.add(0), x);
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
82 for (int y = 0; y < 3; y++) {
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
83 createChildren(tree, root.add(0).add(x), y);
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
84 }
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
85 }
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
86
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
87 }
135
6e9a8d26e0cf refactor
one
parents:
diff changeset
88
144
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
89 public void createChildren(JungleTree tree, NodePath root, int num) {
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
90 JungleTreeEditor editor = tree.getTreeEditor();// Treeのeditorを作成
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
91 Either<Error, JungleTreeEditor> either = editor.addNewChildAt(root, num); // 新しく入れるところへのパス
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
92 if (either.isA()) {
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
93 Assert.fail();
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
94 }
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
95 editor = either.b();
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
96 either = editor.success();
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
97 if (either.isA()) {
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
98 Assert.fail();
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
99 }
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
100 NodePath childPath = root.add(num);
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
101 editor = tree.getTreeEditor();
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
102 NodePath attribute = root.add(num);
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
103 System.out.println(attribute.toString());
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
104 either = editor.putAttribute(childPath, key, ByteBuffer.wrap(attribute.toString().getBytes()));
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
105 if (either.isA()) {
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
106 Assert.fail();
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
107 }
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
108 editor = either.b();
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
109 either = editor.success();
0854f9a9e81d change attrs form TreeMap<String , ByteBuffer> → TreeMap<String,List<ByteBuffer>>
one
parents: 143
diff changeset
110 }
135
6e9a8d26e0cf refactor
one
parents:
diff changeset
111
143
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 141
diff changeset
112 public TreeNode getTarget(TreeNode node, NodePath path) {
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 141
diff changeset
113 Pair<Integer, NodePath> removeHeadPath = path.pop();
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 141
diff changeset
114
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 141
diff changeset
115 if (removeHeadPath.left() == -1)
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 141
diff changeset
116 return getTarget(node, removeHeadPath.right());
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 141
diff changeset
117
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 141
diff changeset
118 Either<Error, TreeNode> either = node.getChildren().at(removeHeadPath.left());
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 141
diff changeset
119 if (either.isA())
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 141
diff changeset
120 return node;
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 141
diff changeset
121
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 141
diff changeset
122 TreeNode child = either.b();
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 141
diff changeset
123 if (removeHeadPath.right().size() == 0)
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 141
diff changeset
124 return child;
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 141
diff changeset
125
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 141
diff changeset
126 TreeNode target = getTarget(child, removeHeadPath.right());
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 141
diff changeset
127 return target;
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 141
diff changeset
128 }
135
6e9a8d26e0cf refactor
one
parents:
diff changeset
129 }