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

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