/* * File: PolynomialKernelTest.java * Authors: Justin Basilico * Company: Sandia National Laboratories * Project: Cognitive Foundry * * Copyright August 9, 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.kernel; import gov.sandia.cognition.math.matrix.Vector; import gov.sandia.cognition.math.matrix.mtj.Vector3; import java.util.Random; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; /** * This class implements JUnit tests for the following classes: * PolynomialKernel * * @author Justin Basilico * @since 2.0 */ public class PolynomialKernelTest extends TestCase { public final Random RANDOM = new Random(1); public PolynomialKernelTest( String testName) { super(testName); } public void testStatics() { assertEquals(2, PolynomialKernel.DEFAULT_DEGREE); assertEquals(1.0, PolynomialKernel.DEFAULT_CONSTANT); } public void testConstructors() { PolynomialKernel instance = new PolynomialKernel(); assertEquals(PolynomialKernel.DEFAULT_DEGREE, instance.getDegree()); assertEquals(PolynomialKernel.DEFAULT_CONSTANT, instance.getConstant()); int degree = 47; instance = new PolynomialKernel(degree); assertEquals(degree, instance.getDegree()); assertEquals(PolynomialKernel.DEFAULT_CONSTANT, instance.getConstant()); double constant = RANDOM.nextDouble(); instance = new PolynomialKernel(degree, constant); assertEquals(degree, instance.getDegree()); assertEquals(constant, instance.getConstant()); PolynomialKernel copy = new PolynomialKernel(instance); assertEquals(degree, copy.getDegree()); assertEquals(constant, copy.getConstant()); } /** * Test of clone method, of class gov.sandia.cognition.learning.kernel.PolynomialKernel. */ public void testClone() { int degree = 47; double constant = RANDOM.nextDouble(); PolynomialKernel instance = new PolynomialKernel(degree, constant); PolynomialKernel clone = new PolynomialKernel(instance); assertNotSame(instance, clone); assertEquals(degree, clone.getDegree()); assertEquals(constant, clone.getConstant()); } /** * Test of evaluate method, of class gov.sandia.cognition.learning.kernel.PolynomialKernel. */ public void testEvaluate() { int d = 4; double c = RANDOM.nextDouble(); PolynomialKernel instance = new PolynomialKernel(d, c); Vector zero = new Vector3(); Vector x = Vector3.createRandom(RANDOM); Vector y = Vector3.createRandom(RANDOM); assertEquals(Math.pow((x.dotProduct(y) + c), d), instance.evaluate(x, y)); assertEquals(Math.pow((x.dotProduct(y) + c), d), instance.evaluate(y, x)); assertEquals(Math.pow((x.dotProduct(zero) + c), d), instance.evaluate(x, zero)); assertEquals(Math.pow((y.dotProduct(zero) + c), d), instance.evaluate(y, zero)); assertEquals(Math.pow((zero.dotProduct(zero) + c), d), instance.evaluate(zero, zero)); } /** * Test of getDegree method, of class gov.sandia.cognition.learning.kernel.PolynomialKernel. */ public void testGetDegree() { this.testSetDegree(); } /** * Test of setDegree method, of class gov.sandia.cognition.learning.kernel.PolynomialKernel. */ public void testSetDegree() { PolynomialKernel instance = new PolynomialKernel(); assertEquals(PolynomialKernel.DEFAULT_DEGREE, instance.getDegree()); int degree = 47; instance.setDegree(degree); assertEquals(degree, instance.getDegree()); degree = 1; instance.setDegree(degree); assertEquals(degree, instance.getDegree()); degree = 2; instance.setDegree(degree); assertEquals(degree, instance.getDegree()); boolean exceptionThrown = false; try { instance.setDegree(0); } catch ( IllegalArgumentException e ) { exceptionThrown = true; } finally { assertTrue(exceptionThrown); } } /** * Test of getConstant method, of class gov.sandia.cognition.learning.kernel.PolynomialKernel. */ public void testGetConstant() { this.testSetConstant(); } /** * Test of setConstant method, of class gov.sandia.cognition.learning.kernel.PolynomialKernel. */ public void testSetConstant() { PolynomialKernel instance = new PolynomialKernel(); assertEquals(PolynomialKernel.DEFAULT_CONSTANT, instance.getConstant()); double constant = RANDOM.nextDouble(); instance.setConstant(constant); assertEquals(constant, instance.getConstant()); constant = 0.0; instance.setConstant(constant); assertEquals(constant, instance.getConstant()); constant = 1.0; instance.setConstant(constant); assertEquals(constant, instance.getConstant()); constant = 10.0; instance.setConstant(constant); assertEquals(constant, instance.getConstant()); boolean exceptionThrown = false; try { instance.setConstant(-0.5); } catch ( IllegalArgumentException e ) { exceptionThrown = true; } finally { assertTrue(exceptionThrown); } } }