/* * This file is part of JGAP. * * JGAP offers a dual license model containing the LGPL as well as the MPL. * * For licensing information please see the file license.txt included with JGAP * or have a look at the top of class org.jgap.Chromosome which representatively * includes the JGAP license policy applicable for any file delivered with JGAP. */ package org.jgap.impl.fitness; import java.util.*; import org.jgap.*; import junit.framework.*; /** * Tests the TruthTableFitnessFunction class. * * @author Klaus Meffert * @since 1.1 */ public class TruthTableFitnessFunctionTest extends JGAPTestCase { /** String containing the CVS revision. Read out via reflection!*/ private final static String CVS_REVISION = "$Revision: 1.5 $"; public static Test suite() { TestSuite suite = new TestSuite(TruthTableFitnessFunctionTest.class); return suite; } /** * @throws Exception * * @author Klaus Meffert * @since 2.6 */ public void testCalcFitness_0() throws Exception { Map inout = new HashMap(); inout.put(new Double(2), new Double(3)); inout.put(new Double(9), new Double(11)); TruthTableFitnessFunctionImpl fitfunc = new TruthTableFitnessFunctionImpl( conf, 7); Map truthTable = new HashMap(); truthTable.put(new Double(2), new Double(4)); truthTable.put(new Double(8), new Double(1)); truthTable.put(new Double(9), new Double(11)); fitfunc.setTruthTable(truthTable); assertEquals(2.0d, fitfunc.calcFitness(inout), DELTA); } /** * @throws Exception * * @author Klaus Meffert * @since 2.6 */ public void testCalcFitness_1() throws Exception { Map inout = new HashMap(); inout.put(new Double(2), new Double(3)); inout.put(new Double(9), new Double(11)); Map truthTable = new HashMap(); truthTable.put(new Double(2), new Double(4)); truthTable.put(new Double(8), new Double(1)); truthTable.put(new Double(9), new Double(11)); TruthTableFitnessFunctionImpl fitfunc = new TruthTableFitnessFunctionImpl( conf, 7, truthTable); assertEquals(2.0d, fitfunc.calcFitness(inout), DELTA); } /** * Calc fitness with one value being a NaN. * @throws Exception * * @author Klaus Meffert * @since 2.6 */ public void testCalcFitness_2() throws Exception { Map inout = new HashMap(); inout.put(new Double(2), new Double(Double.NaN)); inout.put(new Double(9), new Double(11)); Map truthTable = new HashMap(); truthTable.put(new Double(2), new Double(4)); truthTable.put(new Double(8), new Double(1)); TruthTableFitnessFunctionImpl fitfunc = new TruthTableFitnessFunctionImpl( conf, 7, truthTable); assertTrue(Double.isNaN(fitfunc.calcFitness(inout))); } /** * @throws Exception * * @author Klaus Meffert * @since 3.1 */ public void testgetConfiguration_0() throws Exception { Map truthTable = new HashMap(); truthTable.put(new Double(9), new Double(11)); TruthTableFitnessFunctionImpl fitfunc = new TruthTableFitnessFunctionImpl( conf, 7, truthTable); assertSame(conf, fitfunc.getConfiguration()); } /** * @throws Exception * * @author Klaus Meffert * @since 3.1 */ public void testConstruct_0() throws Exception { Genotype.setStaticConfiguration(conf); TruthTableFitnessFunctionImpl fitfunc = new TruthTableFitnessFunctionImpl(); assertSame(conf, fitfunc.getConfiguration()); } /** * Implementing class of abstract TruthTableFitnessFunction class. * * @author Klaus Meffert * @since 2.6 */ private class TruthTableFitnessFunctionImpl extends TruthTableFitnessFunction { /** * @since 2.0 (until 1.1: type int) */ private double m_evaluationValue; public TruthTableFitnessFunctionImpl() { super(); } public TruthTableFitnessFunctionImpl(Configuration a_config, double a_evaluationValue, Map a_values) { super(a_config, a_values); m_evaluationValue = a_evaluationValue; } public TruthTableFitnessFunctionImpl(Configuration a_config, double a_evaluationValue) { super(a_config); m_evaluationValue = a_evaluationValue; } protected double evaluate(IChromosome a_subject) { return m_evaluationValue; } } }