Mercurial > hg > Members > kazuma > jungle-ormapper
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 } |