⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlmanagertest.java

📁 一个开源的用java开发的遗传算法的封装好的工程
💻 JAVA
字号:
/*
 * This file is part of JGAP.
 *
 * JGAP offers a dual license model containing the LGPL as well as the MPL.
 *
 * For licencing 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.xml;

import java.io.*;
import javax.xml.parsers.*;
import org.jgap.*;
import org.jgap.supergenes.*;
import org.jgap.impl.*;
import org.w3c.dom.*;
import junit.framework.*;

/**
 * Tests the XMLManager class.
 *
 * @author Klaus Meffert
 * @since 1.0
 */
public class XMLManagerTest
    extends JGAPTestCase {
  /** String containing the CVS revision. Read out via reflection!*/
  private final static String CVS_REVISION = "$Revision: 1.18 $";

  private final static String FILENAME_WRITE = "GAtestWrite.xml";

  public static Test suite() {
    TestSuite suite = new TestSuite(XMLManagerTest.class);
    return suite;
  }

  private Configuration m_conf;

  private Chromosome m_chrom;
  private Chromosome m_supergenechrom;

  private Gene[] m_genes;
  private Gene[] m_supergenes;

  private Genotype m_genotype;

  private String m_chromosome_tag;

  private String m_genes_tag;

  private String m_genotype_tag;

  public void setUp() {
    super.setUp();
    try {
      Configuration.reset();
      m_conf = new DefaultConfiguration();
      m_genes = new IntegerGene[2];
      m_genes[0] = new IntegerGene(conf, 0, 100);
      m_genes[0].setAllele(new Integer(54));
      m_genes[1] = new IntegerGene(conf, 22, 44);
      m_genes[1].setAllele(new Integer(37));
      m_conf.setFitnessFunction(new RandomFitnessFunction());
      m_conf.setPopulationSize(8);
      m_chrom = new Chromosome(conf, m_genes);
      InstantiableSupergeneForTest gene = new InstantiableSupergeneForTest(conf, new Gene[]{});
      m_supergenes = new Supergene[]{gene};
      m_supergenechrom = new Chromosome(conf, m_supergenes);

      m_conf.setSampleChromosome(m_chrom);
      m_genotype = new Genotype(m_conf, new Chromosome[] {m_chrom});
      m_chromosome_tag = (String) privateAccessor.getField(XMLManager.class,
          "CHROMOSOME_TAG");
      m_genes_tag = (String) privateAccessor.getField(XMLManager.class,
          "GENES_TAG");
      m_genotype_tag = (String) privateAccessor.getField(XMLManager.class,
          "GENOTYPE_TAG");
    }
    catch (Exception ex) {
      throw new RuntimeException("Error in setUp: " + ex.getMessage());
    }
  }

  public void testGetChromosomeFromDocument_0()
      throws Exception {
    try {
      XMLManager.getChromosomeFromDocument(m_conf, null);
      fail();
    }
    catch (NullPointerException nex) {
      ; //this is OK
    }
  }

  public void testGetChromosomeFromDocument_1()
      throws Exception {
    Document doc = XMLManager.representChromosomeAsDocument(m_chrom);
    Chromosome chrom2 = XMLManager.getChromosomeFromDocument(m_conf, doc);
    assertTrue(m_chrom.equals(chrom2));
  }

  public void testGetChromosomeFromElement_0()
      throws Exception {
    XMLManager.representChromosomeAsDocument(m_chrom);
    Element elem = null;
    try {
      XMLManager.getChromosomeFromElement(m_conf, elem);
      fail();
    }
    catch (ImproperXMLException iex) {
      ; //this is OK
    }
  }

  public void testGetChromosomeFromElement_1()
      throws Exception {
    Document doc = XMLManager.representChromosomeAsDocument(m_chrom);
    Element elem = doc.getDocumentElement();
    Chromosome chrom2 = XMLManager.getChromosomeFromElement(m_conf, elem);
    assertEquals(m_chrom, chrom2);
  }

  public void testGetGenesFromElement_0()
      throws Exception {
    Document doc = XMLManager.representChromosomeAsDocument(m_chrom);
    Element elem = doc.getDocumentElement();
    NodeList chromElems = elem.getElementsByTagName(m_genes_tag);
    Gene[] genes2 = XMLManager.getGenesFromElement(m_conf,
        (Element) chromElems.item(0));
    assertEquals(m_genes.length, genes2.length);
    for (int i = 0; i < m_genes.length; i++) {
      assertEquals(m_genes[i], genes2[i]);
    }
  }

  /**
   *
   * @throws Exception
   *
   * @author Klaus Meffert
   * @since 3.0
   */
  public void testGetGenesFromElement_2()
      throws Exception {
    Document doc = XMLManager.representChromosomeAsDocument(m_supergenechrom);
    Element elem = doc.getDocumentElement();
    NodeList chromElems = elem.getElementsByTagName(m_genes_tag);
    Gene[] genes2 = XMLManager.getGenesFromElement(m_conf,
        (Element) chromElems.item(0));
    assertEquals(m_supergenes.length, genes2.length);
    for (int i = 0; i < m_supergenes.length; i++) {
      assertEquals(m_supergenes[i], genes2[i]);
    }
  }

  /**
   * @throws Exception
   *
   * @author Klaus Meffert
   * @since 2.6
   */
  public void testGetGenesFromElement_1()
      throws Exception {
    try {
      XMLManager.getGenesFromElement(m_conf, null);
      fail();
    }
    catch (ImproperXMLException iex) {
      ; //this is OK
    }
  }

  public void testGetGenotypeFromDocument_0()
      throws Exception {
    Document doc = XMLManager.representChromosomeAsDocument(m_chrom);
    try {
      XMLManager.getGenotypeFromDocument(m_conf, doc);
      fail();
    }
    catch (ImproperXMLException iex) {
      ; //this is OK
    }
  }

  public void testGetGenotypeFromDocument_1()
      throws Exception {
    Document doc = XMLManager.representGenotypeAsDocument(m_genotype);
    Genotype genotype2 = XMLManager.getGenotypeFromDocument(m_conf, doc);
    assertTrue(m_genotype.equals(genotype2));
    assertEquals(m_genotype, genotype2);
  }

  public void testGetGenotypeFromElement_0()
      throws Exception {
    Document doc = XMLManager.representGenotypeAsDocument(m_genotype);
    Element elem = doc.getDocumentElement();
    Genotype genotype2 = XMLManager.getGenotypeFromElement(m_conf, elem);
    assertEquals(m_genotype, genotype2);
  }

  /**
   * @throws Exception
   *
   * @author Klaus Meffert
   * @since 2.6
   */
  public void testGetGenotypeFromElement_1()
      throws Exception {
    try {
      XMLManager.getGenotypeFromElement(m_conf, null);
      fail();
    }
    catch (ImproperXMLException iex) {
      ; //this is OK
    }
  }

  public void testRepresentChromosomeAsDocument_0()
      throws Exception {
    Document doc = XMLManager.representChromosomeAsDocument(m_chrom);
    Element elem = doc.getDocumentElement();
    assertEquals(m_chromosome_tag, elem.getTagName());
  }

  public void testRepresentChromosomeAsElement_0()
      throws Exception {
    DocumentBuilder docCreator =
        DocumentBuilderFactory.newInstance().newDocumentBuilder();
    Document doc = docCreator.newDocument();
    Element elem = XMLManager.representChromosomeAsElement(m_chrom, doc);
    assertEquals(m_chromosome_tag, elem.getTagName());
  }

  public void testRepresentGenesAsElement_0()
      throws Exception {
    Document doc = XMLManager.representChromosomeAsDocument(m_chrom);
    Element elem = XMLManager.representGenesAsElement(m_genes, doc);
    assertEquals(m_genes_tag, elem.getTagName());
  }

  public void testRepresentGenotypeAsDocument_0()
      throws Exception {
    Document doc = XMLManager.representGenotypeAsDocument(m_genotype);
    Element elem = doc.getDocumentElement();
    assertEquals(m_genotype_tag, elem.getTagName());
  }

  public void testRepresentGenotypeAsElement_0()
      throws Exception {
    DocumentBuilder docCreator =
        DocumentBuilderFactory.newInstance().newDocumentBuilder();
    Document doc = docCreator.newDocument();
    Element elem = XMLManager.representGenotypeAsElement(m_genotype, doc);
    assertEquals(m_genotype_tag, elem.getTagName());
  }

  /**
   * Attention: This test generates a console output with Java 5:
   * "[Fatal Error] : -1:-1: Premature end of file."
   * This is OK, but kinda weird and unwanted.
   *
   * @throws Exception
   */
  public void testReadFile_0()
      throws Exception {
    try {
      XMLManager.readFile(File.createTempFile("FILENAME_WRITE", "tmp"));
      fail();
    }
    catch (Exception ex) {
      ; //this is OK
    }
  }

  public void testReadFile_1()
      throws Exception {
    Document doc = XMLManager.representGenotypeAsDocument(m_genotype);
    File f = File.createTempFile("FILENAME_WRITE", "tmp");
    XMLManager.writeFile(XMLManager.representGenotypeAsDocument(m_genotype),
                         f);
    XMLManager.readFile(f);
    Genotype population = XMLManager.getGenotypeFromDocument(m_conf, doc);
    assertEquals(m_genotype, population);
  }

  public void testWriteFile_0()
      throws Exception {
    XMLManager.representGenotypeAsDocument(m_genotype);
    File f = File.createTempFile("FILENAME_WRITE", "tmp");
    XMLManager.writeFile(XMLManager.representGenotypeAsDocument(m_genotype),
                         f);
  }

  /**
   * Do the same as above test to verify that overriding existing file works.
   *
   * @throws Exception
   */
  public void testWriteFile_1()
      throws Exception {
    XMLManager.representGenotypeAsDocument(m_genotype);
    File f = File.createTempFile("FILENAME_WRITE", "tmp");
    XMLManager.writeFile(XMLManager.representGenotypeAsDocument(m_genotype),
                         f);
  }

  /**
   * Tests XML capabilities of JGAP. Moved from examples.simpleBoolean.TestXML.
   *
   * @throws Exception
   *
   * @author Klaus Meffert
   * @since 3.0
   */
  public void testChromosome_0()
      throws Exception {
    Configuration.resetProperty(Configuration.PROPERTY_SAMPLE_CHROM_INST);
    conf.setSampleChromosome(new Chromosome(conf, new BooleanGene(conf), 8));
    conf.setPopulationSize(10);
    conf.reset();
    conf.setFitnessFunction(new TestFitnessFunction());
    // Test Chromsome manipulation methods.
    // ------------------------------------
    IChromosome chromosome = Chromosome.randomInitialChromosome(conf);
    Document chromosomeDoc =
        XMLManager.representChromosomeAsDocument(chromosome);
    IChromosome chromosomeFromXML =
        XMLManager.getChromosomeFromDocument(conf, chromosomeDoc);
    assertEquals(chromosomeFromXML, chromosome);
  }

  /**
   * Tests XML capabilities of JGAP. Moved from examples.simpleBoolean.TestXML.
   *
   * @throws Exception
   *
   * @author Klaus Meffert
   * @since 3.0
   */
  public void testGenotype_0()
      throws Exception {
    Configuration.resetProperty(Configuration.PROPERTY_SAMPLE_CHROM_INST);
    conf.setSampleChromosome(new Chromosome(conf, new BooleanGene(conf), 8));
    conf.setPopulationSize(10);
    conf.reset();
    conf.setFitnessFunction(new TestFitnessFunction());
    // Test Genotype manipulation methods.
    // -----------------------------------
    Genotype genotype = Genotype.randomInitialGenotype(conf);
    Document genotypeDoc = XMLManager.representGenotypeAsDocument(genotype);
    Genotype genotypeFromXML =
        XMLManager.getGenotypeFromDocument(conf, genotypeDoc);
    assertEquals(genotypeFromXML, genotype);
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -