/*
 * TreeNodeTest.java
 * 2008/12/11
 * 
 * Copyright (c) 2008 Potkuri-group
 */

package test.calculation;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import junit.framework.TestCase;
import calculation.Vertex;
import calculation.TreeNode;

/**
 * Tests class calculation.TreeNode.
 * 
 * @author Potkuri-group
 * @version 1
 */
public class TreeNodeTest extends TestCase {
	
	/** Treenode. */
	private TreeNode treeNode;
	
	
	/**
	 * This method is run before tests.
	 * @throws Exception
	 * Exception.
	 */
	@Before
	public void doBefore() throws Exception {
	}
	
	/**
	 * This method is run after tests.
	 * @throws Exception
	 * Exception.
	 */
	@After
	public void doAfter() throws Exception {
		
	}
	
	//*******************************************
	
	/**
	 * Tests constructor.
	 */
	@Test
	public void testTreeNode() {
		Vertex vertex = new Vertex(1, 1, 1, 1, true, null);
		this.treeNode = new TreeNode(vertex);
		assertEquals(this.treeNode.getLeft(), null);
		assertEquals(this.treeNode.getRight(), null);
		assertEquals(this.treeNode.getParent(), null);
		assertEquals(this.treeNode.getVertex(), vertex);
	}
	
	
	/**
	* Tests method setChild.
	*/
	@Test
	public void testSetChild() {
		Vertex vertex = new Vertex(1, 1, 1, 1, true, null);
		this.treeNode = new TreeNode(vertex);
		Vertex child1 = new Vertex(2, 2, 2, 2, true, null);
		TreeNode node1 = new TreeNode(child1);
		Vertex child2 = new Vertex(3, 2, 3, 2, true, null);
		TreeNode node2 = new TreeNode(child2);
		this.treeNode.setChild(node1);
		this.treeNode.setChild(node2);
		assertEquals(this.treeNode.getLeft(), node1);
		assertEquals(this.treeNode.getRight(), node2);
		assertEquals(false, this.treeNode.setChild(node1));
	}
	
	/**
	 * Tests method setParent.
	 * */
	@Test
	public void testSetParent() {
		Vertex vertex = new Vertex(1, 1, 1, 1, true, null);
		Vertex parent = new Vertex(2, 2, 2, 2, true, null);
		this.treeNode = new TreeNode(vertex);
		TreeNode par = new TreeNode(parent);
		this.treeNode.setParent(par);
		assertEquals(par, this.treeNode.getParent());
	}
	
}
