/* * File: MedoidClusterCreatorTest.java * Authors: Justin Basilico * Company: Sandia National Laboratories * Project: Cognitive Foundry * * Copyright August 13, 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.clustering.cluster; import gov.sandia.cognition.learning.function.distance.EuclideanDistanceMetric; import gov.sandia.cognition.math.matrix.Vector; import gov.sandia.cognition.math.matrix.mtj.Vector2; import gov.sandia.cognition.util.CloneableSerializable; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import junit.framework.TestCase; /** * This class implements JUnit tests for the following classes: MedoidClusterCreator * * @author Justin Basilico * @since 2.0 */ public class MedoidClusterCreatorTest extends TestCase { public MedoidClusterCreatorTest( String testName) { super(testName); } public void testConstructors() { MedoidClusterCreator<Vector> instance = new MedoidClusterCreator<Vector>(); assertNull(instance.getDivergenceFunction()); EuclideanDistanceMetric metric = EuclideanDistanceMetric.INSTANCE; instance = new MedoidClusterCreator<Vector>(metric); assertSame(metric, instance.getDivergenceFunction()); } /** * Tests of clone */ public void testClone() { System.out.println( "Clone" ); MedoidClusterCreator<?> instance = new MedoidClusterCreator<Vector>(); CloneableSerializable clone = instance.clone(); assertNotNull( clone ); assertNotSame( instance, clone ); } /** * Test of createCluster method, of class gov.sandia.cognition.learning.clustering.cluster.creator.MedoidClusterCreator. */ public void testCreateCluster() { MedoidClusterCreator<Vector> instance = new MedoidClusterCreator<Vector>(EuclideanDistanceMetric.INSTANCE); Vector[] data1 = new Vector[] { new Vector2(-2.341500, 3.696800), new Vector2(-1.109200, 3.111700), new Vector2(-1.566900, 1.835100), new Vector2(-2.658500, 0.664900), new Vector2(-4.031700, 2.845700), new Vector2(-3.081000, 2.101100), new Vector2(-1.144400, 0.505300), }; Vector medoid1 = data1[2]; Collection<Vector> members = Arrays.asList(data1); CentroidCluster<Vector> result = instance.createCluster(members); assertNotNull(result); assertEquals(medoid1, result.getCentroid()); assertEquals(members.size(), result.getMembers().size()); members = new ArrayList<Vector>(); result = instance.createCluster(members); assertNotNull(result); assertNull(result.getCentroid()); assertSame(members.size(), result.getMembers().size()); members.add(medoid1); result = instance.createCluster(members); assertNotNull(result); assertEquals(medoid1, result.getCentroid()); assertEquals(members.size(), result.getMembers().size()); boolean exceptionThrown = false; try { result = instance.createCluster(null); } catch ( NullPointerException e ) { exceptionThrown = true; } finally { assertTrue(exceptionThrown); } } /** * Test of getDivergenceFunction method, of class gov.sandia.cognition.learning.clustering.cluster.creator.MedoidClusterCreator. */ public void testGetDivergenceFunction() { this.testSetDivergenceFunction(); } /** * Test of setDivergenceFunction method, of class gov.sandia.cognition.learning.clustering.cluster.creator.MedoidClusterCreator. */ public void testSetDivergenceFunction() { MedoidClusterCreator<Vector> instance = new MedoidClusterCreator<Vector>(); assertNull(instance.getDivergenceFunction()); EuclideanDistanceMetric metric = EuclideanDistanceMetric.INSTANCE; instance.setDivergenceFunction(metric); assertSame(metric, instance.getDivergenceFunction()); instance.setDivergenceFunction(null); assertNull(instance.getDivergenceFunction()); } }