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