Mercurial > hg > Members > tatsuki > bench > jungle-core
annotate src/test/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/index/AddChildrenIndexTest.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 | 3071b1a471fd |
children | 0854f9a9e81d |
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 import org.junit.experimental.theories.suppliers.TestedOn; | |
8 | |
9 import fj.data.List; | |
10 import fj.data.Option; | |
11 import fj.data.TreeMap; | |
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle; | |
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle; | |
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; | |
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor; | |
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; | |
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; | |
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; | |
19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; | |
20 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode; | |
21 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.IndexJungleTreeEditor; | |
22 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; | |
23 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; | |
24 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; | |
25 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; | |
26 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; | |
27 import junit.framework.Assert; | |
28 | |
29 public class AddChildrenIndexTest { | |
30 | |
31 @Test | |
143
afbe19c98f53
change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents:
141
diff
changeset
|
32 public void AddChildrenTest(){ |
135 | 33 Jungle jungle = new DefaultJungle(null, "hogehoge",new DefaultTreeEditor(new DefaultTraverser())); |
34 jungle.createNewTree("tree"); | |
35 JungleTree tree = jungle.getTreeByName("tree"); | |
36 createTree(tree); | |
37 tree.getRootNode(); | |
38 InterfaceTraverser ifTraverser = tree.getTraverser(); | |
39 | |
40 Iterator<Pair<TreeNode, NodePath>> pairIterator = ifTraverser.find((TreeNode node) -> { | |
41 ByteBuffer attribute = node.getAttributes().get(key); | |
42 if (attribute != null) { | |
43 byte[] byteAttribute = attribute.array(); | |
44 String str = new String(byteAttribute); | |
45 System.out.println("attribute = " + str); | |
46 return str.equals("<-1,0,1>"); | |
47 } | |
48 return false; | |
49 }, key, "<-1,0,1>"); | |
50 | |
51 for (;pairIterator.hasNext();pairIterator.next()) { | |
52 | |
53 } | |
54 ifTraverser.commitIndex(); | |
55 | |
56 IndexJungleTreeEditor editor = tree.getIndexTreeEditor(); | |
57 Either<Error, JungleTreeEditor> either = editor.addNewChildAt(new DefaultNodePath().add(0), 0); | |
58 either.b().success(); | |
59 | |
60 InterfaceTraverser newIfTraverser = tree.getTraverser(); | |
143
afbe19c98f53
change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents:
141
diff
changeset
|
61 TreeMap<String, TreeMap<String, List<NodePath>>> newIndex = newIfTraverser.getIndex(); |
afbe19c98f53
change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents:
141
diff
changeset
|
62 NodePath targetPath = newIndex.get(key).some().get("<-1,0,2>").some().head(); |
afbe19c98f53
change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents:
141
diff
changeset
|
63 TreeNode targetNode = getTarget(tree.getRootNode(), targetPath); |
afbe19c98f53
change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents:
141
diff
changeset
|
64 Assert.assertEquals(targetNode.getAttributes().getString(key) ,"<-1,0,1>"); |
135 | 65 |
66 } | |
67 public static String key = "KEY"; | |
68 public static DefaultTreeNode factory = new DefaultTreeNode(); | |
69 | |
70 public void createTree(JungleTree tree) { | |
71 NodePath root = new DefaultNodePath(); | |
72 createChildren(tree, root, 0); | |
73 | |
74 for (int x = 0; x < 3; x++) { | |
75 createChildren(tree, root.add(0), x); | |
76 for (int y = 0; y < 3; y++) { | |
77 createChildren(tree, root.add(0).add(x), y); | |
78 } | |
79 } | |
80 | |
81 } | |
82 | |
83 public void createChildren(JungleTree tree, NodePath root, int num) { | |
84 JungleTreeEditor editor = tree.getTreeEditor();// Treeのeditorを作成 | |
85 Either<Error, JungleTreeEditor> either = editor | |
86 .addNewChildAt(root, num); // 新しく入れるところへのパス | |
87 if (either.isA()) { | |
88 Assert.fail(); | |
89 } | |
90 editor = either.b(); | |
91 either = editor.success(); | |
92 if (either.isA()) { | |
93 Assert.fail(); | |
94 } | |
95 NodePath childPath = root.add(num); | |
96 editor = tree.getTreeEditor(); | |
97 NodePath attribute = root.add(num); | |
98 System.out.println(attribute.toString()); | |
99 either = editor.putAttribute(childPath, key,ByteBuffer.wrap(attribute.toString().getBytes())); | |
100 if (either.isA()) { | |
101 Assert.fail(); | |
102 } | |
103 editor = either.b(); | |
104 either = editor.success(); | |
105 } | |
143
afbe19c98f53
change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents:
141
diff
changeset
|
106 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
|
107 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
|
108 |
afbe19c98f53
change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents:
141
diff
changeset
|
109 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
|
110 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
|
111 |
afbe19c98f53
change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents:
141
diff
changeset
|
112 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
|
113 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
|
114 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
|
115 |
afbe19c98f53
change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents:
141
diff
changeset
|
116 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
|
117 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
|
118 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
|
119 |
afbe19c98f53
change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents:
141
diff
changeset
|
120 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
|
121 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
|
122 } |
135 | 123 } |