END_TEST START_TEST (test_SBMLDocument_setModel) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(2, 4); Model_t *m1 = Model_create(2, 4); Model_t *m2 = Model_create(2, 4); Model_t *mout; fail_unless(SBMLDocument_getModel(d) == NULL); int i = SBMLDocument_setModel(d, m1); fail_unless ( i == LIBSBML_OPERATION_SUCCESS ); mout = SBMLDocument_getModel(d); fail_unless(mout != NULL); fail_unless(mout != m1); /* Reflexive case (pathological) */ i = SBMLDocument_setModel(d, SBMLDocument_getModel(d)); fail_unless ( i == LIBSBML_OPERATION_SUCCESS ); mout = SBMLDocument_getModel(d); fail_unless(mout != NULL); fail_unless(mout != m1); i = SBMLDocument_setModel(d, m2); fail_unless ( i == LIBSBML_OPERATION_SUCCESS ); mout = SBMLDocument_getModel(d); fail_unless(mout != NULL); fail_unless(mout != m2); SBMLDocument_free(d); /* m1 is freed by SBMLDocument_setModel(d, m2); */ }
END_TEST START_TEST (test_SBMLConvertStrict_convertSBO) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(2, 4); Model_t * m = SBMLDocument_createModel(d); /* create a compartment with SBO */ Compartment_t * c = Model_createCompartment(m); Compartment_setId(c, "c"); SBase_setSBOTerm((SBase_t *) (c), 240); fail_unless( SBMLDocument_setLevelAndVersionStrict(d, 2, 3) == 1 ); fail_unless( SBMLDocument_getLevel (d) == 2, NULL ); fail_unless( SBMLDocument_getVersion(d) == 3, NULL ); fail_unless( SBMLDocument_setLevelAndVersionStrict(d, 2, 2) == 1 ); fail_unless( SBMLDocument_getLevel (d) == 2, NULL ); fail_unless( SBMLDocument_getVersion(d) == 2, NULL ); /* check that sbo term has been removed */ Compartment_t *c1 = Model_getCompartment(SBMLDocument_getModel(d), 0); fail_unless (SBase_getSBOTerm((SBase_t *) (c1)) == -1, NULL ); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLConvert_convertFromL3) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(3, 1); Model_t *m = SBMLDocument_createModel(d); const char *sid = "C"; Compartment_t *c = Model_createCompartment(m); Compartment_setId ( c, sid ); Compartment_setSize ( c, 1.2 ); Compartment_setConstant( c, 1); Compartment_setSpatialDimensionsAsDouble(c, 3.4); fail_unless(SBMLDocument_setLevelAndVersion(d, 1, 1) == 0); fail_unless(SBMLDocument_setLevelAndVersion(d, 1, 2) == 0); fail_unless(SBMLDocument_setLevelAndVersion(d, 2, 1) == 0); fail_unless(SBMLDocument_setLevelAndVersion(d, 2, 2) == 0); fail_unless(SBMLDocument_setLevelAndVersion(d, 2, 3) == 0); fail_unless(SBMLDocument_setLevelAndVersion(d, 2, 4) == 0); fail_unless(SBMLDocument_setLevelAndVersion(d, 3, 1) == 1); }
END_TEST START_TEST (test_SBMLConvert_convertToL2v4_DuplicateAnnotations_model) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(2, 1); Model_t * m = SBMLDocument_createModel(d); char * annotation = "<rdf/>\n<rdf/>"; int i = SBase_setAnnotationString((SBase_t *) (m), annotation); fail_unless( SBMLDocument_getLevel (d) == 2, NULL ); fail_unless( SBMLDocument_getVersion(d) == 1, NULL ); fail_unless( XMLNode_getNumChildren(SBase_getAnnotation((SBase_t *) (m))) == 2); fail_unless( SBMLDocument_setLevelAndVersion(d, 2, 4) == 1, NULL ); fail_unless( SBMLDocument_getLevel (d) == 2, NULL ); fail_unless( SBMLDocument_getVersion(d) == 4, NULL ); m = SBMLDocument_getModel(d); fail_unless( XMLNode_getNumChildren(SBase_getAnnotation((SBase_t *) (m))) == 1); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLConvert_convertToL1_Species_Amount) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(2, 4); Model_t *m = SBMLDocument_createModel(d); const char *sid = "C"; Compartment_t *c = Compartment_create(2, 4); Species_t *s = Species_create(2, 4); Compartment_setId ( c, sid ); Model_addCompartment( m, c ); Species_setCompartment ( s, sid ); Species_setInitialAmount( s, 2.34 ); Model_addSpecies ( m, s ); fail_unless( SBMLDocument_setLevelAndVersion(d, 1, 2) == 1, NULL ); fail_unless( Species_getInitialAmount(s) == 2.34, NULL ); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLConvert_addModifiersToReaction) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(1, 2); Model_t *m = SBMLDocument_createModel(d); Reaction_t *r = Model_createReaction(m); KineticLaw_t *kl = Reaction_createKineticLaw(r); KineticLaw_setFormula(kl, "k1*S1*S2*S3*S4*S5"); SpeciesReference_t *ssr1; SpeciesReference_t *ssr2; Species_t *s1 = Model_createSpecies( m ); Species_setId( s1, "S1" ); Species_t *s2 = Model_createSpecies( m ); Species_setId( s2, "S2"); Species_t *s3 = Model_createSpecies( m ); Species_setId( s3, "S3"); Species_t *s4 = Model_createSpecies( m ); Species_setId( s4, "S4"); Species_t *s5 = Model_createSpecies( m ); Species_setId( s5, "S5"); SpeciesReference_t *sr1 = Reaction_createReactant( r ); SpeciesReference_t *sr2 = Reaction_createReactant( r ); SpeciesReference_t *sr3 = Reaction_createProduct ( r ); SpeciesReference_setSpecies(sr1, "S1"); SpeciesReference_setSpecies(sr2, "S2"); SpeciesReference_setSpecies(sr3, "S5"); fail_unless( Reaction_getNumModifiers(r) == 0, NULL ); fail_unless( SBMLDocument_setLevelAndVersionNonStrict(d, 2, 1) == 1, NULL ); fail_unless( SBMLDocument_getLevel (d) == 2, NULL ); fail_unless( SBMLDocument_getVersion(d) == 1, NULL ); fail_unless( Reaction_getNumModifiers(Model_getReaction(m, 0)) == 2, NULL ); ssr1 = (SpeciesReference_t *) Reaction_getModifier(Model_getReaction(m, 0), 0); ssr2 = (SpeciesReference_t *) Reaction_getModifier(Model_getReaction(m, 0), 1); fail_unless( !strcmp(SpeciesReference_getSpecies(ssr1), "S3"), NULL ); fail_unless( !strcmp(SpeciesReference_getSpecies(ssr2), "S4"), NULL ); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLConvert_convertToL3_defaultUnits) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(1, 2); Model_t *m = SBMLDocument_createModel(d); const char *sid = "C"; Compartment_t *c = Model_createCompartment(m); Compartment_setId ( c, sid ); Compartment_setSize ( c, 1.2 ); Compartment_setUnits( c, "volume"); fail_unless(Model_getNumUnitDefinitions(m) == 0); fail_unless( SBMLDocument_setLevelAndVersion(d, 3, 1) == 1, NULL); fail_unless(Model_getNumUnitDefinitions(m) == 2); UnitDefinition_t *ud = Model_getUnitDefinition(m, 0); fail_unless (ud != NULL); fail_unless (!strcmp(UnitDefinition_getId( ud), "volume")); fail_unless(UnitDefinition_getNumUnits(ud) == 1); Unit_t * u = UnitDefinition_getUnit(ud, 0); fail_unless(Unit_getKind(u) == UNIT_KIND_LITRE); fail_unless(Unit_getExponent(u) == 1); fail_unless(Unit_getMultiplier(u) == 1); fail_unless(Unit_getScale(u) == 0); ud = Model_getUnitDefinition(m, 1); fail_unless (ud != NULL); fail_unless (!strcmp(UnitDefinition_getId( ud), "time")); fail_unless(UnitDefinition_getNumUnits(ud) == 1); u = UnitDefinition_getUnit(ud, 0); fail_unless(Unit_getKind(u) == UNIT_KIND_SECOND); fail_unless(Unit_getExponent(u) == 1); fail_unless(Unit_getMultiplier(u) == 1); fail_unless(Unit_getScale(u) == 0); fail_unless(!strcmp(Model_getTimeUnits(m), "time")); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLConvert_convertToL1_SBMLDocument) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(2, 1); fail_unless( SBMLDocument_setLevelAndVersionNonStrict(d, 1, 2) == 1, NULL); fail_unless( SBMLDocument_getLevel (d) == 1, NULL ); fail_unless( SBMLDocument_getVersion(d) == 2, NULL ); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLDocument_setModel2) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(2, 2); Model_t *m1 = Model_create(1, 2); int i = SBMLDocument_setModel(d, m1); fail_unless ( i == LIBSBML_LEVEL_MISMATCH); fail_unless (SBMLDocument_getModel(d) == 0); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLDocument_setModel3) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(2, 2); Model_t *m1 = Model_create(2, 2); int i = SBMLDocument_setModel(d, m1); fail_unless ( i == LIBSBML_OPERATION_SUCCESS); fail_unless (SBMLDocument_getModel(d) != 0); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLConvertStrict_convertNonStrictSBO) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(2, 4); Model_t * m = SBMLDocument_createModel(d); /* create a compartment with SBO */ Compartment_t * c = Model_createCompartment(m); Compartment_setId(c, "c"); Compartment_setConstant(c, 0); SBase_setSBOTerm((SBase_t *) (c), 64); /* conversion to L2V3 and L2V2 should fail due to bad SBO * but to L2V1 and L1 should pass as sbo terms not applicable */ fail_unless( SBMLDocument_setLevelAndVersionStrict(d, 2, 3) == 0 ); fail_unless( SBMLDocument_getLevel (d) == 2, NULL ); fail_unless( SBMLDocument_getVersion(d) == 4, NULL ); fail_unless( SBMLDocument_setLevelAndVersionStrict(d, 2, 2) == 0 ); fail_unless( SBMLDocument_getLevel (d) == 2, NULL ); fail_unless( SBMLDocument_getVersion(d) == 4, NULL ); fail_unless( SBMLDocument_setLevelAndVersionStrict(d, 2, 1) == 1 ); fail_unless( SBMLDocument_getLevel (d) == 2, NULL ); fail_unless( SBMLDocument_getVersion(d) == 1, NULL ); /* check that sbo term has been removed */ Compartment_t *c1 = Model_getCompartment(SBMLDocument_getModel(d), 0); fail_unless (SBase_getSBOTerm((SBase_t *) (c1)) == -1, NULL ); fail_unless( SBMLDocument_setLevelAndVersionStrict(d, 1, 2) == 1 ); fail_unless( SBMLDocument_getLevel (d) == 1, NULL ); fail_unless( SBMLDocument_getVersion(d) == 2, NULL ); /* check that sbo term has been removed */ Compartment_t *c2 = Model_getCompartment(SBMLDocument_getModel(d), 0); fail_unless (SBase_getSBOTerm((SBase_t *) (c2)) == -1, NULL ); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLConvert_convertToL3_event) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(2, 2); Model_t *m = SBMLDocument_createModel(d); Event_t *e = Model_createEvent(m); Event_t *e1; fail_unless( SBMLDocument_setLevelAndVersionNonStrict(d, 3, 1) == 1, NULL); e1 = Model_getEvent(m, 0); fail_unless(Event_hasRequiredAttributes(e1) == 1); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLDocument_setLevelAndVersion) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(2, 2); Model_t *m1 = Model_create(2, 2); SBMLDocument_setModel(d, m1); fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d,2,3) == 1); fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d,2,1) == 1); fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d,1,2) == 1); fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d,1,1) == 0); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLDocument_createWith) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(1, 2); fail_unless( SBase_getTypeCode ((SBase_t *) d) == SBML_DOCUMENT ); fail_unless( SBase_getNotes ((SBase_t *) d) == NULL ); fail_unless( SBase_getAnnotation((SBase_t *) d) == NULL ); fail_unless( SBMLDocument_getLevel (d) == 1); fail_unless( SBMLDocument_getVersion(d) == 2); fail_unless( SBMLDocument_getNumErrors (d) == 0 ); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLConvert_convertToL1_Species_Concentration) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(2, 1); Model_t *m = SBMLDocument_createModel(d); const char *sid = "C"; Compartment_t *c = Compartment_create(2, 1); Species_t *s = Species_create(2, 1); Compartment_setId ( c, sid ); Compartment_setSize ( c, 1.2 ); Model_addCompartment( m, c ); Species_setId ( s, "s" ); Species_setCompartment ( s, sid ); Species_setInitialConcentration( s, 2.34 ); Model_addSpecies ( m, s ); fail_unless( SBMLDocument_setLevelAndVersion(d, 1, 2) == 1, NULL); /** * These tests will fail under Cygwin because of a minimal * setlocale() implementation (see setlocale manpage). */ #ifndef CYGWIN fail_unless( Species_getInitialAmount(Model_getSpecies(m, 0)) == 2.808, NULL ); #endif Species_t * s1 = Model_getSpecies(m, 0); fail_unless (s1 != NULL); fail_unless (!strcmp(Species_getCompartment(s1), "C")); fail_unless(Compartment_getSize(Model_getCompartmentById(m, "C")) == 1.2); fail_unless(Species_getInitialConcentration(s1) == 2.34); fail_unless(Species_isSetInitialConcentration(s1) == 1); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLConvert_convertFromL3_priority) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(3, 1); Model_t *m = SBMLDocument_createModel(d); Event_t * e = Model_createEvent(m); Priority_t * p = Event_createPriority(e); fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d, 1, 1) == 0); fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d, 1, 2) == 0); fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d, 2, 1) == 1); fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d, 2, 2) == 1); fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d, 2, 3) == 1); fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d, 2, 4) == 1); fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d, 3, 1) == 1); }
END_TEST START_TEST (test_SBMLConvert_convertToL3_reaction) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(2, 2); Model_t *m = SBMLDocument_createModel(d); const char *sid = "C"; Reaction_t *r = Model_createReaction(m); Reaction_setId ( r, sid ); fail_unless( SBMLDocument_setLevelAndVersionNonStrict(d, 3, 1) == 1, NULL); Reaction_t *r1 = Model_getReaction(m, 0); fail_unless(Reaction_hasRequiredAttributes(r1) == 1); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLConvert_convertToL3_stoichiometryMath) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(2, 1); Model_t *m = SBMLDocument_createModel(d); Compartment_t *c = Model_createCompartment(m); Compartment_setId ( c, "c" ); Species_t *s = Model_createSpecies(m); Species_setId(s, "s"); Species_setCompartment(s, "c"); Reaction_t * r = Model_createReaction(m); SpeciesReference_t *sr = Reaction_createReactant(r); SpeciesReference_setSpecies(sr, "s"); StoichiometryMath_t *sm = SpeciesReference_createStoichiometryMath(sr); ASTNode_t * ast = SBML_parseFormula("c*2"); StoichiometryMath_setMath(sm, ast); fail_unless(Model_getNumRules(m) == 0); fail_unless(SpeciesReference_isSetId(sr) == 0); fail_unless( SBMLDocument_setLevelAndVersionNonStrict(d, 3, 1) == 1); m = SBMLDocument_getModel(d); r = Model_getReaction(m, 0); sr = Reaction_getReactant(r, 0); fail_unless(Model_getNumRules(m) == 1); fail_unless(SpeciesReference_isSetId(sr) == 1); Rule_t *rule = Model_getRule(m, 0); fail_unless( strcmp(SpeciesReference_getId(sr), Rule_getVariable(rule)) == 0 ); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLConvertStrict_convertToL1) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(2, 4); /* create model with metaid */ Model_t * m = SBMLDocument_createModel(d); SBase_setMetaId((SBase_t *) (m), "_m"); /* create a compartment with sbo*/ Compartment_t * c = Model_createCompartment(m); Compartment_setId(c, "c"); SBase_setSBOTerm((SBase_t *) (c), 240); /* create a species with hasOnlySubstanceUnits = true*/ Species_t *s = Model_createSpecies(m); Species_setId(s, "s"); Species_setCompartment(s, "c"); Species_setHasOnlySubstanceUnits(s, 1); fail_unless( SBMLDocument_setLevelAndVersionStrict(d, 1, 2) == 1 ); fail_unless( SBMLDocument_getLevel (d) == 1, NULL ); fail_unless( SBMLDocument_getVersion(d) == 2, NULL ); ///* check that attributes that are no longer valid have been removed */ Model_t * m1 = SBMLDocument_getModel(d); fail_unless (SBase_getMetaId((SBase_t *) (m1)) == NULL); Compartment_t *c1 = Model_getCompartment(m1, 0); fail_unless (SBase_getSBOTerm((SBase_t *) (c1)) == -1, NULL ); Species_t *s1 = Model_getSpecies(m1, 0); fail_unless (Species_getHasOnlySubstanceUnits(s1) == 0); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLConvert_invalidLevelVersion) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(2, 1); Model_t *m = SBMLDocument_createModel(d); const char *sid = "C"; Compartment_t *c = Model_createCompartment(m); Compartment_setId ( c, sid ); Compartment_setSize ( c, 1.2 ); Compartment_setUnits( c, "volume"); fail_unless(SBMLDocument_setLevelAndVersion(d, 1, 3) == 0); fail_unless(SBMLDocument_setLevelAndVersion(d, 2, 5) == 0); fail_unless(SBMLDocument_setLevelAndVersion(d, 3, 2) == 0); fail_unless(SBMLDocument_setLevelAndVersion(d, 4, 1) == 0); }
END_TEST START_TEST (test_SBMLConvert_convertFromL3_initialValue) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(3, 1); Model_t *m = SBMLDocument_createModel(d); Event_t * e = Model_createEvent(m); Trigger_t * t = Event_createTrigger(e); Trigger_setInitialValue(t, 0); fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d, 1, 1) == 0); fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d, 1, 2) == 0); fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d, 2, 1) == 0); fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d, 2, 2) == 0); fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d, 2, 3) == 0); fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d, 2, 4) == 0); fail_unless(SBMLDocument_setLevelAndVersionNonStrict(d, 3, 1) == 1); }
END_TEST START_TEST (test_SBMLConvert_convertToL3_trigger) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(2, 2); Model_t *m = SBMLDocument_createModel(d); Event_t *e = Model_createEvent(m); Trigger_t *t = Event_createTrigger(e); Trigger_t *t1; fail_unless( SBMLDocument_setLevelAndVersionNonStrict(d, 3, 1) == 1, NULL); t1 = Event_getTrigger(Model_getEvent(m, 0)); fail_unless(Trigger_hasRequiredAttributes(t1) == 1); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLConvert_convertToL3_localParameters) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(1, 2); Model_t *m = SBMLDocument_createModel(d); Compartment_t *c = Model_createCompartment(m); Compartment_setId ( c, "c" ); Species_t *s = Model_createSpecies(m); Species_setId(s, "s"); Species_setCompartment(s, "c"); Reaction_t * r = Model_createReaction(m); SpeciesReference_t *sr = Reaction_createReactant(r); SpeciesReference_setSpecies(sr, "s"); KineticLaw_t *kl = Reaction_createKineticLaw(r); KineticLaw_setFormula(kl, "s*k"); Parameter_t *p = KineticLaw_createParameter(kl); Parameter_setId(p, "k"); fail_unless(KineticLaw_getNumLocalParameters(kl) == 0); fail_unless( SBMLDocument_setLevelAndVersionNonStrict(d, 3, 1) == 1 ); m = SBMLDocument_getModel(d); r = Model_getReaction(m,0); kl = Reaction_getKineticLaw(r); fail_unless(KineticLaw_getNumLocalParameters(kl) == 1); LocalParameter_t *lp = KineticLaw_getLocalParameter(kl, 0); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLConvert_convertToL3_parameter) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(2, 2); Model_t *m = SBMLDocument_createModel(d); const char *sid = "C"; Parameter_t *p = Model_createParameter(m); Parameter_t *p1; Parameter_setId ( p, sid ); fail_unless( SBMLDocument_setLevelAndVersionNonStrict(d, 3, 1) == 1, NULL); p1 = Model_getParameter(m, 0); fail_unless(Parameter_hasRequiredAttributes(p1) == 1); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLConvert_convertToL3_unit) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(2, 2); Model_t *m = SBMLDocument_createModel(d); const char *sid = "C"; UnitDefinition_t *ud = Model_createUnitDefinition(m); UnitDefinition_setId ( ud, sid ); Unit_t *u = UnitDefinition_createUnit(ud); Unit_setKind(u, UNIT_KIND_MOLE); fail_unless( SBMLDocument_setLevelAndVersionNonStrict(d, 3, 1) == 1, NULL); Unit_t *u1 = UnitDefinition_getUnit(Model_getUnitDefinition(m, 0), 0); fail_unless(Unit_hasRequiredAttributes(u1) == 1); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLConvert_convertToL3_product) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(2, 2); Model_t *m = SBMLDocument_createModel(d); Reaction_t *r = Model_createReaction(m); SpeciesReference_t *sr = Reaction_createProduct(r); SpeciesReference_t *sr1; SpeciesReference_setSpecies ( sr, "s" ); fail_unless( SBMLDocument_setLevelAndVersionNonStrict(d, 3, 1) == 1, NULL); sr1 = Reaction_getProduct(Model_getReaction(m, 0), 0); fail_unless(SpeciesReference_hasRequiredAttributes(sr1) == 1); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLConvert_convertToL3_compartment) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(2, 2); Model_t *m = SBMLDocument_createModel(d); const char *sid = "C"; Compartment_t *c = Model_createCompartment(m); Compartment_t *c1; Compartment_setId ( c, sid ); fail_unless( SBMLDocument_setLevelAndVersionNonStrict(d, 3, 1) == 1, NULL); c1 = Model_getCompartment(m, 0); fail_unless(Compartment_hasRequiredAttributes(c1) == 1); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLConvert_convertToL3_species) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(2, 2); Model_t *m = SBMLDocument_createModel(d); const char *sid = "C"; Species_t *s = Model_createSpecies(m); Species_t *s1; Species_setId ( s, sid ); Species_setCompartment( s, "comp"); fail_unless( SBMLDocument_setLevelAndVersionNonStrict(d, 3, 1) == 1, NULL); s1 = Model_getSpecies(m, 0); fail_unless(Species_hasRequiredAttributes(s1) == 1); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLConvertStrict_convertL1ParamRule) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(1, 2); Model_t * m = SBMLDocument_createModel(d); /* create a compartment */ Compartment_t * c = Model_createCompartment(m); Compartment_setId(c, "c"); /* create a parameter */ Parameter_t * p = Model_createParameter(m); Parameter_setId(p, "p"); Parameter_t * p1 = Model_createParameter(m); Parameter_setId(p1, "p1"); /* create a math element */ ASTNode_t *math = SBML_parseFormula("p"); /* create an assignment rule */ Rule_t *ar = Model_createAssignmentRule(m); Rule_setVariable(ar, "p1"); Rule_setMath(ar, math); Rule_setUnits(ar, "mole"); fail_unless( SBMLDocument_setLevelAndVersionStrict(d, 2, 1) == 1 ); fail_unless( SBMLDocument_getLevel (d) == 2, NULL ); fail_unless( SBMLDocument_getVersion(d) == 1, NULL ); Rule_t * r1 = Model_getRule(SBMLDocument_getModel(d), 0); fail_unless (Rule_getUnits(r1) == NULL ); SBMLDocument_free(d); }
END_TEST START_TEST (test_SBMLConvert_convertFromL3_conversionFactor) { SBMLDocument_t *d = SBMLDocument_createWithLevelAndVersion(3, 1); Model_t *m = SBMLDocument_createModel(d); const char *sid = "P"; Model_setConversionFactor(m, sid); Parameter_t *c = Model_createParameter(m); Parameter_setId ( c, sid ); Parameter_setConstant( c, 1); fail_unless(SBMLDocument_setLevelAndVersion(d, 1, 1) == 0); fail_unless(SBMLDocument_setLevelAndVersion(d, 1, 2) == 0); fail_unless(SBMLDocument_setLevelAndVersion(d, 2, 1) == 0); fail_unless(SBMLDocument_setLevelAndVersion(d, 2, 2) == 0); fail_unless(SBMLDocument_setLevelAndVersion(d, 2, 3) == 0); fail_unless(SBMLDocument_setLevelAndVersion(d, 2, 4) == 0); fail_unless(SBMLDocument_setLevelAndVersion(d, 3, 1) == 1); }