/* * 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.gp; import junit.framework.*; import org.jgap.*; import org.jgap.gp.impl.*; /** * Tests the CommandGene class. * * @author Klaus Meffert * @since 3.0 */ public class CommandGeneTest extends GPTestCase { /** String containing the CVS revision. Read out via reflection!*/ private final static String CVS_REVISION = "$Revision: 1.11 $"; public static Test suite() { TestSuite suite = new TestSuite(CommandGeneTest.class); return suite; } /** * Following should be possible without exception. * * @throws Exception * * @author Klaus Meffert * @since 3.0 */ public void testConstruct_0() throws Exception { assertNotNull(new CommandGeneImpl(m_gpconf)); } /** * @throws Exception * * @author Klaus Meffert * @since 3.0 */ public void testToString_0() throws Exception { CommandGene gene = new CommandGeneImpl(m_gpconf); assertEquals("test", gene.toString()); } /** * @throws Exception * * @author Klaus Meffert * @since 3.0 */ public void testSetAllele_0() throws Exception { CommandGene gene = new CommandGeneImpl(m_gpconf); try { gene.setAllele(new Double(75)); fail(); }catch (UnsupportedOperationException uex) { ;//this is OK } } /** * @throws Exception * * @author Klaus Meffert * @since 2.4 */ public void testSize_0() throws Exception { CommandGene gene = new CommandGeneImpl(m_gpconf); assertEquals(1, gene.size()); assertEquals(1, gene.getArity(null)); } /** * @throws Exception * * @author Klaus Meffert * @since 2.4 */ public void testEquals_0() throws Exception { CommandGeneImpl gene = new CommandGeneImpl(m_gpconf); assertFalse(gene.equals(null)); assertTrue(gene.equals(gene)); assertFalse(gene.equals(new Integer(2))); } /** * @throws Exception * * @author Klaus Meffert * @since 2.4 */ public void testEquals_1() throws Exception { CommandGeneImpl gene = new CommandGeneImpl(m_gpconf); assertFalse(gene.equals(null)); assertTrue(gene.equals(gene)); assertFalse(gene.equals(new Integer(2))); } /** * @throws Exception * * @author Klaus Meffert * @since 3.0 */ public void testEquals_2() throws Exception { CommandGeneImpl gene = new CommandGeneImpl(m_gpconf); assertFalse(gene.equals(null)); assertTrue(gene.equals(gene)); assertFalse(gene.equals(new Integer(2))); } /** * Compare application data. * * @throws Exception * * @author Klaus Meffert * @since 3.0 */ public void testEquals_3() throws Exception { CommandGeneImpl gene = new CommandGeneImpl(m_gpconf); gene.setApplicationData(new AppDataForTesting()); CommandGeneImpl gene2 = new CommandGeneImpl(m_gpconf); gene2.setApplicationData(new AppDataForTesting()); gene.setCompareApplicationData(true); assertTrue(gene.equals(gene2)); /**@todo use other than JGAPFactory to be able to receive a null * CompareToHandler for the application data object */ } /** * Simple cleanup should be possible without exception. * @throws Exception * * * @author Klaus Meffert * @since 3.0 */ public void testCleanup_0() throws Exception { CommandGene gene = new CommandGeneImpl(m_gpconf); gene.cleanup(); } /** * @throws Exception * * @author Klaus Meffert * @since 3.0 */ public void testHashCode_0() throws Exception { CommandGeneImpl gene = new CommandGeneImpl(m_gpconf); assertEquals( gene.getClass().getName().hashCode(), gene.hashCode()); } /** * @throws Exception * * @author Klaus Meffert * @since 3.0 */ public void testHashCode_1() throws Exception { CommandGeneImpl gene = new CommandGeneImpl(m_gpconf); //TODO implement // gene.setAllele(new Double(1.5d)); // assertEquals(new Double(1.5d).hashCode(), gene.hashCode()); } /** * @throws Exception * * @author Klaus Meffert * @since 3.0 */ public void testSetEnergy_0() throws Exception { CommandGeneImpl gene = new CommandGeneImpl(m_gpconf); assertEquals(0.0, gene.getEnergy(), DELTA); gene.setEnergy(2.3); assertEquals(2.3, gene.getEnergy(), DELTA); } /** * @throws Exception * * @author Klaus Meffert * @since 3.0 */ public void testSetEnergy_1() throws Exception { CommandGeneImpl gene = new CommandGeneImpl(m_gpconf); gene.setEnergy(2.3); assertEquals(2.3, gene.getEnergy(), DELTA); gene.setEnergy( -55.8); assertEquals( -55.8, gene.getEnergy(), DELTA); gene.setEnergy(0.5); gene.setEnergy(0.8); assertEquals(0.8, gene.getEnergy(), DELTA); } /** * @throws Exception * * @author Klaus Meffert * @since 3.0 */ public void testSetApplicationData_0() throws Exception { CommandGeneImpl gene = new CommandGeneImpl(m_gpconf); assertNull(gene.getApplicationData()); Integer i = new Integer(23); gene.setApplicationData(i); assertSame(i, gene.getApplicationData()); String s = "Hallo"; gene.setApplicationData(s); assertSame(s, gene.getApplicationData()); } /** * @throws Exception * * @author Klaus Meffert * @since 3.0 */ public void testIsCompareApplicationData_0() throws Exception { CommandGeneImpl gene = new CommandGeneImpl(m_gpconf); assertFalse(gene.isCompareApplicationData()); gene.setCompareApplicationData(false); assertFalse(gene.isCompareApplicationData()); gene.setCompareApplicationData(true); assertTrue(gene.isCompareApplicationData()); } /** * Test implementation of Gene interface extending abstract CommandGene class. * * @author Klaus Meffert * @since 3.0 */ class CommandGeneImpl extends CommandGene { public CommandGeneImpl(final GPConfiguration a_config) throws InvalidConfigurationException { super(a_config,1,CommandGene.FloatClass); } protected Gene newGeneInternal() { return null; } public Class getChildType(IGPProgram a_ind, int a_chromNum) { return null; } public String toString() { return "test"; } } class AppDataForTesting implements IApplicationData { public int compareTo(Object o2) { return 0; } public boolean equals(Object o2) { return true; } public Object clone() throws CloneNotSupportedException { return null; } } }