/* * File: VectorFunctionLinearDiscriminantTest.java * Authors: Kevin R. Dixon * Company: Sandia National Laboratories * Project: Cognitive Foundry * * Copyright Nov 30, 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.scalar; import gov.sandia.cognition.evaluator.Evaluator; import gov.sandia.cognition.learning.function.vector.ScalarBasisSet; import gov.sandia.cognition.math.matrix.VectorFactory; import gov.sandia.cognition.math.matrix.Vector; import java.util.Random; import junit.framework.TestCase; /** * JUnit tests for class VectorFunctionLinearDiscriminantTest * @author Kevin R. Dixon */ public class VectorFunctionLinearDiscriminantTest extends TestCase { /** The random number generator for the tests. */ protected Random random = new Random(1); /** * Entry point for JUnit tests for class VectorFunctionLinearDiscriminantTest * @param testName name of this test */ public VectorFunctionLinearDiscriminantTest( String testName ) { super( testName ); } public VectorFunctionLinearDiscriminant<Double> createInstance() { return new VectorFunctionLinearDiscriminant<Double>( new ScalarBasisSet<Double>( PolynomialFunction.createPolynomials( 0.0, 1.0, 2.0, 3.0 ) ), new LinearDiscriminant( VectorFactory.getDefault().createUniformRandom( 4, -1.0, 1.0, random ) ) ); } /** * Test of clone method, of class VectorFunctionLinearDiscriminant. */ public void testClone() { System.out.println( "clone" ); VectorFunctionLinearDiscriminant<?> instance = this.createInstance(); VectorFunctionLinearDiscriminant<?> clone = instance.clone(); assertNotSame( instance, clone ); assertNotNull( clone.getVectorFunction() ); assertNotSame( instance.getVectorFunction(), clone.getVectorFunction() ); assertNotSame( instance.getDiscriminant(), clone.getDiscriminant() ); } /** * Test of getDiscriminant method, of class VectorFunctionLinearDiscriminant. */ public void testGetWeightVector() { System.out.println( "getWeightVector" ); VectorFunctionLinearDiscriminant<?> instance = this.createInstance(); assertNotNull( instance.getDiscriminant() ); } /** * Test of setDiscriminant method, of class VectorFunctionLinearDiscriminant. */ public void testSetWeightVector() { System.out.println( "setWeightVector" ); VectorFunctionLinearDiscriminant<?> instance = this.createInstance(); LinearDiscriminant w = instance.getDiscriminant(); assertNotNull( w ); instance.setDiscriminant( null ); assertNull( instance.getDiscriminant() ); instance.setDiscriminant( w ); assertSame( w, instance.getDiscriminant() ); } /** * Test of getVectorFunction method, of class VectorFunctionLinearDiscriminant. */ public void testGetVectorFunction() { System.out.println( "getVectorFunction" ); VectorFunctionLinearDiscriminant<Double> instance = this.createInstance(); Evaluator<? super Double, Vector> f = instance.getVectorFunction(); assertNotNull( f ); } /** * Test of setVectorFunction method, of class VectorFunctionLinearDiscriminant. */ public void testSetVectorFunction() { System.out.println( "setVectorFunction" ); VectorFunctionLinearDiscriminant<Double> instance = this.createInstance(); Evaluator<? super Double, Vector> f = instance.getVectorFunction(); assertNotNull( f ); instance.setVectorFunction( null ); assertNull( instance.getVectorFunction() ); instance.setVectorFunction( f ); assertSame( f, instance.getVectorFunction() ); } /** * Test of evaluate method, of class VectorFunctionLinearDiscriminant. */ public void testEvaluate() { System.out.println( "evaluate" ); VectorFunctionLinearDiscriminant<Double> instance = this.createInstance(); double x = random.nextGaussian(); Double yhat = instance.evaluate( x ); Vector v = instance.getVectorFunction().evaluate( x ); double y = instance.getDiscriminant().evaluate(v); assertEquals( y, yhat, 1e-5 ); } /** * Test of convertToVector method, of class VectorFunctionLinearDiscriminant. */ public void testConvertToVector() { System.out.println( "convertToVector" ); VectorFunctionLinearDiscriminant<?> instance = this.createInstance(); Vector v = instance.convertToVector(); assertNotNull( v ); assertSame( v, instance.getDiscriminant().convertToVector() ); assertEquals( 4, v.getDimensionality() ); } /** * Test of convertFromVector method, of class VectorFunctionLinearDiscriminant. */ public void testConvertFromVector() { System.out.println( "convertFromVector" ); VectorFunctionLinearDiscriminant<?> instance = this.createInstance(); Vector v = instance.convertToVector(); assertNotNull( v ); assertSame( v, instance.getDiscriminant().convertToVector() ); Vector v2 = v.scale( random.nextGaussian() ); instance.convertFromVector( v2 ); assertEquals( v2, instance.convertToVector() ); } }