Mercurial > hg > Members > tatsuki > bench > jungle-core
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 |
rev | line source |
---|---|
135 | 1 package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.index; |
2 | |
3 import java.nio.ByteBuffer; | |
4 import java.util.Iterator; | |
5 | |
6 import org.junit.Test; | |
7 | |
8 import fj.data.List; | |
9 import fj.data.TreeMap; | |
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle; | |
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle; | |
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; | |
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor; | |
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; | |
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; | |
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; | |
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; | |
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode; | |
19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.IndexJungleTreeEditor; | |
20 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; | |
21 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; | |
22 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; | |
23 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; | |
24 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; | |
25 import junit.framework.Assert; | |
26 | |
27 public class AddChildrenIndexTest { | |
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 | 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 | 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 | 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 | 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 | 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 | 129 } |