/*
* File: ParallelNegativeLogLikelihoodTest.java
* Authors: Kevin R. Dixon
* Company: Sandia National Laboratories
* Project: Cognitive Foundry
*
* Copyright Jul 12, 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.learning.function.cost;
import gov.sandia.cognition.algorithm.ParallelUtil;
import gov.sandia.cognition.statistics.distribution.UnivariateGaussian;
import java.util.ArrayList;
import java.util.concurrent.ThreadPoolExecutor;
import junit.framework.TestCase;
import java.util.Random;
/**
* Unit tests for ParallelNegativeLogLikelihoodTest.
*
* @author krdixon
*/
public class ParallelNegativeLogLikelihoodTest
extends TestCase
{
/**
* Random number generator to use for a fixed random seed.
*/
public final Random RANDOM = new Random( 1 );
/**
* Default tolerance of the regression tests, {@value}.
*/
public final double TOLERANCE = 1e-5;
/**
* Tests for class ParallelNegativeLogLikelihoodTest.
* @param testName Name of the test.
*/
public ParallelNegativeLogLikelihoodTest(
String testName)
{
super(testName);
}
/**
* Tests the constructors of class ParallelNegativeLogLikelihoodTest.
*/
public void testConstructors()
{
System.out.println( "Constructors" );
ParallelNegativeLogLikelihood<Double> instance =
new ParallelNegativeLogLikelihood<Double>();
assertNull( instance.getCostParameters() );
assertNotNull( instance.getThreadPool() );
UnivariateGaussian g = new UnivariateGaussian();
ArrayList<Double> data = g.sample(RANDOM, 1000);
instance = new ParallelNegativeLogLikelihood<Double>(data);
assertSame( data, instance.getCostParameters() );
assertNotNull( instance.getThreadPool() );
}
/**
* Test of evaluate method, of class ParallelNegativeLogLikelihood.
*/
public void testEvaluate()
{
System.out.println("evaluate");
UnivariateGaussian g = new UnivariateGaussian();
ArrayList<Double> data = g.sample(RANDOM, 1000);
ParallelNegativeLogLikelihood<Double> instance =
new ParallelNegativeLogLikelihood<Double>(data);
double pr = instance.evaluate(g);
NegativeLogLikelihood<Double> serial =
new NegativeLogLikelihood<Double>( data );
double sr = serial.evaluate(g);
assertEquals( sr, pr, TOLERANCE );
}
/**
* Test of getThreadPool method, of class ParallelNegativeLogLikelihood.
*/
public void testGetThreadPool()
{
System.out.println("getThreadPool");
ParallelNegativeLogLikelihood<Double> instance =
new ParallelNegativeLogLikelihood<Double>();
assertNotNull( instance.getThreadPool() );
instance.setThreadPool(null);
assertNotNull( instance.getThreadPool() );
}
/**
* Test of setThreadPool method, of class ParallelNegativeLogLikelihood.
*/
public void testSetThreadPool()
{
System.out.println("setThreadPool");
ThreadPoolExecutor threadPool = ParallelUtil.createThreadPool();
ParallelNegativeLogLikelihood<Double> instance =
new ParallelNegativeLogLikelihood<Double>();
instance.setThreadPool(threadPool);
assertSame( threadPool, instance.getThreadPool() );
}
/**
* Test of getNumThreads method, of class ParallelNegativeLogLikelihood.
*/
public void testGetNumThreads()
{
System.out.println("getNumThreads");
ParallelNegativeLogLikelihood<Double> instance =
new ParallelNegativeLogLikelihood<Double>();
int result = instance.getNumThreads();
assertTrue( result > 0 );
}
}