6
|
1 package treecms.test;
|
|
2
|
17
|
3 import java.nio.ByteBuffer;
|
|
4 import java.util.List;
|
|
5 import java.util.Map;
|
9
|
6 import junit.framework.Assert;
|
|
7 import org.junit.Test;
|
|
8 import treecms.api.Forest;
|
17
|
9 import treecms.api.MonotonicTree;
|
|
10 import treecms.api.MonotonicTreeNode;
|
9
|
11 import treecms.api.NodeID;
|
16
|
12 import treecms.api.SingleNode;
|
9
|
13 import treecms.api.Tree;
|
17
|
14 import treecms.api.TreeNode;
|
|
15 import treecms.tree.util.NodeData;
|
6
|
16
|
9
|
17 /**
|
|
18 * Forest実装の基本的なテスト
|
|
19 * @author shoshi
|
|
20 */
|
|
21 public abstract class AbstractForestTest
|
|
22 {
|
|
23 public abstract Forest getInstance();
|
|
24
|
|
25 @Test
|
17
|
26 public void testCreate()
|
9
|
27 {
|
|
28 Forest forest = getInstance();
|
17
|
29
|
|
30 //正常にSingleNodeを作成できることを確認する(引数なし)
|
|
31 SingleNode test1 = forest.create();
|
|
32 Assert.assertNotNull(test1);
|
|
33
|
|
34 //正常にSingleNodeを作成できることを確認する(引数あり)
|
|
35 NodeData<SingleNode> d = new NodeData<SingleNode>();
|
|
36 d.add(forest.create());
|
|
37 d.put(ByteBuffer.wrap("name".getBytes()),ByteBuffer.wrap("value".getBytes()));
|
|
38 SingleNode test2 = forest.create(d);
|
|
39 Assert.assertNotNull(test2);
|
|
40
|
|
41 //指定したNodeData<SingleNode>が正しく継承されているか確認する
|
|
42 List<SingleNode> list1 = d.getList();
|
|
43 List<SingleNode> list2 = test2.getList();
|
|
44 Assert.assertEquals(true,list1.equals(list2));
|
|
45
|
|
46 Map<ByteBuffer,ByteBuffer> map1 = d.asMap();
|
|
47 Map<ByteBuffer,ByteBuffer> map2 = test2.asMap();
|
|
48 Assert.assertEquals(true,map1.equals(map2));
|
9
|
49 }
|
|
50
|
|
51 @Test
|
17
|
52 public void testGet()
|
9
|
53 {
|
|
54 Forest forest = getInstance();
|
16
|
55 SingleNode newNode = forest.create();
|
9
|
56 NodeID newID = newNode.getID();
|
|
57
|
17
|
58 SingleNode test1 = forest.get(newID);
|
|
59
|
|
60 //同じノードであることを確認する
|
|
61 Assert.assertEquals(newNode,test1);
|
9
|
62
|
17
|
63 //forest.get(NodeID _id)にnullが渡されたときNullPointerExceptionが発生する
|
|
64 try{
|
|
65 forest.get(null);
|
|
66 Assert.fail("no NullPointerException occurs when call forest.get(null)");
|
|
67 }catch(NullPointerException _e){
|
|
68 }
|
|
69
|
|
70 //存在しないNodeIDが指定された場合はnullである
|
|
71 NodeID updated = newID.update();
|
|
72 SingleNode test2 = forest.get(updated);
|
|
73 Assert.assertNull(test2);
|
9
|
74 }
|
|
75
|
|
76 @Test
|
|
77 public void testGetTip()
|
|
78 {
|
|
79 Forest forest = getInstance();
|
17
|
80
|
|
81 //SingleNodeを作成した時点で、最新版と比較し一致することを確認する
|
16
|
82 SingleNode newNode = forest.create();
|
9
|
83 NodeID newID = newNode.getID();
|
16
|
84 SingleNode tip = forest.getTip(newID.getUUID());
|
9
|
85
|
|
86 Assert.assertEquals(newNode,tip);
|
17
|
87
|
|
88 //同じUUIDを持つSingleNodeを登録すると、最新版が更新される
|
|
89 NodeData<SingleNode> d = new NodeData<SingleNode>(tip,tip);
|
|
90 SingleNode test1 = forest.create(tip.getID().update(),d);
|
|
91 tip = forest.getTip(test1.getID().getUUID());
|
|
92
|
|
93 Assert.assertEquals(test1,tip);
|
|
94
|
|
95 //nullが渡された場合は、NullPointerExceptionが発生する
|
|
96 try{
|
|
97 forest.getTip(null);
|
|
98 Assert.fail("no NullPointerException occurs when call forest.getTip(null)");
|
|
99 }catch(NullPointerException _e){
|
|
100 //OK
|
|
101 }
|
9
|
102 }
|
|
103
|
16
|
104 @Test
|
17
|
105 public void testGetTree()
|
16
|
106 {
|
17
|
107 Forest f = getInstance();
|
16
|
108
|
17
|
109 //同一のForestから作成されたSingleNodeから正しくTreeが作成できるか確認する。
|
|
110 SingleNode n = f.create();
|
|
111 Tree t = f.getTree(n);
|
|
112 Assert.assertNotNull(t);
|
|
113
|
|
114 //作成したTreeからTreeNodeのルートが取得できる。
|
|
115 TreeNode root = t.getRoot();
|
|
116 Assert.assertNotNull(t.getRoot());
|
|
117
|
|
118 //取得したTreeNodeから引数に指定したSingleNodeが取得できるか確認する
|
|
119 Assert.assertEquals(n,root.getNode());
|
16
|
120 }
|
|
121
|
17
|
122 @Test
|
|
123 public void testGetMonotonicTree()
|
|
124 {
|
|
125 Forest f = getInstance();
|
|
126 SingleNode newNode = f.create();
|
|
127
|
|
128 Tree newTree = f.getTree(newNode);
|
|
129 MonotonicTree newMonoTree = f.getMonotonicTree(newTree);
|
|
130 Assert.assertNotNull(newMonoTree);
|
|
131
|
|
132 MonotonicTreeNode m = newMonoTree.getRoot();
|
|
133 Assert.assertNotNull(m);
|
|
134 SingleNode n = m.getNode();
|
|
135 Assert.assertEquals(true,n.equals(newNode));
|
|
136
|
|
137 Tree t2 = newMonoTree.getTree();
|
|
138 Assert.assertNotNull(t2);
|
|
139 Assert.assertEquals(true,t2.equals(t2));
|
|
140 }
|
|
141
|
9
|
142 @Test
|
|
143 public void testGetMainTree()
|
|
144 {
|
|
145 Forest forest = getInstance();
|
|
146 Tree contents = forest.getMainTree();
|
|
147
|
|
148 Assert.assertNotNull(contents);
|
|
149 }
|
6
|
150 }
|