annotate src/test/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/core/impl/treeeditor/DefaultTreeEditorTest.java @ 70:053c9b52a5b2

testProgram error fix
author one
date Wed, 20 Aug 2014 18:10:30 +0900
parents 650fe2a0dccc
children 715a9fbf02fc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
44
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
1 package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.impl.treeeditor;
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
2
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
3 import java.nio.ByteBuffer;
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
4 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
5 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor;
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.AppendChildAt;
49
e3a507fd57a4 modified TreeEditor and JungleTreeEditor (not done yet)
Shoshi TAMAKI
parents: 45
diff changeset
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.PutAttribute;
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.tests.util.TestUtil;
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 49
diff changeset
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode;
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultEvaluator;
44
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser;
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traversal;
44
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
15 import junit.framework.Assert;
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
16 import junit.framework.TestCase;
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
17
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
18 public class DefaultTreeEditorTest extends TestCase
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
19 {
49
e3a507fd57a4 modified TreeEditor and JungleTreeEditor (not done yet)
Shoshi TAMAKI
parents: 45
diff changeset
20 public DefaultTreeEditor instance()
44
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
21 {
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
22 DefaultTraverser traverser = new DefaultTraverser();
49
e3a507fd57a4 modified TreeEditor and JungleTreeEditor (not done yet)
Shoshi TAMAKI
parents: 45
diff changeset
23 return new DefaultTreeEditor(traverser);
44
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
24 }
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
25
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
26 public void testEdittingDoesNotEffectToOtherTree()
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
27 {
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 49
diff changeset
28 DefaultTreeNode root = TestUtil.createMockTree(3);
49
e3a507fd57a4 modified TreeEditor and JungleTreeEditor (not done yet)
Shoshi TAMAKI
parents: 45
diff changeset
29 DefaultTreeEditor editor = new DefaultTreeEditor(new DefaultTraverser());
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
30 DefaultNodePath path = new DefaultNodePath().add(0).add(2);
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
31
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 49
diff changeset
32 DefaultTreeNode oldRoot = root;
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
33
49
e3a507fd57a4 modified TreeEditor and JungleTreeEditor (not done yet)
Shoshi TAMAKI
parents: 45
diff changeset
34 DefaultTreeEditor currentEditor = editor;
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
35 String key = "path";
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
36
49
e3a507fd57a4 modified TreeEditor and JungleTreeEditor (not done yet)
Shoshi TAMAKI
parents: 45
diff changeset
37
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 49
diff changeset
38 DefaultTreeNode currentRoot = root;
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
39 for(DefaultNodePath part : path.inits()){
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
40 ByteBuffer value = ByteBuffer.wrap(part.toString().getBytes());
49
e3a507fd57a4 modified TreeEditor and JungleTreeEditor (not done yet)
Shoshi TAMAKI
parents: 45
diff changeset
41 PutAttribute putAttribute = new PutAttribute(key,value);
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 49
diff changeset
42 Either<Error,DefaultTreeNode> either = currentEditor.edit(currentRoot,part,putAttribute);
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
43 if(either.isA()){
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
44 Assert.fail();
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
45 }
49
e3a507fd57a4 modified TreeEditor and JungleTreeEditor (not done yet)
Shoshi TAMAKI
parents: 45
diff changeset
46 currentRoot = either.b();
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
47 }
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
48
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 49
diff changeset
49 DefaultTreeNode newRoot = currentRoot;
49
e3a507fd57a4 modified TreeEditor and JungleTreeEditor (not done yet)
Shoshi TAMAKI
parents: 45
diff changeset
50 DefaultTraverser traverser = new DefaultTraverser();
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
51
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
52 for(DefaultNodePath part : path.inits()){
70
053c9b52a5b2 testProgram error fix
one
parents: 54
diff changeset
53 Either<Error,Traversal<DefaultTreeNode>> either = traverser.traverse(newRoot,new DefaultEvaluator(part));
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
54 if(either.isA()){
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
55 Assert.fail();
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
56 }
70
053c9b52a5b2 testProgram error fix
one
parents: 54
diff changeset
57 DefaultTreeNode target = either.b().destination();
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
58 String expected = part.toString();
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
59 String actual = new String(target.getAttributes().get(key).array());
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
60
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
61 Assert.assertEquals(expected,actual);
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
62 }
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
63
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
64 for(DefaultNodePath part : path.inits()){
70
053c9b52a5b2 testProgram error fix
one
parents: 54
diff changeset
65 Either<Error,Traversal<DefaultTreeNode>> either = traverser.traverse(oldRoot,new DefaultEvaluator(part));
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
66 if(either.isA()){
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
67 Assert.fail();
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
68 }
70
053c9b52a5b2 testProgram error fix
one
parents: 54
diff changeset
69 DefaultTreeNode target = either.b().destination();
45
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
70 ByteBuffer actual = target.getAttributes().get(key);
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
71
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
72 Assert.assertNull(actual);
fb00d7b147c8 added JungleTree service
Shoshi TAMAKI
parents: 44
diff changeset
73 }
44
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
74
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
75 }
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
76
49
e3a507fd57a4 modified TreeEditor and JungleTreeEditor (not done yet)
Shoshi TAMAKI
parents: 45
diff changeset
77 public void testEdit()
44
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
78 {
49
e3a507fd57a4 modified TreeEditor and JungleTreeEditor (not done yet)
Shoshi TAMAKI
parents: 45
diff changeset
79 DefaultTreeEditor instance = instance();
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 49
diff changeset
80 DefaultTreeNode node = new DefaultTreeNode();
44
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
81 DefaultNodePath path = new DefaultNodePath();
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
82
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 49
diff changeset
83 Either<Error,DefaultTreeNode> either = instance.edit(node,path,new AppendChildAt(0));
44
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
84 if(either.isA()){
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
85 Assert.fail();
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
86 }
54
650fe2a0dccc modified tests
Shoshi TAMAKI
parents: 49
diff changeset
87 DefaultTreeNode newRoot = either.b();
49
e3a507fd57a4 modified TreeEditor and JungleTreeEditor (not done yet)
Shoshi TAMAKI
parents: 45
diff changeset
88 Assert.assertEquals(1,newRoot.getChildren().size());
44
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
89 }
449d67be0886 added tests
Shoshi TAMAKI
parents:
diff changeset
90 }