comparison src/treecms/test/AbstractForestTest.java @ 17:168deb591f21

commit
author shoshi
date Tue, 24 May 2011 00:33:12 +0900
parents bb9760760744
children c1e7ec6b3d44
comparison
equal deleted inserted replaced
16:bb9760760744 17:168deb591f21
1 package treecms.test; 1 package treecms.test;
2 2
3 import java.nio.ByteBuffer;
4 import java.util.List;
5 import java.util.Map;
3 import junit.framework.Assert; 6 import junit.framework.Assert;
4 import org.junit.Test; 7 import org.junit.Test;
5 import treecms.api.Forest; 8 import treecms.api.Forest;
9 import treecms.api.MonotonicTree;
10 import treecms.api.MonotonicTreeNode;
6 import treecms.api.NodeID; 11 import treecms.api.NodeID;
7 import treecms.api.SingleNode; 12 import treecms.api.SingleNode;
8 import treecms.api.Tree; 13 import treecms.api.Tree;
14 import treecms.api.TreeNode;
15 import treecms.tree.util.NodeData;
9 16
10 /** 17 /**
11 * Forest実装の基本的なテスト 18 * Forest実装の基本的なテスト
12 * @author shoshi 19 * @author shoshi
13 */ 20 */
14 public abstract class AbstractForestTest 21 public abstract class AbstractForestTest
15 { 22 {
16 /**
17 * 基本的なテストを実装するためにはこのメソッドでインスタンスを返す。
18 * @return Forest
19 */
20 public abstract Forest getInstance(); 23 public abstract Forest getInstance();
21 24
22 /**
23 * Node作成テスト
24 * 新しく作成されたNodeがnullでなければOK
25 */
26 @Test 25 @Test
27 public void testCreateNode() 26 public void testCreate()
28 { 27 {
29 Forest forest = getInstance(); 28 Forest forest = getInstance();
30 SingleNode newNode = forest.create(); 29
31 Assert.assertNotNull(newNode); 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));
32 } 49 }
33 50
34 /**
35 * Node取得テスト
36 * 新しく作成されたNodeからNodeIDを取得し、ForestよりNodeを再取得する
37 */
38 @Test 51 @Test
39 public void testGetNode() 52 public void testGet()
40 { 53 {
41 Forest forest = getInstance(); 54 Forest forest = getInstance();
42 SingleNode newNode = forest.create(); 55 SingleNode newNode = forest.create();
43 NodeID newID = newNode.getID(); 56 NodeID newID = newNode.getID();
44 57
45 SingleNode node = forest.get(newID); 58 SingleNode test1 = forest.get(newID);
46 59
47 Assert.assertEquals(newNode,node); 60 //同じノードであることを確認する
61 Assert.assertEquals(newNode,test1);
62
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);
48 } 74 }
49 75
50 /**
51 * NodeのTip(最新版)の取得テスト
52 * 新しく作成されたNodeのUUIDを抜き出し、Forestよりtipを取得する
53 */
54 @Test 76 @Test
55 public void testGetTip() 77 public void testGetTip()
56 { 78 {
57 Forest forest = getInstance(); 79 Forest forest = getInstance();
80
81 //SingleNodeを作成した時点で、最新版と比較し一致することを確認する
58 SingleNode newNode = forest.create(); 82 SingleNode newNode = forest.create();
59 NodeID newID = newNode.getID(); 83 NodeID newID = newNode.getID();
60
61 SingleNode tip = forest.getTip(newID.getUUID()); 84 SingleNode tip = forest.getTip(newID.getUUID());
62 85
63 Assert.assertEquals(newNode,tip); 86 Assert.assertEquals(newNode,tip);
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 }
64 } 102 }
65 103
66 /**
67 * NodeIDを更新したものを作成したとき、きちんと登録されているかテスト
68 */
69 @Test 104 @Test
70 public void updateTest() 105 public void testGetTree()
71 { 106 {
107 Forest f = getInstance();
72 108
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());
73 } 120 }
74 121
75 /** 122 @Test
76 * MainTreeが取得できるかテストします。 123 public void testGetMonotonicTree()
77 * MainTreeとは、コンテンツ全体を含むツリーです 124 {
78 */ 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
79 @Test 142 @Test
80 public void testGetMainTree() 143 public void testGetMainTree()
81 { 144 {
82 Forest forest = getInstance(); 145 Forest forest = getInstance();
83 Tree contents = forest.getMainTree(); 146 Tree contents = forest.getMainTree();