annotate src/test/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/index/AddChildrenIndexTest.java @ 148:a2c374a2686b

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