/* * File: CompositeEvaluatorPairTest.java * Authors: Justin Basilico * Company: Sandia National Laboratories * Project: Cognitive Foundry * * Copyright September 25, 2008, 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.evaluator; import junit.framework.TestCase; /** * Unit test for the CompositeEvaluatorPair class. * * @author Justin Basilico * @since 2.1 */ public class CompositeEvaluatorPairTest extends TestCase { /** * Creates a new test. * * @param testName The test name. */ public CompositeEvaluatorPairTest( String testName) { super(testName); } /** * Test of constructors of CompositeEvaluatorPair. */ public void testConstructors() { Evaluator<? super Number, ? extends Number> first = null; Evaluator<? super Number, ? extends Number> second = null; CompositeEvaluatorPair<Number, Number, Number> instance = new CompositeEvaluatorPair<Number, Number, Number>(); assertSame(first, instance.getFirst()); assertSame(second, instance.getSecond()); first = new Adder(); second = new Multiplier(); instance = new CompositeEvaluatorPair<Number, Number, Number>(first, second); assertSame(first, instance.getFirst()); assertSame(second, instance.getSecond()); } /** * Test of evaluate method, of class CompositeEvaluatorPair. */ public void testEvaluate() { Adder adder = new Adder(4.0); Multiplier multiplier = new Multiplier(7.0); CompositeEvaluatorPair<Number, Number, Number> instance = new CompositeEvaluatorPair<Number, Number, Number>(adder, multiplier); double input = 10; assertEquals((input + 4.0) * 7.0, instance.evaluate(input)); instance.setFirst(multiplier); instance.setSecond(adder); assertEquals((input * 7.0) + 4.0, instance.evaluate(input)); instance.setFirst(multiplier); instance.setSecond(multiplier); assertEquals((input * 7.0) * 7.0, instance.evaluate(input)); instance.setFirst(adder); instance.setSecond(adder); assertEquals((input + 4.0) + 4.0, instance.evaluate(input)); } /** * Test of create method, of class CompositeEvaluatorPair. */ public void testCreate() { Adder first = new Adder(); Multiplier second = new Multiplier(); CompositeEvaluatorPair<Number, Double, Double> result = CompositeEvaluatorPair.create(first, second); assertSame(first, result.getFirst()); assertSame(second, result.getSecond()); } public static class Adder implements Evaluator<Number, Double> { public double constant; public Adder() { this(0.0); } public Adder( final double constant) { this.constant = constant; } public Double evaluate( final Number input) { return input.doubleValue() + this.constant; } } public static class Multiplier implements Evaluator<Number, Double> { public double scalar; public Multiplier() { this(0.0); } public Multiplier( final double scalar) { this.scalar = scalar; } public Double evaluate( final Number input) { return input.doubleValue() * this.scalar; } } }