comparison 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
comparison
equal deleted inserted replaced
53:ed890dcb673e 54:650fe2a0dccc
7 7
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; 8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNode; 9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNode;
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; 10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TraversableNodeWrapper; 11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TraversableNodeWrapper;
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.ClonableDefaultNode; 12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode;
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultEvaluator; 13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultEvaluator;
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Direction; 14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Direction;
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traversal; 15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traversal;
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traverser; 16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traverser;
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; 17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; 18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
20 import junit.framework.TestCase; 19 import junit.framework.TestCase;
21 20
22 public abstract class TraverserTest extends TestCase 21 public abstract class TraverserTest extends TestCase
23 { 22 {
24 public abstract Traverser instance(); 23 public abstract Traverser instance();
25 24
26 public void testTraverse() 25 public void testTraverse()
27 { 26 {
28 int maxHeight = 3; 27 int maxHeight = 3;
29 ClonableDefaultNode root = createTree(0,0,maxHeight,new DefaultNodePath()); 28 DefaultTreeNode root = createTree(0,0,maxHeight,new DefaultNodePath());
30 29
31 TraversableNodeWrapper<ClonableDefaultNode> traversable = new TraversableNodeWrapper<ClonableDefaultNode>(root); 30 TraversableNodeWrapper<DefaultTreeNode> traversable = new TraversableNodeWrapper<DefaultTreeNode>(root);
32 Traverser traverser = instance(); 31 Traverser traverser = instance();
33 32
34 // generate all pattern. 33 // generate all pattern.
35 List<DefaultNodePath> paths = generatePathPattern(new DefaultNodePath(),0,maxHeight); 34 List<DefaultNodePath> paths = generatePathPattern(new DefaultNodePath(),0,maxHeight);
36 paths = paths.cons(new DefaultNodePath()); 35 paths = paths.cons(new DefaultNodePath());
37 36
38 for(DefaultNodePath path : paths){ 37 for(DefaultNodePath path : paths){
39 DefaultEvaluator evaluator = new DefaultEvaluator(path); 38 DefaultEvaluator evaluator = new DefaultEvaluator(path);
40 Either<Error,Traversal<TraversableNodeWrapper<ClonableDefaultNode>>> ret = traverser.traverse(traversable,evaluator); 39 Either<Error,Traversal<TraversableNodeWrapper<DefaultTreeNode>>> ret = traverser.traverse(traversable,evaluator);
41 if(ret.isA()){ 40 if(ret.isA()){
42 Assert.fail(); 41 Assert.fail();
43 } 42 }
44 43
45 Traversal<TraversableNodeWrapper<ClonableDefaultNode>> traversal = ret.b(); 44 Traversal<TraversableNodeWrapper<DefaultTreeNode>> traversal = ret.b();
46 TraversableNodeWrapper<ClonableDefaultNode> target = traversal.destination(); 45 TraversableNodeWrapper<DefaultTreeNode> target = traversal.destination();
47 String expect = path.toString(); 46 String expect = path.toString();
48 ByteBuffer value = target.getWrapped().getAttributes().get(key); 47 ByteBuffer value = target.getWrapped().getAttributes().get(key);
49 String actual = new String(value.array()); 48 String actual = new String(value.array());
50 Assert.assertEquals(expect,actual); 49 Assert.assertEquals(expect,actual);
51 50
52 List<DefaultNodePath> parts = path.inits(); 51 List<DefaultNodePath> parts = path.inits();
53 52
54 for(Direction<TraversableNodeWrapper<ClonableDefaultNode>> d : traversal){ 53 for(Direction<TraversableNodeWrapper<DefaultTreeNode>> d : traversal){
55 DefaultNodePath part = parts.head(); 54 DefaultNodePath part = parts.head();
56 parts = parts.tail(); 55 parts = parts.tail();
57 value = d.getTarget().getWrapped().getAttributes().get(key); 56 value = d.getTarget().getWrapped().getAttributes().get(key);
58 String actualCurrentPathStr = new String(value.array()); 57 String actualCurrentPathStr = new String(value.array());
59 String expectCurrentPathStr = part.toString(); 58 String expectCurrentPathStr = part.toString();
77 return paths; 76 return paths;
78 } 77 }
79 78
80 public static String key = "KEY"; 79 public static String key = "KEY";
81 public static ByteBuffer value = ByteBuffer.wrap(key.getBytes()); 80 public static ByteBuffer value = ByteBuffer.wrap(key.getBytes());
82 public static ClonableDefaultNode factory = new ClonableDefaultNode(new DefaultNode()); 81 public static DefaultTreeNode factory = new DefaultTreeNode(new DefaultNode());
83 82
84 public ClonableDefaultNode createTree(int _curX,int _curY,int _maxHeight,NodePath _address) 83 public DefaultTreeNode createTree(int _curX,int _curY,int _maxHeight,NodePath _address)
85 { 84 {
86 ClonableDefaultNode parent = factory.createNewNode(); 85 DefaultTreeNode parent = factory.createNewNode();
87 Either<Error,ClonableDefaultNode> either = parent.getAttributes().put(key,ByteBuffer.wrap(_address.toString().getBytes())); 86 Either<Error,DefaultTreeNode> either = parent.getAttributes().put(key,ByteBuffer.wrap(_address.toString().getBytes()));
88 if(either.isA()){ 87 if(either.isA()){
89 Assert.fail(); 88 Assert.fail();
90 } 89 }
91 parent = either.b(); 90 parent = either.b();
92 91
93 if(_curY == _maxHeight){ 92 if(_curY == _maxHeight){
94 return parent; 93 return parent;
95 } 94 }
96 95
97 for(int i = 0;i < _curY + 1;i ++){ 96 for(int i = 0;i < _curY + 1;i ++){
98 ClonableDefaultNode ch = createTree(i,_curY + 1,_maxHeight,_address.add(i)); 97 DefaultTreeNode ch = createTree(i,_curY + 1,_maxHeight,_address.add(i));
99 either = parent.getChildren().addNewChildAt(i,ch); 98 either = parent.getChildren().addNewChildAt(i,ch);
100 if(either.isA()){ 99 if(either.isA()){
101 Assert.fail(); 100 Assert.fail();
102 } 101 }
103 102