annotate src/test/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverse/TraverserTest.java @ 54:650fe2a0dccc

modified tests
author Shoshi TAMAKI
date Fri, 08 Feb 2013 17:08:42 +0900
parents 449d67be0886
children 053c9b52a5b2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
1 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverse;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
2
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
3 import java.nio.ByteBuffer;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
4 import org.junit.Assert;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
5
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
6 import fj.data.List;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
7
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNode;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TraversableNodeWrapper;
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 44
diff changeset
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode;
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultEvaluator;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Direction;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traversal;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traverser;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
19 import junit.framework.TestCase;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
20
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
21 public abstract class TraverserTest extends TestCase
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
22 {
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
23 public abstract Traverser instance();
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
24
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
25 public void testTraverse()
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
26 {
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
27 int maxHeight = 3;
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 44
diff changeset
28 DefaultTreeNode root = createTree(0,0,maxHeight,new DefaultNodePath());
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
29
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 44
diff changeset
30 TraversableNodeWrapper<DefaultTreeNode> traversable = new TraversableNodeWrapper<DefaultTreeNode>(root);
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
31 Traverser traverser = instance();
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
32
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
33 // generate all pattern.
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
34 List<DefaultNodePath> paths = generatePathPattern(new DefaultNodePath(),0,maxHeight);
44
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
35 paths = paths.cons(new DefaultNodePath());
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
36
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
37 for(DefaultNodePath path : paths){
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
38 DefaultEvaluator evaluator = new DefaultEvaluator(path);
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 44
diff changeset
39 Either<Error,Traversal<TraversableNodeWrapper<DefaultTreeNode>>> ret = traverser.traverse(traversable,evaluator);
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
40 if(ret.isA()){
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
41 Assert.fail();
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
42 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
43
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 44
diff changeset
44 Traversal<TraversableNodeWrapper<DefaultTreeNode>> traversal = ret.b();
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 44
diff changeset
45 TraversableNodeWrapper<DefaultTreeNode> target = traversal.destination();
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
46 String expect = path.toString();
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
47 ByteBuffer value = target.getWrapped().getAttributes().get(key);
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
48 String actual = new String(value.array());
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
49 Assert.assertEquals(expect,actual);
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
50
44
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
51 List<DefaultNodePath> parts = path.inits();
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
52
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 44
diff changeset
53 for(Direction<TraversableNodeWrapper<DefaultTreeNode>> d : traversal){
44
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
54 DefaultNodePath part = parts.head();
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
55 parts = parts.tail();
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
56 value = d.getTarget().getWrapped().getAttributes().get(key);
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
57 String actualCurrentPathStr = new String(value.array());
44
449d67be0886 added tests
Shoshi TAMAKI
parents: 43
diff changeset
58 String expectCurrentPathStr = part.toString();
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
59 Assert.assertEquals(expectCurrentPathStr,actualCurrentPathStr);
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
60 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
61 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
62 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
63
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
64 public List<DefaultNodePath> generatePathPattern(DefaultNodePath _cur,int _curHeight,int _maxHeight)
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
65 {
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
66 List<DefaultNodePath> paths = List.nil();
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
67 for(int p = 0;p <= _curHeight;p ++){
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
68 DefaultNodePath path = _cur.add(p);
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
69 if(_curHeight != _maxHeight - 1){
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
70 List<DefaultNodePath> newpaths = generatePathPattern(path,_curHeight+1,_maxHeight);
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
71 paths = paths.append(newpaths);
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
72 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
73 paths = paths.cons(path);
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
74 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
75
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
76 return paths;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
77 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
78
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
79 public static String key = "KEY";
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
80 public static ByteBuffer value = ByteBuffer.wrap(key.getBytes());
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 44
diff changeset
81 public static DefaultTreeNode factory = new DefaultTreeNode(new DefaultNode());
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
82
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 44
diff changeset
83 public DefaultTreeNode createTree(int _curX,int _curY,int _maxHeight,NodePath _address)
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
84 {
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 44
diff changeset
85 DefaultTreeNode parent = factory.createNewNode();
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 44
diff changeset
86 Either<Error,DefaultTreeNode> either = parent.getAttributes().put(key,ByteBuffer.wrap(_address.toString().getBytes()));
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
87 if(either.isA()){
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
88 Assert.fail();
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
89 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
90 parent = either.b();
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
91
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
92 if(_curY == _maxHeight){
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
93 return parent;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
94 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
95
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
96 for(int i = 0;i < _curY + 1;i ++){
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 44
diff changeset
97 DefaultTreeNode ch = createTree(i,_curY + 1,_maxHeight,_address.add(i));
43
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
98 either = parent.getChildren().addNewChildAt(i,ch);
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
99 if(either.isA()){
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
100 Assert.fail();
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
101 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
102
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
103 parent = either.b();
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
104 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
105
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
106 return parent;
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
107 }
1c91c4357228 added traverser test
Shoshi TAMAKI
parents:
diff changeset
108 }