diff src/treecms/test/TreeTest.java @ 5:87bba22e4fa2

added test case
author shoshi
date Tue, 01 Mar 2011 01:29:59 +0900
parents
children 12604eb6b615
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/treecms/test/TreeTest.java	Tue Mar 01 01:29:59 2011 +0900
@@ -0,0 +1,82 @@
+package treecms.test;
+
+import java.util.LinkedList;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import treecms.api.Node;
+import treecms.api.NodeData;
+import treecms.api.Tree;
+
+public class TreeTest
+{
+	Tree m_tree;
+	
+	public TreeTest(Tree _tree)
+	{
+		m_tree = _tree;
+	}
+	
+	@Test
+	public void testUpdateTree()
+	{
+		/**
+		 *  Root  
+		 *    + 1
+		 *    +  + 1-1 <- update this.
+		 *    +     
+		 *    + 2 
+		 *       + 2-1
+		 */
+		
+		Node ch1 = m_tree.getForest().create();
+		Node ch2 = m_tree.getForest().create();
+		
+		Node ch11 = m_tree.getForest().create();
+		Node ch12 = m_tree.getForest().create();
+		
+		LinkedList<Node> list = new LinkedList<Node>();
+		list.add(ch1);
+		list.add(ch2);
+		
+		m_tree.getRoot().getData().add(list);
+		
+		LinkedList<Node> ch1list = new LinkedList<Node>();
+		ch1list.add(ch11);
+		ch1.getData().add(ch1list);
+		
+		LinkedList<Node> ch2list = new LinkedList<Node>();
+		ch2list.add(ch12);
+		ch2.getData().add(ch2list);
+		
+		LinkedList<Node> before = findPath(m_tree.getRoot(),ch11);
+		NodeData newData = ch11.getData().deepCopy();
+		m_tree.updateTree(ch11,newData);
+		LinkedList<Node> after = findPath(m_tree.getRoot(),ch11);
+		
+		for(int i = 0;i < before.size();i ++){
+			boolean result = before.get(i).getID().isFamily(after.get(i).getID());
+			Assert.assertEquals(true,result);
+		}
+	}
+	
+	public LinkedList<Node> findPath(Node _from,Node _target)
+	{
+		if(_from.getID().isFamily(_target.getID())){
+			LinkedList<Node> path = new LinkedList<Node>();
+			path.add(_from);
+			return path;
+		}
+		
+		for(Node child : _from.getData().list()){
+			LinkedList<Node> path = findPath(child,_target);
+			if(path != null){
+				path.add(_from);
+			}
+		}
+		
+		return null;
+	}
+}