/*
* File: RadialBasisKernelTest.java
* Authors: Justin Basilico
* Company: Sandia National Laboratories
* Project: Cognitive Foundry
*
* Copyright August 9, 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.function.kernel;
import gov.sandia.cognition.math.matrix.Vector;
import gov.sandia.cognition.math.matrix.mtj.Vector3;
import java.util.Random;
import junit.framework.TestCase;
/**
* This class implements JUnit tests for the following classes:
* RadialBasisKernel
* @author Justin Basilico
* @since 2.0
*/
public class RadialBasisKernelTest
extends TestCase
{
public final Random RANDOM = new Random(1);
public RadialBasisKernelTest(
String testName)
{
super(testName);
}
public void testConstants()
{
assertEquals(RadialBasisKernel.DEFAULT_SIGMA, 1.0);
}
public void testConstructors()
{
RadialBasisKernel instance = new RadialBasisKernel();
assertEquals(RadialBasisKernel.DEFAULT_SIGMA, instance.getSigma());
double sigma = Math.random();
instance = new RadialBasisKernel(sigma);
assertEquals(sigma, instance.getSigma());
RadialBasisKernel copy = new RadialBasisKernel(instance);
assertEquals(sigma, copy.getSigma());
}
/**
* Test of clone method, of class gov.sandia.cognition.learning.kernel.RadialBasisKernel.
*/
public void testClone()
{
double sigma = RANDOM.nextDouble();
RadialBasisKernel instance = new RadialBasisKernel(sigma);
assertEquals(sigma, instance.getSigma());
RadialBasisKernel clone = instance.clone();
assertNotNull( clone );
assertNotSame(instance, clone);
assertEquals(sigma, instance.getSigma());
}
/**
* Test of evaluate method, of class gov.sandia.cognition.learning.kernel.RadialBasisKernel.
*/
public void testEvaluate()
{
double sigma = RANDOM.nextDouble();
RadialBasisKernel instance = new RadialBasisKernel(sigma);
Vector zero = new Vector3();
Vector x = Vector3.createRandom(RANDOM);
Vector y = Vector3.createRandom(RANDOM);
assertEquals(
Math.exp(x.euclideanDistanceSquared(y) / (-2.0 * sigma * sigma)),
instance.evaluate(x, y));
assertEquals(
Math.exp(x.euclideanDistanceSquared(y) / (-2.0 * sigma * sigma)),
instance.evaluate(y, x));
assertEquals(
Math.exp(x.euclideanDistanceSquared(zero) / (-2.0 * sigma * sigma)),
instance.evaluate(x, zero));
assertEquals(
Math.exp(y.euclideanDistanceSquared(zero) / (-2.0 * sigma * sigma)),
instance.evaluate(y, zero));
assertEquals(
Math.exp(zero.euclideanDistanceSquared(zero) / (-2.0 * sigma * sigma)),
instance.evaluate(zero, zero));
}
/**
* Test of getSigma method, of class gov.sandia.cognition.learning.kernel.RadialBasisKernel.
*/
public void testGetSigma()
{
this.testSetSigma();
}
/**
* Test of setSigma method, of class gov.sandia.cognition.learning.kernel.RadialBasisKernel.
*/
public void testSetSigma()
{
RadialBasisKernel instance = new RadialBasisKernel();
assertEquals(RadialBasisKernel.DEFAULT_SIGMA, instance.getSigma());
double sigma = RANDOM.nextDouble();
instance.setSigma(sigma);
assertEquals(sigma, instance.getSigma());
boolean exceptionThrown = false;
try
{
instance.setSigma(0.0);
}
catch ( IllegalArgumentException e )
{
exceptionThrown = true;
}
finally
{
assertTrue(exceptionThrown);
}
}
}