/// /// @file TestWriteSBML.cs /// @brief Write SBML unit tests /// @author Frank Bergmann (Csharp conversion) /// @author Akiya Jouraku (Csharp conversion) /// @author Ben Bornstein /// /// $Id: TestWriteSBML.cs 8825 2009-01-12 23:22:45Z ajouraku $ /// $HeadURL: https://sbml.svn.sourceforge.net/svnroot/sbml/trunk/libsbml/src/bindings/csharp/test/sbml/TestWriteSBML.cs $ /// /// This test file was converted from src/sbml/test/TestWriteSBML.cpp /// with the help of conversion sciprt (ctest_converter.pl). /// /// */ namespace LibSBMLCSTest { using libsbml; using System.IO; public class TestWriteSBML { public class AssertionError : System.Exception { public AssertionError() : base() { } } static void assertTrue(bool condition) { if (condition == true) { return; } throw new AssertionError(); } static void assertEquals(object a, object b) { if ( (a == null) && (b == null) ) { return; } else if (a.Equals(b)) { return; } throw new AssertionError(); } static void assertNotEquals(object a, object b) { if ( (a == null) && (b == null) ) { throw new AssertionError(); } else if (a.Equals(b)) { throw new AssertionError(); } } static void assertEquals(bool a, bool b) { if ( a == b ) { return; } throw new AssertionError(); } static void assertNotEquals(bool a, bool b) { if ( a != b ) { return; } throw new AssertionError(); } static void assertEquals(int a, int b) { if ( a == b ) { return; } throw new AssertionError(); } static void assertNotEquals(int a, int b) { if ( a != b ) { return; } throw new AssertionError(); } private SBMLDocument D; private string S; private OStringStream OSS; private XMLOutputStream XOS; public string LV_L1v1() { return "level=\"1\" version=\"1\">\n"; } public string LV_L1v2() { return "level=\"1\" version=\"2\">\n"; } public string LV_L2v1() { return "level=\"2\" version=\"1\">\n"; } public string LV_L2v2() { return "level=\"2\" version=\"2\">\n"; } public string LV_L2v3() { return "level=\"2\" version=\"3\">\n"; } public string NS_L1() { return "xmlns=\"http://www.sbml.org/sbml/level1\" "; } public string NS_L2v1() { return "xmlns=\"http://www.sbml.org/sbml/level2\" "; } public string NS_L2v2() { return "xmlns=\"http://www.sbml.org/sbml/level2/version2\" "; } public string NS_L2v3() { return "xmlns=\"http://www.sbml.org/sbml/level2/version3\" "; } public string SBML_END() { return "\n"; } public string SBML_START() { return "\n"; } public string wrapSBML_L1v1(string s) { string r = XML_START(); r += SBML_START(); r += NS_L1(); r += LV_L1v1(); r += s; r += SBML_END(); return r; } public string wrapSBML_L1v2(string s) { string r = XML_START(); r += SBML_START(); r += NS_L1(); r += LV_L1v2(); r += s; r += SBML_END(); return r; } public string wrapSBML_L2v1(string s) { string r = XML_START(); r += SBML_START(); r += NS_L2v1(); r += LV_L2v1(); r += s; r += SBML_END(); return r; } public string wrapSBML_L2v2(string s) { string r = XML_START(); r += SBML_START(); r += NS_L2v2(); r += LV_L2v2(); r += s; r += SBML_END(); return r; } public string wrapSBML_L2v3(string s) { string r = XML_START(); r += SBML_START(); r += NS_L2v3(); r += LV_L2v3(); r += s; r += SBML_END(); return r; } public string wrapXML(string s) { string r = XML_START(); r += s; return r; } public double util_NaN() { double z = 0.0; return 0.0/z; } public double util_PosInf() { double z = 0.0; return 1.0/z; } public double util_NegInf() { double z = 0.0; return -1.0/z; } public bool equals(string s) { return s == OSS.str(); } public bool equals(string s1, string s2) { return (s1 ==s2); } public void setUp() { D = new SBMLDocument(); S = null; OSS = new OStringStream(); XOS = new XMLOutputStream(OSS); } public void tearDown() { S = null; } public void test_WriteSBML_AlgebraicRule() { D.setLevelAndVersion(1,1); string expected = wrapXML(""); AlgebraicRule r = new AlgebraicRule( "x + 1" ); r.setSBMLDocument(D); r.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_AlgebraicRule_L2v1() { D.setLevelAndVersion(2,1); string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " x \n" + " 1 \n" + " \n" + " \n" + ""); AlgebraicRule r = new AlgebraicRule( "x + 1" ); r.setSBMLDocument(D); r.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_AlgebraicRule_L2v2() { D.setLevelAndVersion(2,2); string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " x \n" + " 1 \n" + " \n" + " \n" + ""); AlgebraicRule r = new AlgebraicRule( "x + 1" ); r.setSBOTerm(4); r.setSBMLDocument(D); r.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Compartment() { D.setLevelAndVersion(1,2); string expected = wrapXML("" ); Compartment c = new Compartment( "A" ); c.setSize(2.1); c.setOutside("B"); c.setSBMLDocument(D); c.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_CompartmentType() { D.setLevelAndVersion(2,2); string expected = wrapXML(""); CompartmentType ct = new CompartmentType(); ct.setId("ct"); ct.setSBOTerm(4); ct.setSBMLDocument(D); ct.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_CompartmentType_withSBO() { D.setLevelAndVersion(2,3); string expected = wrapXML(""); CompartmentType ct = new CompartmentType(); ct.setId("ct"); ct.setSBOTerm(4); ct.setSBMLDocument(D); ct.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_CompartmentVolumeRule() { D.setLevelAndVersion(1,1); string expected = wrapXML(""); D.createModel(); D.getModel().createCompartment().setId("c"); Rule r = D.getModel().createRateRule(); r.setVariable("c"); r.setFormula("v + c"); r.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_CompartmentVolumeRule_L2v1() { D.setLevelAndVersion(2,1); string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " v \n" + " c \n" + " \n" + " \n" + ""); D.createModel(); D.getModel().createCompartment().setId("c"); Rule r = D.getModel().createAssignmentRule(); r.setVariable("c"); r.setFormula("v + c"); r.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_CompartmentVolumeRule_L2v2() { D.setLevelAndVersion(2,2); string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " v \n" + " c \n" + " \n" + " \n" + ""); D.createModel(); D.getModel().createCompartment().setId("c"); Rule r = D.getModel().createAssignmentRule(); r.setVariable("c"); r.setFormula("v + c"); r.setSBOTerm(5); r.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_CompartmentVolumeRule_defaults() { D.setLevelAndVersion(1,1); string expected = wrapXML("" ); D.createModel(); D.getModel().createCompartment().setId("c"); Rule r = D.getModel().createAssignmentRule(); r.setVariable("c"); r.setFormula("v + c"); r.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Compartment_L2v1() { D.setLevelAndVersion(2,1); string expected = wrapXML("" ); Compartment c = new Compartment( "M" ); c.setSize(2.5); c.setSpatialDimensions(2); c.setSBMLDocument(D); c.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Compartment_L2v1_constant() { D.setLevelAndVersion(2,1); string expected = wrapXML("" ); Compartment c = new Compartment( "cell" ); c.setSize(1.2); c.setConstant(false); c.setSBMLDocument(D); c.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Compartment_L2v1_unsetSize() { D.setLevelAndVersion(2,1); string expected = wrapXML(""); Compartment c = new Compartment(); c.setId("A"); c.unsetSize(); c.setSBMLDocument(D); c.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Compartment_L2v2_compartmentType() { D.setLevelAndVersion(2,2); string expected = wrapXML("" ); Compartment c = new Compartment( "cell" ); c.setCompartmentType("ct"); c.setSBMLDocument(D); c.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Compartment_L2v3_SBO() { D.setLevelAndVersion(2,3); string expected = wrapXML("" ); Compartment c = new Compartment( "cell" ); c.setSBOTerm(5); c.setSBMLDocument(D); c.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Compartment_unsetVolume() { D.setLevelAndVersion(1,2); string expected = wrapXML(""); Compartment c = new Compartment(); c.setId("A"); c.unsetVolume(); c.setSBMLDocument(D); c.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Constraint() { D.setLevelAndVersion(2,2); string expected = wrapXML(""); Constraint ct = new Constraint(); ct.setSBOTerm(64); ct.setSBMLDocument(D); ct.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Constraint_full() { string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " P1 \n" + " t \n" + " \n" + " \n" + " \n" + "

Species P1 is out of range

\n" + "
\n" + "
"); Constraint c = new Constraint(); ASTNode node = libsbml.parseFormula("leq(P1,t)"); c.setMath(node); c.setSBOTerm(64); XMLNode text = XMLNode.convertStringToXMLNode(" Species P1 is out of range "); XMLTriple triple = new XMLTriple("p", "http://www.w3.org/1999/xhtml", ""); XMLAttributes att = new XMLAttributes(); att.add("xmlns", "http://www.w3.org/1999/xhtml"); XMLNode p = new XMLNode(triple,att); p.addChild(text); XMLTriple triple1 = new XMLTriple("message", "", ""); XMLAttributes att1 = new XMLAttributes(); XMLNode message = new XMLNode(triple1,att1); message.addChild(p); c.setMessage(message); c.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Constraint_math() { string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " P1 \n" + " t \n" + " \n" + " \n" + ""); Constraint c = new Constraint(); ASTNode node = libsbml.parseFormula("leq(P1,t)"); c.setMath(node); c.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Event() { string expected = wrapXML(""); Event e = new Event(); e.setId("e"); e.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Event_WithSBO() { string expected = wrapXML(""); Event e = new Event(); e.setId("e"); e.setSBOTerm(76); e.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Event_WithUseValuesFromTriggerTime() { string expected = wrapXML(""); D.setLevelAndVersion(2,4); Event e = new Event(); e.setId("e"); e.setUseValuesFromTriggerTime(false); e.setSBMLDocument(D); e.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Event_both() { string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " \n" + " P1 \n" + " t \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " 5 \n" + " \n" + " \n" + ""); Event e = new Event( "e" ); ASTNode node1 = libsbml.parseFormula("leq(P1,t)"); Trigger t = new Trigger( node1 ); ASTNode node = libsbml.parseFormula("5"); Delay d = new Delay( node ); e.setDelay(d); e.setTrigger(t); e.setTimeUnits("second"); e.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Event_delay() { string expected = wrapXML("\n" + " \n" + " \n" + " 5 \n" + " \n" + " \n" + ""); Event e = new Event( "e" ); ASTNode node = libsbml.parseFormula("5"); Delay d = new Delay( node ); e.setDelay(d); e.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Event_delayWithSBO() { string expected = wrapXML("\n" + " \n" + " \n" + " 5 \n" + " \n" + " \n" + ""); Event e = new Event( "e" ); ASTNode node = libsbml.parseFormula("5"); Delay d = new Delay( node ); d.setSBOTerm(64); e.setDelay(d); e.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Event_full() { string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " \n" + " P1 \n" + " t \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " 0 \n" + " \n" + " \n" + " \n" + ""); Event e = new Event( "e" ); ASTNode node = libsbml.parseFormula("leq(P1,t)"); Trigger t = new Trigger( node ); ASTNode math = libsbml.parseFormula("0"); EventAssignment ea = new EventAssignment( "k2",math ); ea.setSBOTerm(64); e.setTrigger(t); e.addEventAssignment(ea); e.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Event_trigger() { string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " \n" + " P1 \n" + " t \n" + " \n" + " \n" + " \n" + ""); Event e = new Event( "e" ); ASTNode node = libsbml.parseFormula("leq(P1,t)"); Trigger t = new Trigger( node ); e.setTrigger(t); e.setTimeUnits("second"); e.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Event_trigger_withSBO() { string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " \n" + " P1 \n" + " t \n" + " \n" + " \n" + " \n" + ""); Event e = new Event( "e" ); ASTNode node = libsbml.parseFormula("leq(P1,t)"); Trigger t = new Trigger( node ); t.setSBOTerm(64); e.setTrigger(t); e.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_FunctionDefinition() { string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " x \n" + " \n" + " \n" + " \n" + " x \n" + " 3 \n" + " \n" + " \n" + " \n" + ""); FunctionDefinition fd = new FunctionDefinition( "pow3", "lambda(x, x^3)" ); fd.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_FunctionDefinition_withSBO() { string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " x \n" + " \n" + " \n" + " \n" + " x \n" + " 3 \n" + " \n" + " \n" + " \n" + ""); FunctionDefinition fd = new FunctionDefinition( "pow3", "lambda(x, x^3)" ); fd.setSBOTerm(64); fd.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_INF() { string expected = wrapXML(""); Parameter p = new Parameter( "p", util_PosInf() ); p.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_InitialAssignment() { D.setLevelAndVersion(2,2); string expected = wrapXML(""); InitialAssignment ia = new InitialAssignment(); ia.setSBOTerm(64); ia.setSymbol("c"); ia.setSBMLDocument(D); ia.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_InitialAssignment_math() { string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " a \n" + " b \n" + " \n" + " \n" + ""); InitialAssignment ia = new InitialAssignment(); ASTNode node = libsbml.parseFormula("a + b"); ia.setMath(node); ia.setSymbol("c"); ia.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_KineticLaw() { D.setLevelAndVersion(1,2); string expected = wrapXML(""); KineticLaw kl = new KineticLaw( "k * e", "second", "item" ); kl.setSBMLDocument(D); kl.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_KineticLaw_ListOfParameters() { D.setLevelAndVersion(1,2); string expected = wrapXML("\n" + " \n" + " \n" + " \n" + ""); KineticLaw kl = new KineticLaw( "nk * e", "second", "item" ); kl.setSBMLDocument(D); Parameter p = new Parameter( "n",1.2 ); kl.addParameter(p); kl.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_KineticLaw_l2v1() { D.setLevelAndVersion(2,1); string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " vm \n" + " s1 \n" + " \n" + " \n" + " \n" + " km \n" + " s1 \n" + " \n" + " \n" + " \n" + ""); KineticLaw kl = new KineticLaw(); kl.setTimeUnits("second"); kl.setSubstanceUnits("item"); kl.setFormula("(vm * s1)/(km + s1)"); kl.setSBMLDocument(D); kl.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_KineticLaw_skipOptional() { D.setLevelAndVersion(1,2); string expected = wrapXML(""); KineticLaw kl = new KineticLaw( "k * e" ); kl.setSBMLDocument(D); kl.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_KineticLaw_withSBO() { D.setLevelAndVersion(2,2); string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " vm \n" + " s1 \n" + " \n" + " \n" + " \n" + " km \n" + " s1 \n" + " \n" + " \n" + " \n" + ""); KineticLaw kl = new KineticLaw(); kl.setFormula("(vm * s1)/(km + s1)"); kl.setSBOTerm(1); kl.setSBMLDocument(D); kl.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Model() { D.setLevelAndVersion(1,1); string expected = wrapSBML_L1v1(" \n"); D.createModel("Branch"); S = libsbml.writeSBMLToString(D); assertEquals( true, equals(expected,S) ); } public void test_WriteSBML_Model_L2v1() { D.setLevelAndVersion(2,1); string expected = wrapSBML_L2v1(" \n"); D.createModel("Branch"); S = libsbml.writeSBMLToString(D); assertEquals( true, equals(expected,S) ); } public void test_WriteSBML_Model_L2v1_skipOptional() { D.setLevelAndVersion(2,1); string expected = wrapSBML_L2v1(" \n"); D.createModel(); S = libsbml.writeSBMLToString(D); assertEquals( true, equals(expected,S) ); } public void test_WriteSBML_Model_L2v2() { D.setLevelAndVersion(2,2); string expected = wrapSBML_L2v2(" \n"); Model m = D.createModel("Branch"); m.setSBOTerm(4); S = libsbml.writeSBMLToString(D); assertEquals( true, equals(expected,S) ); } public void test_WriteSBML_Model_skipOptional() { D.setLevelAndVersion(1,2); string expected = wrapSBML_L1v2(" \n"); D.createModel(); S = libsbml.writeSBMLToString(D); assertEquals( true, equals(expected,S) ); } public void test_WriteSBML_NaN() { string expected = wrapXML(""); Parameter p = new Parameter( "p", util_NaN() ); p.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_NegINF() { string expected = wrapXML(""); Parameter p = new Parameter( "p", util_NegInf() ); p.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Parameter() { D.setLevelAndVersion(1,2); string expected = wrapXML("" ); Parameter p = new Parameter( "Km1",2.3, "second" ); p.setSBMLDocument(D); p.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_ParameterRule() { D.setLevelAndVersion(1,1); string expected = wrapXML(""); D.createModel(); D.getModel().createParameter().setId("p"); Rule r = D.getModel().createRateRule(); r.setVariable("p"); r.setFormula("p * t"); r.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_ParameterRule_L2v1() { D.setLevelAndVersion(2,1); string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " p \n" + " t \n" + " \n" + " \n" + ""); D.createModel(); D.getModel().createParameter().setId("p"); Rule r = D.getModel().createRateRule(); r.setVariable("p"); r.setFormula("p * t"); r.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_ParameterRule_L2v2() { D.setLevelAndVersion(2,2); string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " p \n" + " t \n" + " \n" + " \n" + ""); D.createModel(); D.getModel().createParameter().setId("p"); Rule r = D.getModel().createRateRule(); r.setVariable("p"); r.setFormula("p * t"); r.setSBOTerm(7); r.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_ParameterRule_defaults() { D.setLevelAndVersion(1,1); string expected = wrapXML("" ); D.createModel(); D.getModel().createParameter().setId("p"); Rule r = D.getModel().createAssignmentRule(); r.setVariable("p"); r.setFormula("p * t"); r.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Parameter_L1v1_required() { D.setLevelAndVersion(1,1); string expected = wrapXML("" ); Parameter p = new Parameter(); p.setId("Km1"); p.unsetValue(); p.setSBMLDocument(D); p.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Parameter_L1v2_skipOptional() { D.setLevelAndVersion(1,2); string expected = wrapXML(""); Parameter p = new Parameter(); p.setId("Km1"); p.unsetValue(); p.setSBMLDocument(D); p.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Parameter_L2v1() { D.setLevelAndVersion(2,1); string expected = wrapXML("" ); Parameter p = new Parameter( "Km1",2.3, "second" ); p.setSBMLDocument(D); p.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Parameter_L2v1_constant() { D.setLevelAndVersion(2,1); string expected = wrapXML(""); Parameter p = new Parameter( "x" ); p.setConstant(false); p.setSBMLDocument(D); p.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Parameter_L2v1_skipOptional() { D.setLevelAndVersion(2,1); string expected = wrapXML(""); Parameter p = new Parameter( "Km1" ); p.setSBMLDocument(D); p.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Parameter_L2v2() { D.setLevelAndVersion(2,2); string expected = wrapXML("" ); Parameter p = new Parameter( "Km1",2.3, "second" ); p.setSBOTerm(2); p.setSBMLDocument(D); p.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Reaction() { D.setLevelAndVersion(1,2); string expected = wrapXML("" ); Reaction r = new Reaction( "r", "",null,false ); r.setFast(true); r.setSBMLDocument(D); r.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Reaction_L2v1() { D.setLevelAndVersion(2,1); string expected = wrapXML("" ); Reaction r = new Reaction( "r", "",null,false ); r.setSBMLDocument(D); r.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Reaction_L2v1_full() { D.setLevelAndVersion(2,1); string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " vm \n" + " s1 \n" + " \n" + " \n" + " \n" + " km \n" + " s1 \n" + " \n" + " \n" + " \n" + " \n" + ""); D.createModel(); Reaction r = D.getModel().createReaction(); r.setId("v1"); r.setReversible(true); r.createReactant().setSpecies("x0"); r.createProduct().setSpecies("s1"); r.createModifier().setSpecies("m1"); r.createKineticLaw().setFormula("(vm * s1)/(km + s1)"); r.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Reaction_L2v2() { D.setLevelAndVersion(2,2); string expected = wrapXML("" ); Reaction r = new Reaction( "r", "r1",null,false ); r.setFast(true); r.setSBOTerm(64); r.setSBMLDocument(D); r.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Reaction_defaults() { D.setLevelAndVersion(1,2); string expected = wrapXML(""); Reaction r = new Reaction(); r.setId("r"); r.setSBMLDocument(D); r.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Reaction_full() { D.setLevelAndVersion(1,2); string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""); D.createModel(); Reaction r = D.getModel().createReaction(); r.setId("v1"); r.setReversible(true); r.createReactant().setSpecies("x0"); r.createProduct().setSpecies("s1"); r.createKineticLaw().setFormula("(vm * s1)/(km + s1)"); r.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_SBMLDocument_L1v1() { D.setLevelAndVersion(1,1); string expected = wrapXML("\n"); S = libsbml.writeSBMLToString(D); assertEquals( true, equals(expected,S) ); } public void test_WriteSBML_SBMLDocument_L1v2() { D.setLevelAndVersion(1,2); string expected = wrapXML("\n"); S = libsbml.writeSBMLToString(D); assertEquals( true, equals(expected,S) ); } public void test_WriteSBML_SBMLDocument_L2v1() { D.setLevelAndVersion(2,1); string expected = wrapXML("\n"); S = libsbml.writeSBMLToString(D); assertEquals( true, equals(expected,S) ); } public void test_WriteSBML_SBMLDocument_L2v2() { D.setLevelAndVersion(2,2); string expected = wrapXML("\n"); S = libsbml.writeSBMLToString(D); assertEquals( true, equals(expected,S) ); } public void test_WriteSBML_Species() { D.setLevelAndVersion(1,2); string expected = wrapXML(""); Species s = new Species( "Ca2" ); s.setCompartment("cell"); s.setInitialAmount(0.7); s.setUnits("mole"); s.setBoundaryCondition(true); s.setCharge(2); s.setSBMLDocument(D); s.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_SpeciesConcentrationRule() { D.setLevelAndVersion(1,2); string expected = wrapXML(""); D.createModel(); D.getModel().createSpecies().setId("s"); Rule r = D.getModel().createRateRule(); r.setVariable("s"); r.setFormula("t * s"); r.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_SpeciesConcentrationRule_L1v1() { D.setLevelAndVersion(1,1); string expected = wrapXML("" ); D.createModel(); D.getModel().createSpecies().setId("s"); Rule r = D.getModel().createAssignmentRule(); r.setVariable("s"); r.setFormula("t * s"); r.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_SpeciesConcentrationRule_L2v1() { D.setLevelAndVersion(2,1); string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " t \n" + " s \n" + " \n" + " \n" + ""); D.createModel(); D.getModel().createSpecies().setId("s"); Rule r = D.getModel().createAssignmentRule(); r.setVariable("s"); r.setFormula("t * s"); r.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_SpeciesConcentrationRule_L2v2() { D.setLevelAndVersion(2,2); string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " t \n" + " s \n" + " \n" + " \n" + ""); D.createModel(); D.getModel().createSpecies().setId("s"); Rule r = D.getModel().createAssignmentRule(); r.setVariable("s"); r.setFormula("t * s"); r.setSBOTerm(6); r.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_SpeciesConcentrationRule_defaults() { D.setLevelAndVersion(1,2); string expected = wrapXML("" ); D.createModel(); D.getModel().createSpecies().setId("s"); Rule r = D.getModel().createAssignmentRule(); r.setVariable("s"); r.setFormula("t * s"); r.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_SpeciesReference() { D.setLevelAndVersion(1,2); string expected = wrapXML("" ); SpeciesReference sr = new SpeciesReference( "s",3,2 ); sr.setSBMLDocument(D); sr.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_SpeciesReference_L1v1() { D.setLevelAndVersion(1,1); string expected = wrapXML("" ); SpeciesReference sr = new SpeciesReference( "s",3,2 ); sr.setSBMLDocument(D); sr.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_SpeciesReference_L2v1_1() { D.setLevelAndVersion(2,1); string expected = wrapXML("\n" + " \n" + " \n" + " 3 2 \n" + " \n" + " \n" + ""); SpeciesReference sr = new SpeciesReference( "s",3,2 ); sr.setSBMLDocument(D); sr.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_SpeciesReference_L2v1_2() { D.setLevelAndVersion(2,1); string expected = wrapXML("" ); SpeciesReference sr = new SpeciesReference( "s",3.2 ); sr.setSBMLDocument(D); sr.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_SpeciesReference_L2v1_3() { D.setLevelAndVersion(2,1); string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " \n" + " 1 \n" + " d \n" + " \n" + " \n" + " \n" + ""); SpeciesReference sr = new SpeciesReference( "s" ); ASTNode math = libsbml.parseFormula("1/d"); StoichiometryMath stoich = new StoichiometryMath(); stoich.setMath(math); sr.setStoichiometryMath(stoich); sr.setSBMLDocument(D); sr.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_SpeciesReference_L2v2_1() { D.setLevelAndVersion(2,2); string expected = wrapXML("\n" + " \n" + " \n" + " 3 2 \n" + " \n" + " \n" + ""); SpeciesReference sr = new SpeciesReference( "s",3,2 ); sr.setId("ss"); sr.setName("odd"); sr.setSBOTerm(9); sr.setSBMLDocument(D); sr.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_SpeciesReference_L2v3_1() { D.setLevelAndVersion(2,3); string expected = wrapXML("" ); SpeciesReference sr = new SpeciesReference( "s",3.2 ); sr.setId("ss"); sr.setName("odd"); sr.setSBOTerm(9); sr.setSBMLDocument(D); sr.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_SpeciesReference_defaults() { D.setLevelAndVersion(1,2); string expected = wrapXML(""); SpeciesReference sr = new SpeciesReference( "s" ); sr.setSBMLDocument(D); sr.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_SpeciesType() { D.setLevelAndVersion(2,2); string expected = wrapXML(""); SpeciesType st = new SpeciesType(); st.setId("st"); st.setSBOTerm(4); st.setSBMLDocument(D); st.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_SpeciesType_withSBO() { D.setLevelAndVersion(2,3); string expected = wrapXML(""); SpeciesType st = new SpeciesType(); st.setId("st"); st.setSBOTerm(4); st.setSBMLDocument(D); st.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Species_L1v1() { D.setLevelAndVersion(1,1); string expected = wrapXML(""); Species s = new Species( "Ca2" ); s.setCompartment("cell"); s.setInitialAmount(0.7); s.setUnits("mole"); s.setBoundaryCondition(true); s.setCharge(2); s.setSBMLDocument(D); s.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Species_L2v1() { D.setLevelAndVersion(2,1); string expected = wrapXML(""); Species s = new Species( "Ca2" ); s.setCompartment("cell"); s.setInitialAmount(0.7); s.setSubstanceUnits("mole"); s.setConstant(true); s.setSBMLDocument(D); s.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Species_L2v1_skipOptional() { D.setLevelAndVersion(2,1); string expected = wrapXML("" ); Species s = new Species( "Ca2" ); s.setCompartment("cell"); s.setSBMLDocument(D); s.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Species_L2v2() { D.setLevelAndVersion(2,2); string expected = wrapXML(""); Species s = new Species( "Ca2" ); s.setCompartment("cell"); s.setInitialAmount(0.7); s.setSubstanceUnits("mole"); s.setConstant(true); s.setSpeciesType("st"); s.setSBMLDocument(D); s.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Species_L2v3() { D.setLevelAndVersion(2,3); string expected = wrapXML("" ); Species s = new Species( "Ca2" ); s.setCompartment("cell"); s.setSBOTerm(7); s.setSBMLDocument(D); s.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Species_defaults() { D.setLevelAndVersion(1,2); string expected = wrapXML(""); Species s = new Species( "Ca2" ); s.setCompartment("cell"); s.setInitialAmount(0.7); s.setUnits("mole"); s.setCharge(2); s.setSBMLDocument(D); s.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Species_skipOptional() { D.setLevelAndVersion(1,2); string expected = wrapXML("" ); Species s = new Species( "Ca2" ); s.setCompartment("cell"); s.setInitialAmount(0.7); s.setSBMLDocument(D); s.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_StoichiometryMath() { D.setLevelAndVersion(2,1); string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " 1 \n" + " d \n" + " \n" + " \n" + ""); ASTNode math = libsbml.parseFormula("1/d"); StoichiometryMath stoich = new StoichiometryMath(math); stoich.setSBMLDocument(D); stoich.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_StoichiometryMath_withSBO() { D.setLevelAndVersion(2,3); string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " 1 \n" + " d \n" + " \n" + " \n" + ""); ASTNode math = libsbml.parseFormula("1/d"); StoichiometryMath stoich = new StoichiometryMath(math); stoich.setSBOTerm(333); stoich.setSBMLDocument(D); stoich.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Unit() { D.setLevelAndVersion(2,1); string expected = wrapXML("" ); Unit u = new Unit( "kilogram",2,-3 ); u.setSBMLDocument(D); u.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_UnitDefinition() { D.setLevelAndVersion(1,2); string expected = wrapXML(""); UnitDefinition ud = new UnitDefinition( "mmls" ); ud.setSBMLDocument(D); ud.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_UnitDefinition_L2v1() { D.setLevelAndVersion(2,1); string expected = wrapXML(""); UnitDefinition ud = new UnitDefinition( "mmls" ); ud.setSBMLDocument(D); ud.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_UnitDefinition_L2v1_full() { D.setLevelAndVersion(2,1); string expected = wrapXML("\n" + " \n" + " \n" + " \n" + ""); Unit u1 = new Unit( "Celsius",1,0,1.8 ); u1.setOffset(32); UnitDefinition ud = new UnitDefinition( "Fahrenheit" ); ud.addUnit(u1); ud.setSBMLDocument(D); ud.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_UnitDefinition_full() { D.setLevelAndVersion(1,2); string expected = wrapXML("\n" + " \n" + " \n" + " \n" + " \n" + " \n" + ""); UnitDefinition ud = new UnitDefinition( "mmls" ); Unit u1 = new Unit( "mole" ,1,-3 ); Unit u2 = new Unit( "liter" ,-1 ); Unit u3 = new Unit( "second",-1 ); ud.addUnit(u1); ud.addUnit(u2); ud.addUnit(u3); ud.setSBMLDocument(D); ud.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Unit_L2v1() { D.setLevelAndVersion(2,1); string expected = wrapXML("" ); Unit u = new Unit( "Celsius",1,0,1.8 ); u.setOffset(32); u.setSBMLDocument(D); u.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Unit_defaults() { D.setLevelAndVersion(1,2); string expected = wrapXML(""); Unit u = new Unit( "kilogram",1,0 ); u.setSBMLDocument(D); u.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_Unit_l2v3() { D.setLevelAndVersion(2,3); string expected = wrapXML("" ); Unit u = new Unit( "kilogram",2,-3 ); u.setOffset(32); u.setSBMLDocument(D); u.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_bzip2() { uint filenum = 12; string[] file = { "../../../examples/sample-models/from-spec/level-2/algebraicrules.xml", "../../../examples/sample-models/from-spec/level-2/assignmentrules.xml", "../../../examples/sample-models/from-spec/level-2/boundarycondition.xml", "../../../examples/sample-models/from-spec/level-2/delay.xml", "../../../examples/sample-models/from-spec/level-2/dimerization.xml", "../../../examples/sample-models/from-spec/level-2/enzymekinetics.xml", "../../../examples/sample-models/from-spec/level-2/events.xml", "../../../examples/sample-models/from-spec/level-2/functiondef.xml", "../../../examples/sample-models/from-spec/level-2/multicomp.xml", "../../../examples/sample-models/from-spec/level-2/overdetermined.xml", "../../../examples/sample-models/from-spec/level-2/twodimensional.xml", "../../../examples/sample-models/from-spec/level-2/units.xml" }; string bzfile = "test.xml.bz2"; for(uint i = 0; i < filenum; i++) { SBMLDocument d = libsbml.readSBML(file[i]); assertTrue( d != null ); if (! SBMLWriter.hasBzip2()) { assertTrue( libsbml.writeSBML(d, bzfile) == 0 ); d = null; continue; } int result = libsbml.writeSBML(d, bzfile); assertTrue( result != 0); SBMLDocument dg = libsbml.readSBML(bzfile); assertTrue( dg != null ); assertTrue( ( dg.toSBML() != d.toSBML() ) == false ); d = null; dg = null; } } public void test_WriteSBML_error() { SBMLDocument d = new SBMLDocument(); SBMLWriter w = new SBMLWriter(); assertEquals( false, w.writeSBML(d, "/tmp/impossible/path/should/fail") ); assertTrue( d.getNumErrors() == 1 ); assertTrue( d.getError(0).getErrorId() == libsbml.XMLFileUnwritable ); d = null; w = null; } public void test_WriteSBML_gzip() { uint filenum = 12; string[] file = { "../../../examples/sample-models/from-spec/level-2/algebraicrules.xml", "../../../examples/sample-models/from-spec/level-2/assignmentrules.xml", "../../../examples/sample-models/from-spec/level-2/boundarycondition.xml", "../../../examples/sample-models/from-spec/level-2/delay.xml", "../../../examples/sample-models/from-spec/level-2/dimerization.xml", "../../../examples/sample-models/from-spec/level-2/enzymekinetics.xml", "../../../examples/sample-models/from-spec/level-2/events.xml", "../../../examples/sample-models/from-spec/level-2/functiondef.xml", "../../../examples/sample-models/from-spec/level-2/multicomp.xml", "../../../examples/sample-models/from-spec/level-2/overdetermined.xml", "../../../examples/sample-models/from-spec/level-2/twodimensional.xml", "../../../examples/sample-models/from-spec/level-2/units.xml" }; string gzfile = "test.xml.gz"; for(uint i = 0; i < filenum; i++) { SBMLDocument d = libsbml.readSBML(file[i]); assertTrue( d != null ); if (! SBMLWriter.hasZlib()) { assertTrue( libsbml.writeSBML(d, gzfile) == 0 ); d = null; continue; } int result = libsbml.writeSBML(d, gzfile); assertTrue( result != 0); SBMLDocument dg = libsbml.readSBML(gzfile); assertTrue( dg != null ); assertTrue( ( dg.toSBML() != d.toSBML() ) == false ); d = null; dg = null; } } public void test_WriteSBML_locale() { string expected = wrapXML(""); Parameter p = new Parameter("p",3.31); p.write(XOS); assertEquals( true, equals(expected) ); } public void test_WriteSBML_zip() { uint filenum = 12; string[] file = { "../../../examples/sample-models/from-spec/level-2/algebraicrules.xml", "../../../examples/sample-models/from-spec/level-2/assignmentrules.xml", "../../../examples/sample-models/from-spec/level-2/boundarycondition.xml", "../../../examples/sample-models/from-spec/level-2/delay.xml", "../../../examples/sample-models/from-spec/level-2/dimerization.xml", "../../../examples/sample-models/from-spec/level-2/enzymekinetics.xml", "../../../examples/sample-models/from-spec/level-2/events.xml", "../../../examples/sample-models/from-spec/level-2/functiondef.xml", "../../../examples/sample-models/from-spec/level-2/multicomp.xml", "../../../examples/sample-models/from-spec/level-2/overdetermined.xml", "../../../examples/sample-models/from-spec/level-2/twodimensional.xml", "../../../examples/sample-models/from-spec/level-2/units.xml" }; string zipfile = "test.xml.zip"; for(uint i = 0; i < filenum; i++) { SBMLDocument d = libsbml.readSBML(file[i]); assertTrue( d != null ); if (! SBMLWriter.hasZlib()) { assertTrue( libsbml.writeSBML(d, zipfile) == 0 ); d = null; continue; } int result = libsbml.writeSBML(d, zipfile); assertTrue( result != 0); SBMLDocument dg = libsbml.readSBML(zipfile); assertTrue( dg != null ); assertTrue( ( dg.toSBML() != d.toSBML() ) == false ); d = null; dg = null; } } } }