Mercurial > hg > Members > shoshi > TreeCMSv2
view src/treecms/test/AbstractForestTest.java @ 17:168deb591f21
commit
author | shoshi |
---|---|
date | Tue, 24 May 2011 00:33:12 +0900 |
parents | bb9760760744 |
children | c1e7ec6b3d44 |
line wrap: on
line source
package treecms.test; import java.nio.ByteBuffer; import java.util.List; import java.util.Map; import junit.framework.Assert; import org.junit.Test; import treecms.api.Forest; import treecms.api.MonotonicTree; import treecms.api.MonotonicTreeNode; import treecms.api.NodeID; import treecms.api.SingleNode; import treecms.api.Tree; import treecms.api.TreeNode; import treecms.tree.util.NodeData; /** * Forest実装の基本的なテスト * @author shoshi */ public abstract class AbstractForestTest { public abstract Forest getInstance(); @Test public void testCreate() { Forest forest = getInstance(); //正常にSingleNodeを作成できることを確認する(引数なし) SingleNode test1 = forest.create(); Assert.assertNotNull(test1); //正常にSingleNodeを作成できることを確認する(引数あり) NodeData<SingleNode> d = new NodeData<SingleNode>(); d.add(forest.create()); d.put(ByteBuffer.wrap("name".getBytes()),ByteBuffer.wrap("value".getBytes())); SingleNode test2 = forest.create(d); Assert.assertNotNull(test2); //指定したNodeData<SingleNode>が正しく継承されているか確認する List<SingleNode> list1 = d.getList(); List<SingleNode> list2 = test2.getList(); Assert.assertEquals(true,list1.equals(list2)); Map<ByteBuffer,ByteBuffer> map1 = d.asMap(); Map<ByteBuffer,ByteBuffer> map2 = test2.asMap(); Assert.assertEquals(true,map1.equals(map2)); } @Test public void testGet() { Forest forest = getInstance(); SingleNode newNode = forest.create(); NodeID newID = newNode.getID(); SingleNode test1 = forest.get(newID); //同じノードであることを確認する Assert.assertEquals(newNode,test1); //forest.get(NodeID _id)にnullが渡されたときNullPointerExceptionが発生する try{ forest.get(null); Assert.fail("no NullPointerException occurs when call forest.get(null)"); }catch(NullPointerException _e){ } //存在しないNodeIDが指定された場合はnullである NodeID updated = newID.update(); SingleNode test2 = forest.get(updated); Assert.assertNull(test2); } @Test public void testGetTip() { Forest forest = getInstance(); //SingleNodeを作成した時点で、最新版と比較し一致することを確認する SingleNode newNode = forest.create(); NodeID newID = newNode.getID(); SingleNode tip = forest.getTip(newID.getUUID()); Assert.assertEquals(newNode,tip); //同じUUIDを持つSingleNodeを登録すると、最新版が更新される NodeData<SingleNode> d = new NodeData<SingleNode>(tip,tip); SingleNode test1 = forest.create(tip.getID().update(),d); tip = forest.getTip(test1.getID().getUUID()); Assert.assertEquals(test1,tip); //nullが渡された場合は、NullPointerExceptionが発生する try{ forest.getTip(null); Assert.fail("no NullPointerException occurs when call forest.getTip(null)"); }catch(NullPointerException _e){ //OK } } @Test public void testGetTree() { Forest f = getInstance(); //同一のForestから作成されたSingleNodeから正しくTreeが作成できるか確認する。 SingleNode n = f.create(); Tree t = f.getTree(n); Assert.assertNotNull(t); //作成したTreeからTreeNodeのルートが取得できる。 TreeNode root = t.getRoot(); Assert.assertNotNull(t.getRoot()); //取得したTreeNodeから引数に指定したSingleNodeが取得できるか確認する Assert.assertEquals(n,root.getNode()); } @Test public void testGetMonotonicTree() { Forest f = getInstance(); SingleNode newNode = f.create(); Tree newTree = f.getTree(newNode); MonotonicTree newMonoTree = f.getMonotonicTree(newTree); Assert.assertNotNull(newMonoTree); MonotonicTreeNode m = newMonoTree.getRoot(); Assert.assertNotNull(m); SingleNode n = m.getNode(); Assert.assertEquals(true,n.equals(newNode)); Tree t2 = newMonoTree.getTree(); Assert.assertNotNull(t2); Assert.assertEquals(true,t2.equals(t2)); } @Test public void testGetMainTree() { Forest forest = getInstance(); Tree contents = forest.getMainTree(); Assert.assertNotNull(contents); } }