comparison src/test/java/jp/ac/u_ryukyu/ie/cr/jungle/core/impl/treeeditor/DefaultTreeEditorTest.java @ 0:44465893e8b8

first Commit
author Kazuma
date Wed, 30 Nov 2016 01:47:55 +0900
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:44465893e8b8
1 package jp.ac.u_ryukyu.ie.cr.jungle.core.impl.treeeditor;
2
3 import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultNodePath;
4 import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.DefaultTreeEditor;
5 import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.TreeNode;
6 import jp.ac.u_ryukyu.ie.cr.jungle.store.impl.logger.LoggingNode;
7 import jp.ac.u_ryukyu.ie.cr.jungle.store.trasnformer.AppendChildAt;
8 import jp.ac.u_ryukyu.ie.cr.jungle.store.trasnformer.PutAttribute;
9 import jp.ac.u_ryukyu.ie.cr.jungle.tests.util.TestUtil;
10 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.DefaultTreeNode;
11 import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultEvaluator;
12 import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser;
13 import jp.ac.u_ryukyu.ie.cr.jungle.traverser.Traversal;
14 import jp.ac.u_ryukyu.ie.cr.jungle.util.Either;
15 import jp.ac.u_ryukyu.ie.cr.jungle.util.Error;
16 import junit.framework.Assert;
17 import junit.framework.TestCase;
18
19 import java.nio.ByteBuffer;
20
21 public class DefaultTreeEditorTest extends TestCase {
22 public DefaultTreeEditor instance() {
23 DefaultTraverser traverser = new DefaultTraverser();
24 return new DefaultTreeEditor(traverser);
25 }
26
27 public void testEdittingDoesNotEffectToOtherTree() {
28 TreeNode root = TestUtil.createMockTree(3);
29 DefaultTreeEditor editor = new DefaultTreeEditor(new DefaultTraverser());
30 DefaultNodePath path = new DefaultNodePath().add(0).add(2);
31
32 TreeNode oldRoot = root;
33
34 DefaultTreeEditor currentEditor = editor;
35 String key = "path";
36
37
38 TreeNode currentRoot = root;
39 for (DefaultNodePath part : path.inits()) {
40 String str = part.toString();
41 ByteBuffer value = ByteBuffer.wrap(str.getBytes());
42 PutAttribute putAttribute = new PutAttribute(key, value);
43 Either<Error, LoggingNode> either = currentEditor.edit(currentRoot, part, putAttribute);
44 if (either.isA()) {
45 Assert.fail();
46 }
47 currentRoot = either.b().getWrap();
48 }
49
50 TreeNode newRoot = currentRoot;
51 DefaultTraverser traverser = new DefaultTraverser();
52
53 for (DefaultNodePath part : path.inits()) {
54 Either<Error, Traversal> either = traverser.traverse(newRoot, new DefaultEvaluator(part));
55 if (either.isA()) {
56 Assert.fail();
57 }
58 TreeNode target = either.b().destination();
59 String expected = part.toString();
60 String actual = new String(target.getAttributes().get(key).array());
61
62 Assert.assertEquals(expected, actual);
63 }
64 for (DefaultNodePath part : path.inits()) {
65 Either<Error, Traversal> either = traverser.traverse(oldRoot, new DefaultEvaluator(part));
66 if (either.isA()) {
67 Assert.fail();
68 }
69 TreeNode target = either.b().destination();
70 ByteBuffer actual = target.getAttributes().get(key);
71
72 Assert.assertNull(actual);
73 }
74
75 }
76
77 public void testEdit() {
78 DefaultTreeEditor instance = instance();
79 DefaultTreeNode node = new DefaultTreeNode();
80 DefaultNodePath path = new DefaultNodePath();
81
82 Either<Error, LoggingNode> either = instance.edit(node, path, new AppendChildAt(0));
83 if (either.isA()) {
84 Assert.fail();
85 }
86 TreeNode newRoot = either.b().getWrap();
87 Assert.assertEquals(1, newRoot.getChildren().size());
88 }
89 }