/* * File: ElementWiseVectorFunctionTest.java * Authors: Kevin R. Dixon * Company: Sandia National Laboratories * Project: Cognitive Foundry * * Copyright Mar 25, 2009, 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.vector; import gov.sandia.cognition.learning.algorithm.minimization.line.interpolator.LineBracketInterpolatorTestHarness.CosineFunction; import gov.sandia.cognition.learning.function.scalar.AtanFunction; import gov.sandia.cognition.learning.function.scalar.LinearFunction; import gov.sandia.cognition.math.UnivariateScalarFunction; import gov.sandia.cognition.math.matrix.Vector; import gov.sandia.cognition.math.matrix.VectorFactory; import junit.framework.TestCase; import java.util.Random; /** * Unit tests for ElementWiseVectorFunctionTest. * * @author krdixon */ public class ElementWiseVectorFunctionTest extends TestCase { /** * Random number generator to use for a fixed random seed. */ public Random random = new Random( 1 ); /** * Tests for class ElementWiseVectorFunctionTest. * @param testName Name of the test. */ public ElementWiseVectorFunctionTest( String testName) { super(testName); } /** * Test of constructors, of class ElementWiseVectorFunction. */ public void testConstructors() { ElementWiseVectorFunction instance = new ElementWiseVectorFunction(); assertNotNull(instance.getScalarFunction()); assertTrue(instance.getScalarFunction() instanceof LinearFunction); UnivariateScalarFunction scalarFunction = new CosineFunction(); instance = new ElementWiseVectorFunction(scalarFunction); assertSame(scalarFunction, instance.getScalarFunction()); instance = new ElementWiseVectorFunction(instance); assertNotNull(instance.getScalarFunction()); assertTrue(instance.getScalarFunction() instanceof CosineFunction); } /** * Test of clone method, of class ElementWiseVectorFunction. */ public void testClone() { System.out.println("clone"); ElementWiseVectorFunction instance = new ElementWiseVectorFunction( new AtanFunction() ); ElementWiseVectorFunction clone = instance.clone(); assertNotNull( clone ); assertNotSame( instance, clone ); assertNotNull( instance.getScalarFunction() ); assertNotNull( clone.getScalarFunction() ); assertNotSame( instance.getScalarFunction(), clone.getScalarFunction() ); int M = random.nextInt( 10 ) + 1; double r = 2.0; Vector x1 = VectorFactory.getDefault().createUniformRandom(M, -r, r, random ); Vector y1 = instance.evaluate(x1); Vector y1hat = clone.evaluate(x1); assertEquals( y1, y1hat ); ElementWiseVectorFunction c2 = new ElementWiseVectorFunction( instance ); assertNotSame( instance, c2 ); assertNotNull( c2.getScalarFunction() ); assertNotSame( instance.getScalarFunction(), c2.getScalarFunction() ); } /** * Test of getScalarFunction method, of class ElementWiseVectorFunction. */ public void testGetScalarFunction() { System.out.println("getScalarFunction"); UnivariateScalarFunction f = new AtanFunction(); ElementWiseVectorFunction instance = new ElementWiseVectorFunction( f ); assertNotNull( instance.getScalarFunction() ); assertSame( f, instance.getScalarFunction() ); } /** * Test of setScalarFunction method, of class ElementWiseVectorFunction. */ public void testSetScalarFunction() { System.out.println("setScalarFunction"); UnivariateScalarFunction f = new AtanFunction(); ElementWiseVectorFunction instance = new ElementWiseVectorFunction( f ); assertNotNull( instance.getScalarFunction() ); assertSame( f, instance.getScalarFunction() ); instance.setScalarFunction(null); assertNull( instance.getScalarFunction() ); instance.setScalarFunction(f); assertSame( f, instance.getScalarFunction() ); } /** * Test of evaluate method, of class ElementWiseVectorFunction. */ public void testEvaluate() { System.out.println("evaluate"); UnivariateScalarFunction f = new AtanFunction(); ElementWiseVectorFunction instance = new ElementWiseVectorFunction( f ); int M = random.nextInt( 10 ) + 1; double r = 2.0; Vector x1 = VectorFactory.getDefault().createUniformRandom(M, -r, r, random ); Vector y1 = instance.evaluate(x1); assertEquals( M, y1.getDimensionality() ); for( int i = 0; i < M; i++ ) { assertEquals( f.evaluate(x1.getElement(i)), y1.getElement(i) ); } } }