package org.phenoscape.io; import java.io.File; import java.io.IOException; import java.io.StringWriter; import org.apache.xmlbeans.XmlException; import org.junit.Assert; import org.junit.Test; import org.obo.datamodel.OBOSession; import org.obo.datamodel.impl.OBOSessionImpl; import org.phenoscape.io.nexml_1_0.NeXMLReader_1_0; import org.phenoscape.io.nexml_1_0.NeXMLWriter_1_0; import org.phenoscape.model.Phenotype; import org.phenoscape.model.Taxon; public class NeXMLReader_1_0Test { @Test public void handleDanglingTerms() throws XmlException, IOException { final OBOSession session = new OBOSessionImpl(); final NeXMLReader_1_0 reader = new NeXMLReader_1_0(new File("testfiles/NeXMLReaderTestFile1.xml"), session); Assert.assertEquals("There should be 4 dangling terms", 4, reader.getDanglersList().size()); final Taxon firstTaxon = reader.getDataSet().getTaxa().get(0); Assert.assertEquals("Taxon should have correct ID", "TTO:1052189", firstTaxon.getValidName().getID()); Assert.assertEquals("Specimen should have correct ID", "COLLECTION:0000194", firstTaxon.getSpecimens().get(0).getCollectionCode().getID()); final Phenotype phenotype = reader.getDataSet().getCharacters().get(0).getStates().get(0).getPhenotypes().get(0); Assert.assertEquals("Entity should have correct ID", "TAO:0001173", phenotype.getEntity().getID()); Assert.assertEquals("Quality should have correct ID", "PATO:0000318", phenotype.getQuality().getID()); final NeXMLWriter_1_0 writer = new NeXMLWriter_1_0("dummy"); writer.setDataSet(reader.getDataSet()); StringWriter stringWriter = new StringWriter(); writer.write(stringWriter); final String xml = stringWriter.toString(); Assert.assertTrue("Quick check that IDs of danglers can be successfully written", xml.contains("TTO:1052189")); Assert.assertTrue("Quick check that IDs of danglers can be successfully written", xml.contains("COLLECTION:0000194")); Assert.assertTrue("Quick check that IDs of danglers can be successfully written", xml.contains("TAO:0001173")); Assert.assertTrue("Quick check that IDs of danglers can be successfully written", xml.contains("PATO:0000318")); } }