/* * 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; import java.util.*; import org.jgap.*; import org.jgap.util.*; import junit.framework.*; /** * Tests the DefaultCloneHandler class. * * @author Klaus Meffert * @since 2.6 */ public class DefaultCloneHandlerTest extends JGAPTestCase { /** String containing the CVS revision. Read out via reflection!*/ private static final String CVS_REVISION = "$Revision: 1.8 $"; public static Test suite() { TestSuite suite = new TestSuite(DefaultCloneHandlerTest.class); return suite; } /** * Handler implementing Cloneable without clone() method. * @throws Exception * * @author Klaus Meffert * @since 2.6 */ public void testIsHandlerFor_0() throws Exception { IHandler handler = new DefaultCloneHandler(); assertFalse(handler.isHandlerFor(null, MyCloneHandlerForTesting.class)); } /** * Handler not implementing Cloneable. * @throws Exception * * @author Klaus Meffert * @since 2.6 */ public void testIsHandlerFor_1() throws Exception { IHandler handler = new DefaultCloneHandler(); assertFalse(handler.isHandlerFor(null, MyClassForTesting.class)); } /** * @throws Exception * * @author Klaus Meffert * @since 2.6 */ public void testIsHandlerFor_2() throws Exception { IHandler handler = new DefaultCloneHandler(); Object app = new MyAppDataForTesting(); assertTrue(handler.isHandlerFor(app, app.getClass())); } /** * @throws Exception * * @author Klaus Meffert * @since 3.2 */ public void testIsHandlerFor_3() throws Exception { IHandler handler = new DefaultCloneHandler(); assertTrue(handler.isHandlerFor(null, ICloneable.class)); } /** * @throws Exception * * @author Klaus Meffert * @since 2.6 */ public void testPerform_1() throws Exception { IHandler handler = new DefaultCloneHandler(); FixedBinaryGene orig = new FixedBinaryGene(conf, 3); FixedBinaryGene clone = (FixedBinaryGene) handler.perform(orig, FixedBinaryGene.class, null); assertEquals(orig, clone); } /** * @throws Exception * * @author Klaus Meffert * @since 3.2 */ public void testPerform_2() throws Exception { IHandler handler = new DefaultCloneHandler(); FixedBinaryGene orig = new FixedBinaryGene(conf, 3); FixedBinaryGene clone = (FixedBinaryGene) handler.perform(orig, null, null); assertEquals(orig, clone); } /** * @throws Exception * * @author Klaus Meffert * @since 3.2 */ public void testPerform_3() throws Exception { IHandler handler = new DefaultCloneHandler(); Chromosome orig = new Chromosome(conf); Chromosome clone = (Chromosome) handler.perform(orig, Chromosome.class, null); assertEquals(orig, clone); } /** * @throws Exception * * @author Klaus Meffert * @since 3.2 */ public void testPerform_4() throws Exception { IHandler handler = new DefaultCloneHandler(); Chromosome orig = new Chromosome(conf); Chromosome clone = (Chromosome) handler.perform(orig, null, null); assertEquals(orig, clone); } /** * @throws Exception * * @author Klaus Meffert * @since 3.2 */ public void testPerform_5() throws Exception { IHandler handler = new DefaultCloneHandler(); Chromosome orig = new Chromosome(conf); Chromosome clone = (Chromosome) handler.perform(orig, null, new Vector()); assertEquals(orig, clone); } /** * @throws Exception * * @author Klaus Meffert * @since 3.2 */ public void testPerform_6() throws Exception { IHandler handler = new DefaultCloneHandler(); Chromosome orig = new Chromosome(conf); try { Chromosome clone = (Chromosome) handler.perform(null, Chromosome.class, null); fail(); } catch (NullPointerException nex) { ; //this is OK } } class MyAppDataForTesting implements Cloneable { public int compareTo(Object o) { return 0; } public Object clone() throws CloneNotSupportedException { throw new CloneNotSupportedException(); } } class MyCloneHandlerForTesting implements Cloneable { } class MyClassForTesting { } }