/* * File: CategorizationTreeNodeTest.java * Authors: Justin Basilico * Company: Sandia National Laboratories * Project: Cognitive Foundry * * Copyright November 16, 2007, Sandia Corporation. Under the terms of Contract * DE-AC04-94AL85000, there is a non-exclusive license for use of this work by * or on behalf of the U.S. Government. Export of this program may require a * license from the United States Government. See CopyrightHistory.txt for * complete details. * * */ package gov.sandia.cognition.learning.algorithm.tree; import gov.sandia.cognition.learning.function.categorization.VectorElementThresholdCategorizer; import junit.framework.*; import gov.sandia.cognition.math.matrix.mtj.Vector3; /** * This class implements JUnit tests for the following classes: * * CategorizationTreeNode * * @author Justin Basilico * @since 2.0 */ public class CategorizationTreeNodeTest extends TestCase { public CategorizationTreeNodeTest( String testName) { super(testName); } public void testConstructors() { DecisionTreeNode<Vector3, String> parent = null; CategorizationTreeNode<Vector3, String, Boolean> instance = new CategorizationTreeNode<Vector3, String, Boolean>(); assertSame(parent, instance.getParent()); assertNull(instance.getOutputCategory()); assertNull(instance.getDecider()); assertNull(instance.getIncomingValue()); String outputCategory = "a"; instance = new CategorizationTreeNode<Vector3, String, Boolean>(parent, outputCategory); assertSame(parent, instance.getParent()); assertSame(outputCategory, instance.getOutputCategory()); assertNull(instance.getDecider()); assertNull(instance.getIncomingValue()); Object incomingValue = Math.random(); instance = new CategorizationTreeNode<Vector3, String, Boolean>(parent, outputCategory, incomingValue); assertSame(parent, instance.getParent()); assertSame(outputCategory, instance.getOutputCategory()); assertNull(instance.getDecider()); assertSame(incomingValue, instance.getIncomingValue()); VectorElementThresholdCategorizer decider = new VectorElementThresholdCategorizer(4, Math.random()); instance = new CategorizationTreeNode<Vector3, String, Boolean>(parent, decider, outputCategory, incomingValue); assertSame(parent, instance.getParent()); assertSame(outputCategory, instance.getOutputCategory()); assertSame(decider, instance.getDecider()); assertSame(incomingValue, instance.getIncomingValue()); } /** * Test of clone method, of class gov.sandia.cognition.learning.algorithm.tree.CategorizationTreeNode. */ public void testClone() { String outputCategory = "a"; Object incomingValue = Math.random(); VectorElementThresholdCategorizer decider = new VectorElementThresholdCategorizer(4, Math.random()); CategorizationTreeNode<Vector3, String, Boolean> instance = new CategorizationTreeNode<Vector3, String, Boolean>(null, decider, outputCategory, incomingValue); CategorizationTreeNode<Vector3, String, Boolean> clone = instance.clone(); assertSame(outputCategory, clone.getOutputCategory()); assertEquals(decider.toString(), clone.getDecider().toString()); assertNotSame(decider, clone.getDecider()); assertSame(incomingValue, clone.getIncomingValue()); } /** * Test of addChild method, of class gov.sandia.cognition.learning.algorithm.tree.CategorizationTreeNode. */ public void testAddChild() { CategorizationTreeNode<Vector3, String, Boolean> instance = new CategorizationTreeNode<Vector3, String, Boolean>(); CategorizationTreeNode<Vector3, String, Boolean> child = new CategorizationTreeNode<Vector3, String, Boolean>(instance, "child"); instance.addChild(false, child); assertEquals(1, instance.getChildMap().size()); assertEquals(1, instance.getChildren().size()); assertTrue(instance.getChildren().contains(child)); } /** * Test of getChildren method, of class gov.sandia.cognition.learning.algorithm.tree.CategorizationTreeNode. */ public void testGetChildren() { CategorizationTreeNode<Vector3, String, Boolean> instance = new CategorizationTreeNode<Vector3, String, Boolean>(); assertTrue(instance.getChildren().isEmpty()); } /** * Test of isLeaf method, of class gov.sandia.cognition.learning.algorithm.tree.CategorizationTreeNode. */ public void testIsLeaf() { CategorizationTreeNode<Vector3, String, Boolean> instance = new CategorizationTreeNode<Vector3, String, Boolean>(); assertTrue(instance.isLeaf()); CategorizationTreeNode<Vector3, String, Boolean> child = new CategorizationTreeNode<Vector3, String, Boolean>(instance, "child"); instance.addChild(false, child); assertFalse(instance.isLeaf()); } /** * Test of chooseChild method, of class gov.sandia.cognition.learning.algorithm.tree.CategorizationTreeNode. */ public void testChooseChild() { VectorElementThresholdCategorizer decider = new VectorElementThresholdCategorizer(1, 7.0); CategorizationTreeNode<Vector3, String, Boolean> instance = new CategorizationTreeNode<Vector3, String, Boolean>( null, decider, "a", null); assertNull(instance.chooseChild(new Vector3())); CategorizationTreeNode<Vector3, String, Boolean> child1 = new CategorizationTreeNode<Vector3, String, Boolean>( instance, "child1"); CategorizationTreeNode<Vector3, String, Boolean> child2 = new CategorizationTreeNode<Vector3, String, Boolean>( instance, "child2"); instance.addChild(false, child1); assertSame(child1, instance.chooseChild(new Vector3(0.0, 4.0, 0.0))); assertNull(instance.chooseChild(new Vector3(0.0, 7.0, 0.0))); instance.addChild(true, child2); assertSame(child1, instance.chooseChild(new Vector3(0.0, 4.0, 0.0))); assertSame(child2, instance.chooseChild(new Vector3(0.0, 7.0, 0.0))); } /** * Test of getOutput method, of class gov.sandia.cognition.learning.algorithm.tree.CategorizationTreeNode. */ public void testGetOutput() { CategorizationTreeNode<Vector3, String, Boolean> instance = new CategorizationTreeNode<Vector3, String, Boolean>(null, "a"); assertEquals("a", instance.getOutput(new Vector3(Math.random(), Math.random(), Math.random()))); instance.setOutputCategory("b"); assertEquals("b", instance.getOutput(new Vector3(Math.random(), Math.random(), Math.random()))); instance.setDecider(new VectorElementThresholdCategorizer(1, 0.5)); CategorizationTreeNode<Vector3, String, Boolean> child1 = new CategorizationTreeNode<Vector3, String, Boolean>( instance, "child1"); CategorizationTreeNode<Vector3, String, Boolean> child2 = new CategorizationTreeNode<Vector3, String, Boolean>( instance, "child2"); instance.addChild(false, child1); instance.addChild(true, child2); instance.setOutputCategory("b"); assertEquals("b", instance.getOutput(new Vector3(Math.random(), Math.random(), Math.random()))); } /** * Test of getDepth method, of class gov.sandia.cognition.learning.algorithm.tree.CategorizationTreeNode. */ public void testGetDepth() { CategorizationTreeNode<Vector3, String, Boolean> instance = new CategorizationTreeNode<Vector3, String, Boolean>(null, "a"); assertEquals(0, instance.getDepth()); CategorizationTreeNode<Vector3, String, Boolean> child1 = new CategorizationTreeNode<Vector3, String, Boolean>( instance, "child1"); CategorizationTreeNode<Vector3, String, Boolean> child2 = new CategorizationTreeNode<Vector3, String, Boolean>( instance, "child2"); instance.addChild(false, child1); instance.addChild(true, child2); assertEquals(1, child1.getDepth()); assertEquals(1, child2.getDepth()); CategorizationTreeNode<Vector3, String, Boolean> child21 = new CategorizationTreeNode<Vector3, String, Boolean>( child2, "child21"); child2.addChild(true, child21); assertEquals(2, child21.getDepth()); } /** * Test of getDecider method, of class gov.sandia.cognition.learning.algorithm.tree.CategorizationTreeNode. */ public void testGetDecider() { this.testSetDecider(); } /** * Test of setDecider method, of class gov.sandia.cognition.learning.algorithm.tree.CategorizationTreeNode. */ public void testSetDecider() { CategorizationTreeNode<Vector3, String, Boolean> instance = new CategorizationTreeNode<Vector3, String, Boolean>(); assertNull(instance.getDecider()); VectorElementThresholdCategorizer decider = new VectorElementThresholdCategorizer(4, Math.random()); instance.setDecider(decider); assertSame(decider, instance.getDecider()); instance.setDecider(null); assertNull(instance.getDecider()); } /** * Test of getChildMap method, of class gov.sandia.cognition.learning.algorithm.tree.CategorizationTreeNode. */ public void testGetChildMap() { CategorizationTreeNode<Vector3, String, Boolean> instance = new CategorizationTreeNode<Vector3, String, Boolean>(); assertNull(instance.getChildMap()); } /** * Test of getOutputCategory method, of class gov.sandia.cognition.learning.algorithm.tree.CategorizationTreeNode. */ public void testGetOutputCategory() { this.testSetOutputCategory(); } /** * Test of setOutputCategory method, of class gov.sandia.cognition.learning.algorithm.tree.CategorizationTreeNode. */ public void testSetOutputCategory() { CategorizationTreeNode<Vector3, String, Boolean> instance = new CategorizationTreeNode<Vector3, String, Boolean>(); assertNull(instance.getOutputCategory()); String outputCategory = "a"; instance.setOutputCategory(outputCategory); assertSame(outputCategory, instance.getOutputCategory()); instance.setOutputCategory(null); assertNull(instance.getOutputCategory()); } /** * Test of getIncomingValue method, of class gov.sandia.cognition.learning.algorithm.tree.CategorizationTreeNode. */ public void testGetIncomingValue() { this.testSetIncomingValue(); } /** * Test of setIncomingValue method, of class gov.sandia.cognition.learning.algorithm.tree.CategorizationTreeNode. */ public void testSetIncomingValue() { CategorizationTreeNode<Vector3, String, Boolean> instance = new CategorizationTreeNode<Vector3, String, Boolean>(); assertNull(instance.getIncomingValue()); Object incomingValue = Math.random(); instance.setIncomingValue(incomingValue); assertSame(incomingValue, instance.getIncomingValue()); instance.setIncomingValue(null); assertNull(instance.getIncomingValue()); } }