/* * File: AbstractBaggingLearnerTest.java * Authors: Justin Basilico * Project: Cognitive Foundry Learning Core * * Copyright 2011 Cognitive Foundry. All rights reserved. */ package gov.sandia.cognition.learning.algorithm.ensemble; import gov.sandia.cognition.learning.algorithm.perceptron.Perceptron; import gov.sandia.cognition.math.matrix.Vector; import java.util.Random; import junit.framework.TestCase; /** * Unit tests for class AbstractBaggingLearner. * * @author Justin Basilico * @since 3.3.3 */ public class AbstractBaggingLearnerTest extends TestCase { protected Random random; /** * Creates a new test. * * @param testName The test name. */ public AbstractBaggingLearnerTest( String testName) { super(testName); this.random = new Random(); } /** * Test of constructors of class BaggingCategorizerLearner. */ public void testConstructors() { Perceptron learner = null; double percentToSample = BaggingCategorizerLearner.DEFAULT_PERCENT_TO_SAMPLE; int maxIterations = BaggingCategorizerLearner.DEFAULT_MAX_ITERATIONS; AbstractBaggingLearner<Vector, Boolean, ?, ?> instance = new BaggingCategorizerLearner<Vector, Boolean>(); assertSame(learner, instance.getLearner()); assertEquals(percentToSample, instance.getPercentToSample(), 0.0); assertEquals(maxIterations, instance.getMaxIterations()); assertNotNull(instance.getRandom()); learner = new Perceptron(); instance = new BaggingCategorizerLearner<Vector, Boolean>(learner); assertSame(learner, instance.getLearner()); assertEquals(percentToSample, instance.getPercentToSample(), 0.0); assertEquals(maxIterations, instance.getMaxIterations()); assertNotNull(instance.getRandom()); percentToSample = percentToSample / 3.4; maxIterations = maxIterations * 9; instance = new BaggingCategorizerLearner<Vector, Boolean>(learner, maxIterations, percentToSample, random); assertSame(learner, instance.getLearner()); assertEquals(percentToSample, instance.getPercentToSample(), 0.0); assertEquals(maxIterations, instance.getMaxIterations()); assertSame(random, instance.getRandom()); } /** * Test of getResult method, of class BaggingCategorizerLearner. */ public void testGetResult() { // Tested by testLearn. } /** * Test of getLearner method, of class BaggingCategorizerLearner. */ public void testGetLearner() { this.testSetLearner(); } /** * Test of setLearner method, of class BaggingCategorizerLearner. */ public void testSetLearner() { Perceptron learner = null; BaggingCategorizerLearner<Vector, Boolean> instance = new BaggingCategorizerLearner<Vector, Boolean>(); assertSame(learner, instance.getLearner()); learner = new Perceptron(); instance.setLearner(learner); assertSame(learner, instance.getLearner()); learner = new Perceptron(); instance.setLearner(learner); assertSame(learner, instance.getLearner()); learner = null; instance.setLearner(learner); assertSame(learner, instance.getLearner()); learner = new Perceptron(); instance.setLearner(learner); assertSame(learner, instance.getLearner()); } /** * Test of getPercentToSample method, of class BaggingCategorizerLearner. */ public void testGetPercentToSample() { this.testSetPercentToSample(); } /** * Test of setPercentToSample method, of class BaggingCategorizerLearner. */ public void testSetPercentToSample() { double percentToSample = BaggingCategorizerLearner.DEFAULT_PERCENT_TO_SAMPLE; AbstractBaggingLearner<Vector, Boolean, ?, ?> instance = new BaggingCategorizerLearner<Vector, Boolean>(); assertEquals(percentToSample, instance.getPercentToSample(), 0.0); percentToSample = 0.99; instance.setPercentToSample(percentToSample); assertEquals(percentToSample, instance.getPercentToSample(), 0.0); percentToSample = 0.5; instance.setPercentToSample(percentToSample); assertEquals(percentToSample, instance.getPercentToSample(), 0.0); percentToSample = 0.0001; instance.setPercentToSample(percentToSample); assertEquals(percentToSample, instance.getPercentToSample(), 0.0); boolean exceptionThrown = false; try { instance.setPercentToSample(0.0); } catch (IllegalArgumentException e) { exceptionThrown = true; } finally { assertTrue(exceptionThrown); } assertEquals(percentToSample, instance.getPercentToSample(), 0.0); exceptionThrown = false; try { instance.setPercentToSample(-0.1); } catch (IllegalArgumentException e) { exceptionThrown = true; } finally { assertTrue(exceptionThrown); } assertEquals(percentToSample, instance.getPercentToSample(), 0.0); } /** * Test of getRandom method, of class BaggingCategorizerLearner. */ public void testGetRandom() { this.testSetRandom(); } /** * Test of setRandom method, of class BaggingCategorizerLearner. */ public void testSetRandom() { AbstractBaggingLearner<Vector, Boolean, ?, ?> instance = new BaggingCategorizerLearner<Vector, Boolean>(); assertNotNull(instance.getRandom()); Random random = new Random(); instance.setRandom(random); assertSame(random, instance.getRandom()); random = new Random(47); instance.setRandom(random); assertSame(random, instance.getRandom()); random = null; instance.setRandom(random); assertSame(random, instance.getRandom()); random = new Random(); instance.setRandom(random); assertSame(random, instance.getRandom()); } }