107
|
1 /*package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverse;
|
98
|
2
|
|
3 import java.nio.ByteBuffer;
|
|
4 import java.util.Iterator;
|
|
5
|
101
|
6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
|
98
|
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
|
|
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
|
|
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
|
|
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode;
|
100
|
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser;
|
98
|
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
|
|
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
|
|
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
|
|
15 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.query.SearchQuery;
|
101
|
16 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.query.UpdateQuery;
|
98
|
17 import junit.framework.TestCase;
|
|
18
|
|
19 import org.junit.Assert;
|
|
20 import org.junit.Test;
|
|
21
|
|
22 public abstract class BruteForceTraverserTest extends TestCase{
|
100
|
23 public abstract InterfaceTraverser instance(TreeNode node);
|
98
|
24
|
|
25 @Test
|
101
|
26 public void testSearch() {
|
98
|
27 int maxHeight = 3;
|
|
28 Pair<TreeNode, NodePath> test = null;
|
|
29 TreeNode root = createTree(0,0,maxHeight,new DefaultNodePath());
|
100
|
30 InterfaceTraverser traverser = instance(root);
|
101
|
31 Iterator<Pair<TreeNode, NodePath>> itNode = traverser.find(new SearchQuery("KEY","<-1,0,0>"));
|
98
|
32 for(;itNode.hasNext(); ){
|
|
33 test = itNode.next();
|
|
34 }
|
|
35 String str = new String(test.left().getAttributes().get("KEY").array());
|
101
|
36 Assert.assertEquals(str,"<-1,0,0>");
|
|
37 }
|
|
38
|
|
39 @Test
|
|
40 public void testUpdate() {
|
|
41 int maxHeight = 3;
|
|
42 Pair<TreeNode, NodePath> test = null;
|
|
43 TreeNode root = createTree(0,0,maxHeight,new DefaultNodePath());
|
|
44 InterfaceTraverser traverser = instance(root);
|
|
45 JungleTreeEditor editor = traverser.update(new UpdateQuery("KEY", "<-1,0,0>", "tatsuki"));
|
|
46 traverser.set(editor.getRoot());
|
|
47 Iterator<Pair<TreeNode, NodePath>> checkNode = traverser.find(new SearchQuery("KEY","tatsuki"));
|
|
48 for(;checkNode.hasNext(); ){
|
|
49 test = checkNode.next();
|
|
50 }
|
|
51 String str = new String(test.left().getAttributes().get("KEY").array());
|
|
52 Assert.assertEquals(str,"tatsuki");
|
98
|
53 }
|
|
54
|
|
55 public static String key = "KEY";
|
|
56 public static ByteBuffer value = ByteBuffer.wrap(key.getBytes());
|
|
57 public static DefaultTreeNode factory = new DefaultTreeNode();
|
|
58
|
|
59 public static TreeNode createTree(int _curX,int _curY,int _maxHeight,NodePath _address)
|
|
60 {
|
101
|
61 System.out.println(_address.toString());
|
98
|
62 TreeNode parent = factory.createNewNode();
|
|
63 Either<Error,TreeNode> either = parent.getAttributes().put(key,ByteBuffer.wrap(_address.toString().getBytes()));
|
|
64 if(either.isA()){
|
|
65 Assert.fail();
|
|
66 }
|
|
67 parent = either.b();
|
|
68
|
|
69 if(_curY == _maxHeight){
|
|
70 return parent;
|
|
71 }
|
|
72
|
|
73 for(int i = 0;i < _curY + 1;i ++){
|
|
74 TreeNode ch = createTree(i,_curY + 1,_maxHeight,_address.add(i));
|
|
75 either = parent.getChildren().addNewChildAt(i,ch);
|
|
76 if(either.isA()){
|
|
77 Assert.fail();
|
|
78 }
|
|
79
|
|
80 parent = either.b();
|
|
81 }
|
|
82
|
|
83 return parent;
|
|
84 }
|
|
85
|
107
|
86 }*/
|