diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/AllSbmlConverterTests.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/AllSbmlConverterTests.java index 1bc8fc0a77a511d0ec8615a3cfd6436665ff8bdf..89784fc0c02e32376877088930f45b23b968c666 100644 --- a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/AllSbmlConverterTests.java +++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/AllSbmlConverterTests.java @@ -13,7 +13,9 @@ import lcsb.mapviewer.converter.model.sbml.species.AllSbmlSpeciesTests; GenericSbmlParserTest.class, GenericSbmlToXmlParserTest.class, CellDesignerToMultiExportTest.class, + ElementPropertiesExportToMultiTest.class, MultiParserTest.class, + ReactionPropertiesExportToMultiTest.class, SbmlBioEntityExporterTest.class, SbmlExporterTest.class, SbmlExporterFromCellDesignerTest.class, diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/ElementPropertiesExportToMultiTest.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/ElementPropertiesExportToMultiTest.java new file mode 100644 index 0000000000000000000000000000000000000000..7f026419554bea0168a6746a035574e9d497a60c --- /dev/null +++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/ElementPropertiesExportToMultiTest.java @@ -0,0 +1,108 @@ +package lcsb.mapviewer.converter.model.sbml; + +import static org.junit.Assert.assertEquals; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; + +import org.apache.log4j.Logger; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameters; + +import lcsb.mapviewer.converter.ConverterParams; +import lcsb.mapviewer.model.map.model.Model; +import lcsb.mapviewer.model.map.model.ModelComparator; +import lcsb.mapviewer.model.map.model.ModelFullIndexed; +import lcsb.mapviewer.model.map.species.Element; +import lcsb.mapviewer.model.map.species.GenericProtein; + +@RunWith(Parameterized.class) +public class ElementPropertiesExportToMultiTest { + + static Logger logger = Logger.getLogger(ElementPropertiesExportToMultiTest.class.getName()); + + private Model model; + + public ElementPropertiesExportToMultiTest(String propertyName, Model model) { + this.model = model; + } + + @Parameters(name = "{index} : {0}") + public static Collection<Object[]> data() throws IOException { + Collection<Object[]> data = new ArrayList<>(); + + data.add(createTestEntry("Empty", createElement())); + + Element element = createElement(); + element.setAbbreviation("xyz"); + data.add(createTestEntry("Abbreviation", element)); + + element = createElement(); + element.setFormerSymbols(Arrays.asList(new String[] { "symbol 1", "s2" })); + data.add(createTestEntry("Former Symbols", element)); + + element = createElement(); + element.setFormula("C2H5OH"); + data.add(createTestEntry("Formula", element)); + + element = createElement(); + element.setFullName("Amazing element"); + data.add(createTestEntry("Full name", element)); + + element = createElement(); + element.setSymbol("H2O"); + data.add(createTestEntry("Symbol", element)); + + element = createElement(); + element.setSynonyms(Arrays.asList(new String[] { "syn 1", "s2" })); + data.add(createTestEntry("Synonyms", element)); + + return data; + } + + private static Object[] createTestEntry(String string, Element element) { + Model result = new ModelFullIndexed(null); + result.setIdModel("X"); + result.setWidth(200); + result.setHeight(200); + result.addElement(element); + return new Object[] { string, result }; + } + + private static Element createElement() { + Element element = new GenericProtein("id"); + element.setX(10); + element.setY(10); + element.setWidth(1000); + element.setHeight(30); + return element; + } + + @Test + public void createModelTest() throws Exception { + try { + SbmlExporter sbmlExporter = new SbmlExporter(); + SbmlParser sbmlParser = new SbmlParser(); + String xmlString = sbmlExporter.toXml(model); + + InputStream is = new ByteArrayInputStream(xmlString.getBytes("UTF-8")); + + Model model2 = sbmlParser.createModel(new ConverterParams().inputStream(is).sizeAutoAdjust(false)); + model2.setName(model.getName()); + + ModelComparator comparator = new ModelComparator(); + assertEquals(0, comparator.compare(model, model2)); + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + +} diff --git a/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/ReactionPropertiesExportToMultiTest.java b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/ReactionPropertiesExportToMultiTest.java new file mode 100644 index 0000000000000000000000000000000000000000..f8f211ade7d3845a6d5f623308fdd83050ca0372 --- /dev/null +++ b/converter-sbml/src/test/java/lcsb/mapviewer/converter/model/sbml/ReactionPropertiesExportToMultiTest.java @@ -0,0 +1,165 @@ +package lcsb.mapviewer.converter.model.sbml; + +import static org.junit.Assert.assertEquals; + +import java.awt.geom.Point2D; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; + +import org.apache.log4j.Logger; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameters; + +import lcsb.mapviewer.converter.ConverterParams; +import lcsb.mapviewer.model.graphics.PolylineData; +import lcsb.mapviewer.model.map.model.Model; +import lcsb.mapviewer.model.map.model.ModelComparator; +import lcsb.mapviewer.model.map.model.ModelFullIndexed; +import lcsb.mapviewer.model.map.reaction.Product; +import lcsb.mapviewer.model.map.reaction.Reactant; +import lcsb.mapviewer.model.map.reaction.Reaction; +import lcsb.mapviewer.model.map.reaction.ReactionNode; +import lcsb.mapviewer.model.map.reaction.type.StateTransitionReaction; +import lcsb.mapviewer.model.map.species.Ion; + +@RunWith(Parameterized.class) +public class ReactionPropertiesExportToMultiTest { + + static Logger logger = Logger.getLogger(ReactionPropertiesExportToMultiTest.class.getName()); + + private Model model; + private static String reactionId = "reactionId"; + + public ReactionPropertiesExportToMultiTest(String propertyName, Model model) { + this.model = model; + } + + @Parameters(name = "{index} : {0}") + public static Collection<Object[]> data() throws IOException { + Collection<Object[]> data = new ArrayList<>(); + + data.add(createTestEntry("Empty", createReaction())); + + Reaction reaction = createReaction(); + reaction.setAbbreviation("xyz"); + data.add(createTestEntry("Abbreviation", reaction)); + + reaction = createReaction(); + reaction.setMechanicalConfidenceScore(1); + data.add(createTestEntry("Mechanical Confidence Score", reaction)); + + reaction = createReaction(); + reaction.setSubsystem("sub system"); + data.add(createTestEntry("Subsystem", reaction)); + + reaction = createReaction(); + reaction.setFormula("C2H5OH"); + data.add(createTestEntry("Formula", reaction)); + + reaction = createReaction(); + reaction.setGeneProteinReaction("some magic string"); + data.add(createTestEntry("Gene Protein Reaction", reaction)); + + reaction = createReaction(); + reaction.setLowerBound(12.0); + data.add(createTestEntry("Lower bound", reaction)); + + reaction = createReaction(); + reaction.setUpperBound(13.0); + data.add(createTestEntry("Upper bound", reaction)); + + reaction = createReaction(); + reaction.setSymbol("H2O"); + data.add(createTestEntry("Symbol", reaction)); + + reaction = createReaction(); + reaction.setSynonyms(Arrays.asList(new String[] { "syn 1", "s2" })); + data.add(createTestEntry("Synonyms", reaction)); + + return data; + } + + private static Reaction createReaction() { + Reaction reactionm = new StateTransitionReaction(); + + Ion ion = createIon(1); + Ion ion2 = createIon(2); + + reactionm.setIdReaction(reactionId); + reactionm.addReactant(createReactant(ion)); + reactionm.addProduct(createProduct(ion2)); + + return reactionm; + } + + private static Reactant createReactant(Ion ion) { + Reactant result = new Reactant(ion); + Point2D point = ion.getCenter(); + point.setLocation(point.getX() + 300, point.getY()); + result.setLine(new PolylineData(ion.getCenter(), point)); + return result; + } + + private static Product createProduct(Ion ion) { + Product result = new Product(ion); + Point2D point = ion.getCenter(); + point.setLocation(point.getX() + 300, point.getY()); + result.setLine(new PolylineData(ion.getCenter(), point)); + return result; + } + + private static Ion createIon(int id) { + Ion ion = new Ion("x" + id); + ion.setName("ion " + id); + ion.setWidth(100); + ion.setHeight(100); + ion.setX(200 * (id % 2 + 1)); + ion.setY(50 * (id / 2 + 1)); + ion.setOnlySubstanceUnits(true); + ion.setConstant(true); + ion.setInitialAmount(2.0); + ion.setBoundaryCondition(true); + return ion; + } + + private static Object[] createTestEntry(String string, Reaction element) { + Model result = new ModelFullIndexed(null); + result.setIdModel("X"); + result.setWidth(200); + result.setHeight(200); + for (ReactionNode node : ((Reaction) element).getReactionNodes()) { + result.addElement(node.getElement()); + } + result.addReaction((Reaction) element); + return new Object[] { string, result }; + } + + @Test + public void createModelTest() throws Exception { + try { + SbmlExporter sbmlExporter = new SbmlExporter(); + SbmlParser sbmlParser = new SbmlParser(); + String xmlString = sbmlExporter.toXml(model); + + InputStream is = new ByteArrayInputStream(xmlString.getBytes("UTF-8")); + + Model model2 = sbmlParser.createModel(new ConverterParams().inputStream(is).sizeAutoAdjust(false)); + model2.setName(model.getName()); + model2.getReactions().iterator().next().setIdReaction(reactionId); + + ModelComparator comparator = new ModelComparator(); + assertEquals(0, comparator.compare(model, model2)); + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + +}