END_TEST START_TEST (test_UnitDefinition_isVariantOfVolume_2) { Unit_t *dim = Unit_create(2, 4); Unit_setKind( dim , UnitKind_forName("dimensionless") ); Unit_t *u = UnitDefinition_createUnit(UD); fail_unless( !UnitDefinition_isVariantOfVolume(UD) ); Unit_setKind(u, UNIT_KIND_METRE); Unit_setExponent(u, 3); fail_unless( UnitDefinition_isVariantOfVolume(UD) ); Unit_setScale(u, 100); fail_unless( UnitDefinition_isVariantOfVolume(UD) ); Unit_setMultiplier(u, 5); fail_unless( UnitDefinition_isVariantOfVolume(UD) ); Unit_setOffset(u, -5); fail_unless( UnitDefinition_isVariantOfVolume(UD) ); Unit_setExponent(u, 2); fail_unless( !UnitDefinition_isVariantOfVolume(UD) ); Unit_setExponent(u, 3); UnitDefinition_addUnit( UD, dim ); fail_unless( UnitDefinition_isVariantOfVolume(UD) ); }
END_TEST START_TEST (test_UnitDefinition_isVariantOfTime) { Unit_t *dim = Unit_create(2, 4); Unit_setKind( dim , UnitKind_forName("dimensionless") ); Unit_t *u = UnitDefinition_createUnit(UD); fail_unless( !UnitDefinition_isVariantOfTime(UD) ); Unit_setKind(u, UNIT_KIND_SECOND); Unit_setExponent(u, 1); fail_unless( UnitDefinition_isVariantOfTime(UD) ); Unit_setScale(u, -10); fail_unless( UnitDefinition_isVariantOfTime(UD) ); Unit_setMultiplier(u, 10); fail_unless( UnitDefinition_isVariantOfTime(UD) ); Unit_setOffset(u, 30); fail_unless( UnitDefinition_isVariantOfTime(UD) ); Unit_setExponent(u, 2); fail_unless( !UnitDefinition_isVariantOfTime(UD) ); Unit_setExponent(u, 1); UnitDefinition_addUnit( UD, dim ); fail_unless( UnitDefinition_isVariantOfTime(UD) ); Unit_free(dim); }
END_TEST START_TEST (test_L3_Unit_hasRequiredAttributes ) { Unit_t *u = Unit_create (3, 1); fail_unless ( !Unit_hasRequiredAttributes(u)); Unit_setKind(u, UNIT_KIND_MOLE); fail_unless ( !Unit_hasRequiredAttributes(u)); Unit_setExponentAsDouble(u, 0); fail_unless ( !Unit_hasRequiredAttributes(u)); Unit_setMultiplier(u, 0.45); fail_unless ( !Unit_hasRequiredAttributes(u)); Unit_setScale(u, 2); fail_unless ( Unit_hasRequiredAttributes(u)); Unit_free(u); }
END_TEST START_TEST (test_SBMLDocument_setLevelAndVersion_Error) { SBMLDocument_t *d = SBMLDocument_create(); SBMLDocument_setLevelAndVersion(d, 2, 1); Model_t *m1 = Model_create(2, 1); /* add unitDefinition */ Unit_t * u = Unit_create(2, 1); Unit_setKind(u, UnitKind_forName("mole")); Unit_setOffset(u, 3.2); UnitDefinition_t *ud = UnitDefinition_create(2, 1); UnitDefinition_setId(ud, "ud"); UnitDefinition_addUnit(ud, u); Model_addUnitDefinition(m1, ud); SBMLDocument_setModel(d, m1); fail_unless(SBMLDocument_setLevelAndVersionStrict(d,2,2) == 0); fail_unless(SBMLDocument_setLevelAndVersionStrict(d,2,3) == 0); fail_unless(SBMLDocument_setLevelAndVersionStrict(d,1,2) == 0); fail_unless(SBMLDocument_setLevelAndVersionStrict(d,1,1) == 0); SBMLDocument_free(d); }
END_TEST START_TEST (test_UnitDefinition_isVariantOfSubstancePerTime_3) { UnitDefinition_t *ud = UnitDefinition_create(2, 2); Unit_t *dim = Unit_create(2, 2); Unit_setKind( dim , UnitKind_forName("dimensionless") ); Unit_t *perTime = UnitDefinition_createUnit(ud); Unit_setKind( perTime , UnitKind_forName("second") ); Unit_setExponent( perTime, -1); Unit_t *u = UnitDefinition_createUnit(ud); fail_unless( !UnitDefinition_isVariantOfSubstancePerTime(ud) ); Unit_setKind(u, UNIT_KIND_GRAM); Unit_setExponent(u, 1); fail_unless( UnitDefinition_isVariantOfSubstancePerTime(ud) ); Unit_setScale(u, -1); Unit_setScale(perTime, -1); fail_unless( UnitDefinition_isVariantOfSubstancePerTime(ud) ); Unit_setMultiplier(u, 2); fail_unless( UnitDefinition_isVariantOfSubstancePerTime(ud) ); Unit_setOffset(u, 3); fail_unless( UnitDefinition_isVariantOfSubstancePerTime(ud) ); Unit_setExponent(u, -3); fail_unless( !UnitDefinition_isVariantOfSubstancePerTime(ud) ); Unit_setExponent(u, 1); Unit_setExponent(perTime, -3); fail_unless( !UnitDefinition_isVariantOfSubstancePerTime(ud) ); Unit_setExponent(perTime, -1); UnitDefinition_addUnit( ud, dim ); fail_unless( UnitDefinition_isVariantOfSubstancePerTime(ud) ); UnitDefinition_free(ud); Unit_free(dim); }
END_TEST START_TEST (test_Unit_setKind2) { int i = Unit_setKind(U, UnitKind_forName("litre")); fail_unless( i == LIBSBML_OPERATION_SUCCESS ); fail_unless( Unit_isSetKind(U) ); }
END_TEST START_TEST (test_UnitDefinition_printUnits) { UnitDefinition_t *ud = UnitDefinition_create(2, 4); UnitDefinition_setId(ud, "mmls"); Unit_t *perTime = UnitDefinition_createUnit(ud); Unit_setKind( perTime , UnitKind_forName("second") ); Unit_setExponent( perTime, -1); char * ud_str = UnitDefinition_printUnits(ud, 0); fail_unless(!strcmp(ud_str, "second (exponent = -1, multiplier = 1, scale = 0)")); char * ud_str1 = UnitDefinition_printUnits(ud, 1); fail_unless(!strcmp(ud_str1, "(1 second)^-1")); UnitDefinition_t *ud1 = UnitDefinition_create(2, 4); UnitDefinition_setId(ud1, "mmls"); Unit_t *u = UnitDefinition_createUnit(ud1); Unit_setKind(u, UNIT_KIND_KILOGRAM); Unit_setExponent(u, 1); Unit_setScale(u, 2); Unit_setMultiplier(u, 3.0); char * ud_str2 = UnitDefinition_printUnits(ud1, 0); fail_unless(!strcmp(ud_str2, "kilogram (exponent = 1, multiplier = 3, scale = 2)")); char * ud_str3 = UnitDefinition_printUnits(ud1, 1); fail_unless(!strcmp(ud_str3, "(300 kilogram)^1")); safe_free(ud_str); safe_free(ud_str1); safe_free(ud_str2); safe_free(ud_str3); UnitDefinition_free(ud); UnitDefinition_free(ud1); }
END_TEST START_TEST (test_UnitDefinition_getUnit) { Unit_t *mole = Unit_create(2, 4); Unit_t *litre = Unit_create(2, 4); Unit_t *second = Unit_create(2, 4); Unit_setKind( mole , UnitKind_forName("mole") ); Unit_setKind( litre , UnitKind_forName("litre") ); Unit_setKind( second, UnitKind_forName("second") ); Unit_setScale (mole , -3); Unit_setExponent(litre , -1); Unit_setExponent(second, -1); UnitDefinition_addUnit( UD, mole ); UnitDefinition_addUnit( UD, litre ); UnitDefinition_addUnit( UD, second ); Unit_free(mole); Unit_free(litre); Unit_free(second); fail_unless( UnitDefinition_getNumUnits(UD) == 3 ); mole = UnitDefinition_getUnit(UD, 0); litre = UnitDefinition_getUnit(UD, 1); second = UnitDefinition_getUnit(UD, 2); fail_unless( Unit_getKind(mole) == UNIT_KIND_MOLE ); fail_unless( Unit_getKind(litre) == UNIT_KIND_LITRE ); fail_unless( Unit_getKind(second) == UNIT_KIND_SECOND ); fail_unless( Unit_getScale(mole) == -3 ); fail_unless( Unit_getExponent(litre) == -1 ); fail_unless( Unit_getExponent(second) == -1 ); }
END_TEST START_TEST (test_UnitDefinition_addUnit) { Unit_t *u = Unit_create(2, 4); Unit_setKind(u, UNIT_KIND_MOLE); UnitDefinition_addUnit(UD, u); fail_unless( UnitDefinition_getNumUnits(UD) == 1 ); Unit_free(u); }
END_TEST START_TEST (test_L3_Unit_kind) { char *kind = "mole"; fail_unless( !Unit_isSetKind(U) ); Unit_setKind(U, UnitKind_forName(kind)); fail_unless( Unit_getKind(U) == UNIT_KIND_MOLE ); fail_unless( Unit_isSetKind(U) ); }
END_TEST START_TEST (test_Unit_set_get_unset) { Unit_t *u = Unit_create(2, 4); // defaults fail_unless( Unit_getKind (u) == UNIT_KIND_INVALID ); fail_unless( Unit_getExponent (u) == 1 ); fail_unless( Unit_isSetExponent(u) ); fail_unless( Unit_getScale (u) == 0 ); fail_unless( Unit_isSetScale(u) ); fail_unless( Unit_getMultiplier(u) == 1.0 ); fail_unless( Unit_isSetMultiplier(u) ); fail_unless( !Unit_isSetKind(u) ); Unit_setKind(u, UNIT_KIND_WATT); fail_unless( Unit_getKind (u) == UNIT_KIND_WATT ); Unit_setExponent(u, 3); fail_unless( Unit_getExponent (u) == 3 ); Unit_setScale(u, 4); fail_unless( Unit_getScale (u) == 4 ); Unit_setMultiplier(u, 3.2); fail_unless( Unit_getMultiplier(u) == 3.2 ); fail_unless( Unit_unsetKind(u) == LIBSBML_OPERATION_SUCCESS); fail_unless( Unit_unsetExponent(u) == LIBSBML_UNEXPECTED_ATTRIBUTE); fail_unless( Unit_unsetScale(u) == LIBSBML_UNEXPECTED_ATTRIBUTE); fail_unless( Unit_unsetMultiplier(u) == LIBSBML_UNEXPECTED_ATTRIBUTE); fail_unless( Unit_getKind (u) == UNIT_KIND_INVALID ); fail_unless( Unit_getExponent (u) == 1 ); fail_unless( Unit_isSetExponent(u) ); fail_unless( Unit_getScale (u) == 0 ); fail_unless( Unit_isSetScale(u) ); fail_unless( Unit_getMultiplier(u) == 1.0 ); fail_unless( Unit_isSetMultiplier(u) ); fail_unless( !Unit_isSetKind(u) ); Unit_free(u); }
END_TEST START_TEST (test_UnitDefinition_addUnit3) { UnitDefinition_t *m = UnitDefinition_create(2, 2); Unit_t *p = Unit_create(1, 2); Unit_setKind(p, UNIT_KIND_MOLE); int i = UnitDefinition_addUnit(m, p); fail_unless( i == LIBSBML_LEVEL_MISMATCH); fail_unless( UnitDefinition_getNumUnits(m) == 0); Unit_free(p); UnitDefinition_free(m); }
END_TEST START_TEST (test_Unit_unset) { Unit_t *u = Unit_create(2, 4); Unit_setKind(u, UNIT_KIND_WATT); Unit_setExponent(u, 3); Unit_setScale(u, 4); Unit_setMultiplier(u, 3.2); fail_unless( Unit_getKind (u) == UNIT_KIND_WATT ); fail_unless( Unit_getExponent (u) == 3 ); fail_unless( Unit_getScale (u) == 4 ); fail_unless( Unit_getMultiplier(u) == 3.2 ); fail_unless (Unit_isSetKind(u) == 1); fail_unless (Unit_isSetExponent(u) == 1); fail_unless (Unit_isSetScale(u) == 1); fail_unless (Unit_isSetMultiplier(u) == 1); fail_unless (Unit_isSetOffset(u) == 0); Unit_unsetKind(u); Unit_unsetExponent(u); Unit_unsetScale(u); Unit_unsetMultiplier(u); fail_unless (Unit_isSetKind(u) == 0); fail_unless (Unit_isSetExponent(u) == 1); fail_unless (Unit_isSetScale(u) == 1); fail_unless (Unit_isSetMultiplier(u) == 1); fail_unless (Unit_isSetOffset(u) == 0); fail_unless( Unit_getKind (u) == UNIT_KIND_INVALID ); fail_unless( Unit_getExponent (u) == 1 ); fail_unless( Unit_getScale (u) == 0 ); fail_unless( Unit_getMultiplier(u) == 1.0 ); Unit_free(u); }
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_UnitDefinition_addUnit1) { UnitDefinition_t *m = UnitDefinition_create(2, 2); Unit_t *p = Unit_create(2, 2); int i = UnitDefinition_addUnit(m, p); fail_unless( i == LIBSBML_INVALID_OBJECT); Unit_setKind(p, UNIT_KIND_MOLE); i = UnitDefinition_addUnit(m, p); fail_unless( i == LIBSBML_OPERATION_SUCCESS); fail_unless( UnitDefinition_getNumUnits(m) == 1); Unit_free(p); UnitDefinition_free(m); }
END_TEST START_TEST (test_create_l1v1_units) { Model_t *m; Compartment_t *c; KineticLaw_t *kl; Parameter_t *p; Reaction_t *r; Species_t *s; SpeciesReference_t *sr; Unit_t *u; UnitDefinition_t *ud; /** * <sbml level="1" version="1"> */ m = Model_create(2, 4); /** * <unitDefinition name="substance"> * <listOfUnits> * <unit kind="mole" scale="-3"/> * </listOfUnits> * </unitDefinition> */ ud = Model_createUnitDefinition(m); UnitDefinition_setName(ud, "substance"); u = Model_createUnit(m); Unit_setKind(u,UNIT_KIND_MOLE); Unit_setScale(u, -3); /** * <unitDefinition name="mls"> * <listOfUnits> * <unit kind="mole" scale="-3"/> * <unit kind="liter" exponent="-1"/> * <unit kind="second" exponent="-1"/> * </listOfUnits> * </unitDefinition> */ ud = Model_createUnitDefinition(m); UnitDefinition_setName(ud, "mls"); u = Model_createUnit(m); Unit_setKind(u, UNIT_KIND_MOLE); Unit_setScale(u, -3); u = Model_createUnit(m); Unit_setKind(u, UNIT_KIND_LITER); Unit_setExponent(u, -1); u = Model_createUnit(m); Unit_setKind(u, UNIT_KIND_SECOND); Unit_setExponent(u, -1); /** * <listOfCompartments> * <compartment name="cell"/> * </listOfCompartments> */ c = Model_createCompartment(m); Compartment_setName(c, "cell"); /** * <listOfSpecies> * <specie name="x0" compartment="cell" initialAmount="1"/> * <specie name="x1" compartment="cell" initialAmount="1"/> * <specie name="s1" compartment="cell" initialAmount="1"/> * <specie name="s2" compartment="cell" initialAmount="1"/> * </listOfSpecies> */ s = Model_createSpecies(m); Species_setName(s, "x0"); Species_setCompartment(s, "cell"); Species_setInitialAmount(s, 1); s = Model_createSpecies(m); Species_setName(s, "x1"); Species_setCompartment(s, "cell"); Species_setInitialAmount(s, 1); s = Model_createSpecies(m); Species_setName(s, "s1"); Species_setCompartment(s, "cell"); Species_setInitialAmount(s, 1); s = Model_createSpecies(m); Species_setName(s, "s2"); Species_setCompartment(s, "cell"); Species_setInitialAmount(s, 1); /** * <listOfParameters> * <parameter name="vm" value="2" units="mls"/> * <parameter name="km" value="2"/> * </listOfParameters> */ p = Model_createParameter(m); Parameter_setName (p, "vm"); Parameter_setUnits(p, "mls"); Parameter_setValue(p, 2); p = Model_createParameter(m); Parameter_setName (p, "km"); Parameter_setValue(p, 2); /** * <reaction name="v1"> * <listOfReactants> * <specieReference specie="x0"/> * </listOfReactants> * <listOfProducts> * <specieReference specie="s1"/> * </listOfProducts> * <kineticLaw formula="(vm * s1)/(km + s1)"/> * </reaction> */ r = Model_createReaction(m); Reaction_setName(r, "v1"); sr = Model_createReactant(m); SpeciesReference_setSpecies(sr, "x0"); sr = Model_createProduct(m); SpeciesReference_setSpecies(sr, "s1"); kl = Model_createKineticLaw(m); KineticLaw_setFormula(kl, "(vm * s1)/(km + s1)"); /** * <reaction name="v2"> * <listOfReactants> * <specieReference specie="s1"/> * </listOfReactants> * <listOfProducts> * <specieReference specie="s2"/> * </listOfProducts> * <kineticLaw formula="(vm * s2)/(km + s2)"/> * </reaction> */ r = Model_createReaction(m); Reaction_setName(r, "v2"); sr = Model_createReactant(m); SpeciesReference_setSpecies(sr, "s1"); sr = Model_createProduct(m); SpeciesReference_setSpecies(sr, "s2"); kl = Model_createKineticLaw(m); KineticLaw_setFormula(kl, "(vm * s2)/(km + s2)"); /** * <reaction name="v3"> * <listOfReactants> * <specieReference specie="s2"/> * </listOfReactants> * <listOfProducts> * <specieReference specie="x1"/> * </listOfProducts> * <kineticLaw formula="(vm * s1)/(km + s1)"/> * </reaction> */ r = Model_createReaction(m); Reaction_setName(r, "v3"); sr = Model_createReactant(m); SpeciesReference_setSpecies(sr, "s2"); sr = Model_createProduct(m); SpeciesReference_setSpecies(sr, "x1"); kl = Model_createKineticLaw(m); KineticLaw_setFormula(kl, "(vm * s1)/(km + s1)"); Model_free(m); }
END_TEST START_TEST (test_Unit_isXXX) { fail_unless( !Unit_isSetKind(U) ); Unit_setKind(U, UNIT_KIND_AMPERE); fail_unless( Unit_isAmpere(U) ); Unit_setKind(U, UNIT_KIND_BECQUEREL); fail_unless( Unit_isBecquerel(U) ); Unit_setKind(U, UNIT_KIND_CANDELA); fail_unless( Unit_isCandela(U) ); /* since the Unit is the default level and version * celsius is no longer a valid unit * and setKind will fail */ /* Unit_setKind(U, UNIT_KIND_CELSIUS); fail_unless( Unit_isCelsius(U) ); */ Unit_setKind(U, UNIT_KIND_COULOMB); fail_unless( Unit_isCoulomb(U) ); Unit_setKind(U, UNIT_KIND_DIMENSIONLESS); fail_unless( Unit_isDimensionless(U) ); Unit_setKind(U, UNIT_KIND_FARAD); fail_unless( Unit_isFarad(U) ); Unit_setKind(U, UNIT_KIND_GRAM); fail_unless( Unit_isGram(U) ); Unit_setKind(U, UNIT_KIND_GRAY); fail_unless( Unit_isGray(U) ); Unit_setKind(U, UNIT_KIND_HENRY); fail_unless( Unit_isHenry(U) ); Unit_setKind(U, UNIT_KIND_HERTZ); fail_unless( Unit_isHertz(U) ); Unit_setKind(U, UNIT_KIND_ITEM); fail_unless( Unit_isItem(U) ); Unit_setKind(U, UNIT_KIND_JOULE); fail_unless( Unit_isJoule(U) ); Unit_setKind(U, UNIT_KIND_KATAL); fail_unless( Unit_isKatal(U) ); Unit_setKind(U, UNIT_KIND_KELVIN); fail_unless( Unit_isKelvin(U) ); Unit_setKind(U, UNIT_KIND_KILOGRAM); fail_unless( Unit_isKilogram(U) ); Unit_setKind(U, UNIT_KIND_LITRE); fail_unless( Unit_isLitre(U) ); Unit_setKind(U, UNIT_KIND_LUMEN); fail_unless( Unit_isLumen(U) ); Unit_setKind(U, UNIT_KIND_LUX); fail_unless( Unit_isLux(U) ); Unit_setKind(U, UNIT_KIND_METRE); fail_unless( Unit_isMetre(U) ); Unit_setKind(U, UNIT_KIND_MOLE); fail_unless( Unit_isMole(U) ); Unit_setKind(U, UNIT_KIND_NEWTON); fail_unless( Unit_isNewton(U) ); Unit_setKind(U, UNIT_KIND_OHM); fail_unless( Unit_isOhm(U) ); Unit_setKind(U, UNIT_KIND_PASCAL); fail_unless( Unit_isPascal(U) ); Unit_setKind(U, UNIT_KIND_RADIAN); fail_unless( Unit_isRadian(U) ); Unit_setKind(U, UNIT_KIND_SECOND); fail_unless( Unit_isSecond(U) ); Unit_setKind(U, UNIT_KIND_SIEMENS); fail_unless( Unit_isSiemens(U) ); Unit_setKind(U, UNIT_KIND_SIEVERT); fail_unless( Unit_isSievert(U) ); Unit_setKind(U, UNIT_KIND_STERADIAN); fail_unless( Unit_isSteradian(U) ); Unit_setKind(U, UNIT_KIND_TESLA); fail_unless( Unit_isTesla(U) ); Unit_setKind(U, UNIT_KIND_VOLT); fail_unless( Unit_isVolt(U) ); Unit_setKind(U, UNIT_KIND_WATT); fail_unless( Unit_isWatt(U) ); Unit_setKind(U, UNIT_KIND_WEBER); fail_unless( Unit_isWeber(U) ); }