/*
* File: CrossoverReproducerTest.java
* Authors: Jonathan McClain
* Company: Sandia National Laboratories
* Project: Cognitive Framework Lite
*
* Copyright May 9, 2006, 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.learning.algorithm.genetic.reproducer;
import gov.sandia.cognition.learning.algorithm.genetic.reproducer.DummyCrossoverFunction;
import gov.sandia.cognition.learning.algorithm.genetic.EvaluatedGenome;
import gov.sandia.cognition.learning.algorithm.genetic.selector.DummySelector;
import junit.framework.*;
import java.util.ArrayList;
import java.util.Collection;
import gov.sandia.cognition.learning.algorithm.genetic.selector.Selector;
import java.util.Iterator;
/**
* This class implements JUnit tests for the following classes:
*
* CrossoverReproducerTest
*
* @author Jonathan McClain
* @since 1.0
*/
public class CrossoverReproducerTest extends TestCase
{
private CrossoverReproducer<Integer> reproducer;
/**
* Creates a new instance of CrossoverReproducerTest.
*/
public CrossoverReproducerTest(String testName)
{
super(testName);
}
/**
* Called before each test is run.
*/
protected void setUp() throws Exception
{
DummySelector dummySelector = new DummySelector();
DummyCrossoverFunction dummyCrossoverFunction =
new DummyCrossoverFunction();
this.reproducer = new CrossoverReproducer<Integer>(
dummySelector, dummyCrossoverFunction);
}
/**
* Called after each test is run.
*/
protected void tearDown() throws Exception
{
}
/**
* Returns the test.
*/
public static Test suite()
{
TestSuite suite = new TestSuite(CrossoverReproducerTest.class);
return suite;
}
/**
* Test of reproduce method, of class
* gov.sandia.isrc.learning.reinforcement.CrossoverReproducer.
*/
public void testReproduce() {
System.out.println("reproduce");
DummySelector dummySelector = new DummySelector();
DummyCrossoverFunction dummyCrossoverFunction =
new DummyCrossoverFunction();
CrossoverReproducer<Integer> reproducer =
new CrossoverReproducer<Integer>(
dummySelector,
dummyCrossoverFunction);
ArrayList<EvaluatedGenome<Integer>> population =
new ArrayList<EvaluatedGenome<Integer>>(10);
for(int i = 0; i < 10; i++)
{
EvaluatedGenome<Integer> genome =
new EvaluatedGenome<Integer>(0.0, 0);
population.add(i, genome);
}
Collection<Integer> newPopulation = reproducer.reproduce(population);
assertEquals(
"Select was called an incorrect number of times",
2,
dummySelector.getSelectCount());
assertEquals(
"Crossover was called an incorrect number of times",
10,
dummyCrossoverFunction.getCrossoverCount());
assertEquals(
"Returned population was incorrect size",
population.size(),
newPopulation.size());
}
/**
* Test of getSelector method, of class gov.sandia.isrc.learning.genetic.reproducer.CrossoverReproducer.
*/
public void testGetSelector()
{
System.out.println("getSelector");
Selector<Integer> selector = this.reproducer.getSelector();
assertNotNull( selector );
}
/**
* Test of getCrossoverFunction method, of class gov.sandia.isrc.learning.genetic.reproducer.CrossoverReproducer.
*/
public void testGetCrossoverFunction()
{
System.out.println("getCrossoverFunction");
CrossoverFunction<Integer> function = this.reproducer.getCrossoverFunction();
assertNotNull( function );
}
/**
* Test of setSelector method, of class gov.sandia.isrc.learning.genetic.reproducer.CrossoverReproducer.
*/
public void testSetSelector()
{
System.out.println("setSelector");
Selector<Integer> selector = this.reproducer.getSelector();
assertNotNull( selector );
this.reproducer.setSelector( null );
assertNull( this.reproducer.getSelector() );
this.reproducer.setSelector( selector );
assertSame( selector, this.reproducer.getSelector() );
}
/**
* Test of setCrossoverFunction method, of class gov.sandia.isrc.learning.genetic.reproducer.CrossoverReproducer.
*/
public void testSetCrossoverFunction()
{
System.out.println("setCrossoverFunction");
CrossoverFunction<Integer> function = this.reproducer.getCrossoverFunction();
assertNotNull( function );
this.reproducer.setCrossoverFunction( null );
assertNull( this.reproducer.getCrossoverFunction() );
this.reproducer.setCrossoverFunction( function );
assertSame( function, this.reproducer.getCrossoverFunction() );
}
}