/*
* 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.gui;
import java.io.*;
import org.jgap.data.config.*;
import java.util.*;
import org.jgap.*;
import org.jgap.event.*;
import org.jgap.impl.*;
import junit.framework.*;
/**
* Tests the ConfigWriter class.
*
* @author Siddhartha Azad
* @since 2.3
*/
public class ConfigWriterTest
extends JGAPTestCase {
/** String containing the CVS revision. Read out via reflection!*/
private final static String CVS_REVISION = "$Revision: 1.19 $";
public static Test suite() {
TestSuite suite = new TestSuite(ConfigWriterTest.class);
return suite;
}
/**
* Get mock config data, use the ConfigWriter to write a property file
* retrieve the written file, load it and check if the contents got
* written correctly.
*
* @throws Exception
*
* @author Siddhartha Azad
* @since 2.3
* */
public void testConfigData_0()
throws Exception {
IConfigInfo ici = new MockConfigInfoForTesting();
ConfigWriter.getInstance().write(ici); /**@todo write to stream*/
// read the file and check the values
int totalProps = 0;
Properties props = new Properties();
try {
props.load(new FileInputStream("jgapTmp.con"));
/**@todo read from stream*/
ConfigData cd = ici.getConfigData();
String nsPrefix = cd.getNS() + ".";
String name;
List values;
for (int i = 0; i < cd.getNumLists(); i++) {
name = cd.getListNameAt(i);
values = cd.getListValuesAt(i);
int idx = 0;
for (Iterator iter = values.iterator(); iter.hasNext(); idx++) {
// append an index for same key elements
String tmpName = nsPrefix + name + "[" + idx + "]";
try {
assertEquals(props.getProperty(tmpName), (String) iter.next());
} catch (Exception ex) {
ex.printStackTrace();
fail();
}
totalProps++;
}
}
// test the TextField properties
String value = "", tmpName = "";
for (int i = 0; i < cd.getNumTexts(); i++) {
name = cd.getTextNameAt(i);
value = cd.getTextValueAt(i);
tmpName = nsPrefix + name;
try {
assertEquals(props.getProperty(tmpName), value);
} catch (Exception ex) {
ex.printStackTrace();
fail();
}
totalProps++;
}
assertEquals(totalProps, props.size());
} catch (IOException ioEx) {
ioEx.printStackTrace();
fail();
}
}
/**
* Test the reading of a config file and loading of the m_populatioSize
* variable of the Configuration Configurable.
*
* @throws Exception
*
* @author Siddhartha Azad
* @since 2.3
*/
public void testConfigReader_0()
throws Exception {
Configuration.reset();
Configuration conf = new Configuration("jgapTest.con", false);
assertEquals(conf.getPopulationSize(), 35);
// Some setup so that the Configuration doesn't throw an Exception. We do
// not set the population size of the Configuration since this is supposed
// to be read directly from the config file.
// set up a sample chromosome
Gene[] sampleGenes = new Gene[3];
sampleGenes[0] = new IntegerGene(conf, 60, 100);
sampleGenes[1] = new IntegerGene(conf, 1, 50);
sampleGenes[2] = new IntegerGene(conf, 100, 150);
Chromosome sampleChromosome = new Chromosome(conf, sampleGenes);
FitnessFunction fitFunc = new StaticFitnessFunction(100.0d);
conf.setFitnessFunction(fitFunc);
// The higher the value, the better
conf.setFitnessEvaluator(new DefaultFitnessEvaluator());
conf.setSampleChromosome(sampleChromosome);
BestChromosomesSelector bestChromsSelector = new
BestChromosomesSelector(conf, 1.0d);
bestChromsSelector.setDoubletteChromosomesAllowed(false);
conf.addNaturalSelector(bestChromsSelector, true);
conf.setRandomGenerator(new StockRandomGenerator());
conf.setEventManager(new EventManager());
conf.addGeneticOperator(new CrossoverOperator(conf));
conf.addGeneticOperator(new MutationOperator(conf, 15));
Genotype.randomInitialGenotype(conf);
}
/**
*
* @throws Exception
*
* @author Klaus Meffert
* @since 3.1
*/
public void testGetInstance_0()
throws Exception {
ConfigWriter inst = ConfigWriter.getInstance();
assertSame(inst, ConfigWriter.getInstance());
}
}