/* * File: DefaultDistributionParameterTest.java * Authors: Kevin R. Dixon * Company: Sandia National Laboratories * Project: Cognitive Foundry * * Copyright Mar 1, 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; import gov.sandia.cognition.statistics.distribution.UnivariateGaussian; import junit.framework.TestCase; import java.util.Random; /** * Unit tests for DefaultDistributionParameterTest. * * @author krdixon */ public class DefaultDistributionParameterTest 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 DefaultDistributionParameterTest. * @param testName Name of the test. */ public DefaultDistributionParameterTest( String testName) { super(testName); } /** * Tests the constructors of class DefaultDistributionParameterTest. */ public void testConstructors() { System.out.println( "Constructors" ); double mean = RANDOM.nextGaussian(); double variance = RANDOM.nextDouble(); UnivariateGaussian.PDF gaussian = new UnivariateGaussian.PDF( mean, variance ); DefaultDistributionParameter<Double,UnivariateGaussian> parameter = new DefaultDistributionParameter<Double,UnivariateGaussian>( gaussian, "mean" ); assertEquals( mean, parameter.getValue() ); parameter = new DefaultDistributionParameter<Double,UnivariateGaussian>( gaussian, "variance" ); assertEquals( variance, parameter.getValue() ); try { parameter = new DefaultDistributionParameter<Double,UnivariateGaussian>( gaussian, "barf" ); parameter.getValue(); fail( "shouldn't exist!" ); } catch (Exception e) { System.out.println( "Good: " + e ); } try { parameter = new DefaultDistributionParameter<Double,UnivariateGaussian>( gaussian, "CDF" ); parameter.getValue(); fail( "Must have setter and getter!" ); } catch (Exception e) { System.out.println( "Good: " + e ); } } /** * Test of clone method, of class DefaultDistributionParameter. */ public void testClone() { System.out.println("clone"); UnivariateGaussian.PDF gaussian = new UnivariateGaussian.PDF(); DefaultDistributionParameter<Double,UnivariateGaussian> parameter = new DefaultDistributionParameter<Double,UnivariateGaussian>( gaussian, "variance" ); DefaultDistributionParameter<Double,UnivariateGaussian> clone = parameter.clone(); assertEquals( parameter.getName(), clone.getName() ); assertEquals( parameter.getValue(), clone.getValue() ); assertNotSame( parameter.getConditionalDistribution(), clone.getConditionalDistribution() ); gaussian.setMean( RANDOM.nextGaussian() ); assertEquals( parameter.getValue(), clone.getValue() ); } /** * Test of getValue method, of class DefaultDistributionParameter. */ public void testGetValue() { System.out.println("getValue"); UnivariateGaussian.PDF gaussian = new UnivariateGaussian.PDF(); DefaultDistributionParameter<Double,UnivariateGaussian> parameter = new DefaultDistributionParameter<Double,UnivariateGaussian>( gaussian, "mean" ); assertEquals( gaussian.getMean(), parameter.getValue() ); gaussian.setMean(RANDOM.nextGaussian()); assertEquals( gaussian.getMean(), parameter.getValue() ); } /** * Test of setValue method, of class DefaultDistributionParameter. */ public void testSetValue() { System.out.println("setValue"); UnivariateGaussian.PDF gaussian = new UnivariateGaussian.PDF(); DefaultDistributionParameter<Double,UnivariateGaussian> parameter = new DefaultDistributionParameter<Double,UnivariateGaussian>( gaussian, "mean" ); assertEquals( gaussian.getMean(), parameter.getValue() ); parameter.setValue( RANDOM.nextGaussian() ); assertEquals( gaussian.getMean(), parameter.getValue() ); } /** * Test of getConditionalDistribution method, of class DefaultDistributionParameter. */ public void testGetConditionalDistribution() { System.out.println("getConditionalDistribution"); UnivariateGaussian.PDF gaussian = new UnivariateGaussian.PDF(); DefaultDistributionParameter<Double,UnivariateGaussian> parameter = new DefaultDistributionParameter<Double,UnivariateGaussian>( gaussian, "mean" ); assertSame( gaussian, parameter.getConditionalDistribution() ); } /** * Test of setConditionalDistribution method, of class DefaultDistributionParameter. */ public void testSetConditionalDistribution() { System.out.println("setConditionalDistribution"); UnivariateGaussian.PDF gaussian = new UnivariateGaussian.PDF(); DefaultDistributionParameter<Double,UnivariateGaussian> parameter = new DefaultDistributionParameter<Double,UnivariateGaussian>( gaussian, "variance" ); assertSame( gaussian, parameter.getConditionalDistribution() ); try { parameter.setConditionalDistribution(null); parameter.getValue(); fail( "Can't be null" ); } catch (Exception e) { System.out.println( "Good: " + e ); } UnivariateGaussian.PDF g2 = new UnivariateGaussian.PDF( RANDOM.nextGaussian(), RANDOM.nextDouble() ); parameter.setConditionalDistribution(g2); assertEquals( g2, parameter.getConditionalDistribution() ); assertEquals( g2.getVariance(), parameter.getValue() ); } /** * Test of setName method, of class DefaultDistributionParameter. */ public void testSetName() { System.out.println("setName"); UnivariateGaussian.PDF gaussian = new UnivariateGaussian.PDF(); DefaultDistributionParameter<Double,UnivariateGaussian> parameter = new DefaultDistributionParameter<Double,UnivariateGaussian>( gaussian, "variance" ); assertEquals( gaussian.getVariance(), parameter.getValue() ); assertNotNull( parameter.parameterGetter ); assertNotNull( parameter.parameterSetter ); parameter.setName("mean"); assertNull( parameter.parameterGetter ); assertNull( parameter.parameterSetter ); } }