END_TEST START_TEST (test_UnitDefinition_setId) { char *id = "mmls"; UnitDefinition_setId(UD, id); fail_unless( !strcmp(UnitDefinition_getId(UD), id) ); fail_unless( UnitDefinition_isSetId(UD) ); if (UnitDefinition_getId(UD) == id) { fail("UnitDefinition_setId(...) did not make a copy of string."); } /* Reflexive case (pathological) */ UnitDefinition_setId(UD, UnitDefinition_getId(UD)); fail_unless( !strcmp(UnitDefinition_getId(UD), id) ); UnitDefinition_setId(UD, NULL); fail_unless( !UnitDefinition_isSetId(UD) ); if (UnitDefinition_getId(UD) != NULL) { fail("UnitDefinition_setId(R, NULL) did not clear string."); } }
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_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_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); }