/*
* File: ClusterCompleteLinkDivergenceFunctionTest.java
* Authors: Justin Basilico
* Company: Sandia National Laboratories
* Project: Cognitive Framework Lite
*
* Copyright August 10, 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.divergence;
import gov.sandia.cognition.learning.algorithm.clustering.cluster.DefaultCluster;
import gov.sandia.cognition.learning.function.distance.EuclideanDistanceMetric;
import gov.sandia.cognition.math.matrix.Vector;
import gov.sandia.cognition.math.matrix.mtj.Vector2;
import junit.framework.*;
/**
* This class implements JUnit tests for the following classes:
*
* ClusterCompleteLinkDivergenceFunction
*
* @author Justin Basilico
* @since 2.0
*/
public class ClusterCompleteLinkDivergenceFunctionTest
extends TestCase
{
public ClusterCompleteLinkDivergenceFunctionTest(
String testName)
{
super(testName);
}
public void testConstructors()
{
ClusterCompleteLinkDivergenceFunction<DefaultCluster<Vector>, Vector>
instance = new ClusterCompleteLinkDivergenceFunction<DefaultCluster<Vector>, Vector>();
assertNull(instance.getDivergenceFunction());
EuclideanDistanceMetric metric = EuclideanDistanceMetric.INSTANCE;
instance = new ClusterCompleteLinkDivergenceFunction<DefaultCluster<Vector>, Vector>(
metric);
assertSame(metric, instance.getDivergenceFunction());
}
/**
* Test of evaluate method, of class gov.sandia.cognition.learning.clustering.divergence.ClusterCompleteLinkDivergenceFunction.
*/
public void testEvaluate()
{
EuclideanDistanceMetric metric = EuclideanDistanceMetric.INSTANCE;
ClusterCompleteLinkDivergenceFunction<DefaultCluster<Vector>, Vector>
instance = new ClusterCompleteLinkDivergenceFunction<DefaultCluster<Vector>, Vector>(
metric);
DefaultCluster<Vector> c1 = new DefaultCluster<Vector>();
c1.getMembers().add(new Vector2(-2.341500, 3.696800));
c1.getMembers().add(new Vector2(-1.109200, 3.111700));
c1.getMembers().add(new Vector2(-1.566900, 1.835100));
c1.getMembers().add(new Vector2(-2.658500, 0.664900));
c1.getMembers().add(new Vector2(-4.031700, 2.845700)); // Furthest.
c1.getMembers().add(new Vector2(-3.081000, 2.101100));
c1.getMembers().add(new Vector2(-1.144400, 0.505300));
DefaultCluster<Vector> c2 = new DefaultCluster<Vector>();
c2.getMembers().add(new Vector2(2.588000, 1.781900));
c2.getMembers().add(new Vector2(3.292300, 3.058500));
c2.getMembers().add(new Vector2(4.031700, 1.622300)); // Furthest.
c2.getMembers().add(new Vector2(3.081000, -0.611700));
c2.getMembers().add(new Vector2(0.264100, 0.398900));
c2.getMembers().add(new Vector2(1.320400, 2.207400));
c2.getMembers().add(new Vector2(0.193700, 3.643600));
c2.getMembers().add(new Vector2(1.954200, -0.505300));
c2.getMembers().add(new Vector2(1.637300, 1.409600));
c2.getMembers().add(new Vector2(2.095100, 3.430900));
double expected = c1.getMembers().get(4).euclideanDistance(c2.getMembers().get(2));
assertEquals(expected, instance.evaluate(c1, c2));
}
}