/*
* File: NearestNeighborExhaustiveTest.java
* Authors: Justin Basilico
* Company: Sandia National Laboratories
* Project: Cognitive Foundry
*
* Copyright March 25, 2008, 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.nearest;
import gov.sandia.cognition.learning.data.DefaultInputOutputPair;
import gov.sandia.cognition.learning.data.InputOutputPair;
import gov.sandia.cognition.learning.function.distance.EuclideanDistanceMetric;
import gov.sandia.cognition.math.matrix.Vector;
import gov.sandia.cognition.math.matrix.mtj.Vector3;
import java.util.Collection;
import java.util.LinkedList;
/**
* Tests of NearestNeighborExhaustive
* @author Justin Basilico
* @since 2.1
*/
public class NearestNeighborExhaustiveTest
extends NearestNeighborTestHarness
{
/**
* Creates a new test.
*
* @param testName The test name.
*/
public NearestNeighborExhaustiveTest(
String testName)
{
super(testName);
}
public void testConstructors()
{
EuclideanDistanceMetric divergenceFunction = null;
LinkedList<InputOutputPair<? extends Vector, String>> data = null;
NearestNeighborExhaustive<Vector, String> instance =
new NearestNeighborExhaustive<Vector, String>();
assertSame(divergenceFunction, instance.getDivergenceFunction());
assertNotNull( instance.getData() );
assertEquals( 0, instance.getData().size() );
divergenceFunction = EuclideanDistanceMetric.INSTANCE;
instance = new NearestNeighborExhaustive<Vector, String>(divergenceFunction);
assertSame(divergenceFunction, instance.getDivergenceFunction());
assertNotNull( instance.getData() );
assertEquals( 0, instance.getData().size() );
data = new LinkedList<InputOutputPair<? extends Vector, String>>();
instance = new NearestNeighborExhaustive<Vector, String>(divergenceFunction, data);
assertSame(divergenceFunction, instance.getDivergenceFunction());
assertEquals(instance.getData().size(), data.size());
}
/**
* Test of evaluate method, of class NearestNeighborExhaustive.
*/
public void testEvaluateString()
{
LinkedList<InputOutputPair<? extends Vector, String>> data =
new LinkedList<InputOutputPair<? extends Vector, String>>();
data.add(new DefaultInputOutputPair<Vector, String>(
new Vector3(1.0, 0.0, 0.0), "a"));
data.add(new DefaultInputOutputPair<Vector, String>(
new Vector3(0.0, 2.0, 0.0), "b"));
data.add(new DefaultInputOutputPair<Vector, String>(
new Vector3(0.0, 0.0, 3.0), "c"));
NearestNeighborExhaustive<Vector, String> instance =
new NearestNeighborExhaustive<Vector, String>(
CounterEuclidenDistance.INSTANCE, data);
assertEquals("a", instance.evaluate(new Vector3(0.0, 0.0, 0.0)));
assertEquals("c", instance.evaluate(new Vector3(0.0, 0.0, 4.0)));
assertEquals("b", instance.evaluate(new Vector3(0.0, 3.0, 0.0)));
data = new LinkedList<InputOutputPair<? extends Vector, String>>();
instance.setData(data);
assertNull(instance.evaluate(new Vector3(0.0, 0.0, 0.0)));
}
/**
* Test of setData method, of class NearestNeighborExhaustive.
*/
public void testSetData()
{
LinkedList<InputOutputPair<? extends Vector, String>> data = null;
NearestNeighborExhaustive<Vector, String> instance =
new NearestNeighborExhaustive<Vector, String>();
assertEquals( 0, instance.getData().size() );
data = new LinkedList<InputOutputPair<? extends Vector, String>>();
instance.setData(data);
assertEquals( data.size(), instance.getData().size() );
data = new LinkedList<InputOutputPair<? extends Vector, String>>();
instance.setData(data);
assertEquals( data.size(), instance.getData().size() );
data = null;
instance.setData(data);
assertNull( instance.getData() );
}
@Override
public NearestNeighborExhaustive<Vector, Double> createInstance(
Collection<? extends InputOutputPair<Vector, Double>> data)
{
return new NearestNeighborExhaustive<Vector, Double>(
CounterEuclidenDistance.INSTANCE, data );
}
@Override
public void testLearner()
{
NearestNeighborExhaustive.Learner<Vector,Double> learner =
new NearestNeighborExhaustive.Learner<Vector, Double>();
assertNull( learner.getDivergenceFunction() );
learner = new NearestNeighborExhaustive.Learner<Vector, Double>(
CounterEuclidenDistance.INSTANCE );
NearestNeighbor<Vector,Double> nn = learner.learn(POINTS);
assertTrue( nn.getData().containsAll(POINTS) );
}
}