/* * File: AbstractOnlineBudgetedKernelBinaryCategorizerLearnerTest.java * Authors: Justin Basilico * Company: Sandia National Laboratories * Project: Cognitive Foundry Learning Core * * Copyright May 04, 2011, 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. */ package gov.sandia.cognition.learning.algorithm.perceptron.kernel; import gov.sandia.cognition.learning.function.kernel.Kernel; import gov.sandia.cognition.math.matrix.Vector; import java.util.Random; import gov.sandia.cognition.learning.function.categorization.DefaultKernelBinaryCategorizer; import gov.sandia.cognition.learning.function.kernel.PolynomialKernel; import org.junit.Test; import static org.junit.Assert.*; /** * Unit tests for class AbstractOnlineBudgetedKernelBinaryCategorizerLearner. * * @author Justin Basilico * @since 3.3.0 */ public class AbstractOnlineBudgetedKernelBinaryCategorizerLearnerTest { /** Random number generator. */ protected Random random = new Random(211); /** * Creates a new test. */ public AbstractOnlineBudgetedKernelBinaryCategorizerLearnerTest() { } /** * Test of constructors of class AbstractOnlineBudgetedKernelBinaryCategorizerLearner. */ @Test public void testConstructors() { int budget = AbstractOnlineBudgetedKernelBinaryCategorizerLearner.DEFAULT_BUDGET; Kernel<? super Vector> kernel = null; AbstractOnlineBudgetedKernelBinaryCategorizerLearner<Vector> instance = new DummyOnlineBudgetedKernelBinaryCategorizerLearner<Vector>(); assertEquals(budget, instance.getBudget()); assertEquals(kernel, instance.getKernel()); budget += 2; kernel = new PolynomialKernel(7, 8); instance = new DummyOnlineBudgetedKernelBinaryCategorizerLearner<Vector>( kernel, budget); assertEquals(budget, instance.getBudget()); assertEquals(kernel, instance.getKernel()); } /** * Test of getBudget method, of class AbstractOnlineBudgetedKernelBinaryCategorizerLearner. */ @Test public void testGetBudget() { this.testSetBudget(); } /** * Test of setBudget method, of class AbstractOnlineBudgetedKernelBinaryCategorizerLearner. */ @Test public void testSetBudget() { int budget = RemoveOldestKernelPerceptron.DEFAULT_BUDGET; AbstractOnlineBudgetedKernelBinaryCategorizerLearner<Vector> instance = new DummyOnlineBudgetedKernelBinaryCategorizerLearner<Vector>(); assertEquals(budget, instance.getBudget()); int[] goodValues = {1, 2, 3, 7, 10, 20, 30, 1 + random.nextInt(1000) }; for (int goodValue : goodValues) { budget = goodValue; instance.setBudget(budget); assertEquals(budget, instance.getBudget()); } int[] badValues = {0, -1, -2, -10, -random.nextInt(1000) }; for (int badValue : badValues) { boolean exceptionThrown = false; try { instance.setBudget(badValue); } catch (IllegalArgumentException e) { exceptionThrown = true; } finally { assertTrue(exceptionThrown); } assertEquals(budget, instance.getBudget()); } } public class DummyOnlineBudgetedKernelBinaryCategorizerLearner<InputType> extends AbstractOnlineBudgetedKernelBinaryCategorizerLearner<InputType> { public DummyOnlineBudgetedKernelBinaryCategorizerLearner() { super(); } public DummyOnlineBudgetedKernelBinaryCategorizerLearner( final Kernel<? super InputType> kernel, final int budget) { super(kernel, budget); } @Override public void update( final DefaultKernelBinaryCategorizer<InputType> target, final InputType input, final boolean output) { throw new UnsupportedOperationException("Dummy class."); } } }