/*
* File: BayesianLinearRegressionTest.java
* Authors: Kevin R. Dixon
* Company: Sandia National Laboratories
* Project: Cognitive Foundry
*
* Copyright Mar 11, 2010, 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.statistics.bayesian;
import gov.sandia.cognition.statistics.distribution.MultivariateGaussian;
/**
* Unit tests for BayesianLinearRegressionTest.
*
* @author krdixon
*/
public class BayesianLinearRegressionTest
extends BayesianRegressionTestHarness<MultivariateGaussian>
{
/**
* Tests for class BayesianLinearRegressionTest.
* @param testName Name of the test.
*/
public BayesianLinearRegressionTest(
String testName)
{
super(testName);
}
/**
* Tests the constructors of class BayesianLinearRegressionTest.
*/
@Override
public void testConstructors()
{
System.out.println( "Constructors" );
final int dim = 2;
BayesianLinearRegression instance = new BayesianLinearRegression( dim );
assertEquals( dim, instance.getWeightPrior().getMean().getDimensionality() );
assertEquals( BayesianLinearRegression.DEFAULT_OUTPUT_VARIANCE, instance.getOutputVariance() );
}
@Override
public BayesianLinearRegression createInstance()
{
BayesianLinearRegression instance = new BayesianLinearRegression( DEFAULT_DIM+1 );
instance.setOutputVariance(0.1);
return instance;
}
/**
* Test of getWeightPrior method, of class BayesianLinearRegression.
*/
public void testGetWeightPrior()
{
System.out.println("getWeightPrior");
BayesianLinearRegression instance = this.createInstance();
assertNotNull( instance.getWeightPrior() );
}
/**
* Test of setWeightPrior method, of class BayesianLinearRegression.
*/
public void testSetWeightPrior()
{
System.out.println("setWeightPrior");
BayesianLinearRegression instance = this.createInstance();
MultivariateGaussian prior = instance.getWeightPrior();
instance.setWeightPrior(null);
assertNull( instance.getWeightPrior() );
instance.setWeightPrior(prior);
assertSame( prior, instance.getWeightPrior() );
}
/**
* Test of getOutputVariance method, of class BayesianLinearRegression.
*/
public void testGetOutputVariance()
{
System.out.println("getOutputVariance");
BayesianLinearRegression instance = this.createInstance();
assertTrue( instance.getOutputVariance() > 0.0 );
}
/**
* Test of setOutputVariance method, of class BayesianLinearRegression.
*/
public void testSetOutputVariance()
{
System.out.println("setOutputVariance");
BayesianLinearRegression instance = this.createInstance();
double variance = RANDOM.nextDouble() * 10.0;
instance.setOutputVariance(variance);
assertEquals( variance, instance.getOutputVariance() );
try
{
instance.setOutputVariance(0.0);
fail( "Outputvariance must be > 0.0" );
}
catch (Exception e)
{
System.out.println( "Good: " + e );
}
}
/**
* Batch and Incremental Comparison
*/
public void testIncrementalAndBatch()
{
BayesianLinearRegression instance = this.createInstance();
BayesianLinearRegression.IncrementalEstimator incremental =
new BayesianLinearRegression.IncrementalEstimator(
instance.getOutputVariance(), instance.getWeightPrior() );
super.testIncrementalAndBatch(incremental);
}
}