/* * File: AveragingEnsembleTest.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.evaluator.Evaluator; import gov.sandia.cognition.learning.function.scalar.LinearFunction; import java.util.ArrayList; import java.util.List; import org.junit.Test; import static org.junit.Assert.*; /** * Unit tests for class AveragingEnsemble. * * @author Justin Basilico * @since 3.3.3 */ public class AveragingEnsembleTest { /** * Creates a new test. */ public AveragingEnsembleTest() { } /** * Test of constructors of class AveragingEnsemble. */ @Test public void testConstructors() { AveragingEnsemble<Double, Evaluator<Double, Double>> instance = new AveragingEnsemble<Double, Evaluator<Double, Double>>(); assertNotNull(instance.getMembers()); assertTrue(instance.getMembers().isEmpty()); List<Evaluator<Double, Double>> members = new ArrayList<Evaluator<Double, Double>>(); instance = new AveragingEnsemble<Double, Evaluator<Double, Double>>( members); assertSame(members, instance.getMembers()); } /** * Test of evaluate method, of class AveragingEnsemble. */ @Test public void testEvaluate() { AveragingEnsemble<Double, Evaluator<Double, Double>> instance = new AveragingEnsemble<Double, Evaluator<Double, Double>>(); assertEquals(0.0, instance.evaluate(1.0), 0.0); assertEquals(0.0, instance.evaluate(3.0), 0.0); instance.add(new LinearFunction(0.5, 2.0)); assertEquals(2.5, instance.evaluate(1.0), 0.0); assertEquals(3.5, instance.evaluate(3.0), 0.0); instance.add(new LinearFunction(1.0, 0.0)); instance.add(new LinearFunction(2.0, 0.0)); instance.add(new LinearFunction(0.0, -1.0)); assertEquals(1.0 / 4, instance.evaluate(0.0), 0.0); assertEquals(4.5 / 4, instance.evaluate(1.0), 0.0); assertEquals(8.0 / 4, instance.evaluate(2.0), 0.0); assertEquals(11.5 / 4, instance.evaluate(3.0), 0.0); assertEquals(2.75 / 4, instance.evaluate(0.5), 0.0); assertEquals(-0.75 / 4, instance.evaluate(-0.5), 0.0); assertEquals(-9.5 / 4, instance.evaluate(-3.0), 0.0); } /** * Test of evaluateAsDouble method, of class AveragingEnsemble. */ @Test public void testEvaluateAsDouble() { AveragingEnsemble<Double, Evaluator<Double, Double>> instance = new AveragingEnsemble<Double, Evaluator<Double, Double>>(); assertEquals(0.0, instance.evaluateAsDouble(1.0), 0.0); instance.add(new LinearFunction(0.5, 2.0)); assertEquals(2.5, instance.evaluateAsDouble(1.0), 0.0); assertEquals(3.5, instance.evaluateAsDouble(3.0), 0.0); instance.add(new LinearFunction(1.0, 0.0)); instance.add(new LinearFunction(2.0, 0.0)); instance.add(new LinearFunction(0.0, -1.0)); assertEquals(1.0 / 4, instance.evaluateAsDouble(0.0), 0.0); assertEquals(4.5 / 4, instance.evaluateAsDouble(1.0), 0.0); assertEquals(8.0 / 4, instance.evaluateAsDouble(2.0), 0.0); assertEquals(11.5 / 4, instance.evaluateAsDouble(3.0), 0.0); assertEquals(2.75 / 4, instance.evaluateAsDouble(0.5), 0.0); assertEquals(-0.75 / 4, instance.evaluateAsDouble(-0.5), 0.0); assertEquals(-9.5 / 4, instance.evaluateAsDouble(-3.0), 0.0); } }