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_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_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_removeUnit) { Unit_t *o1, *o2, *o3; o1 = UnitDefinition_createUnit(UD); o2 = UnitDefinition_createUnit(UD); o3 = UnitDefinition_createUnit(UD); fail_unless( UnitDefinition_removeUnit(UD,0) == o1 ); fail_unless( UnitDefinition_getNumUnits(UD) == 2 ); fail_unless( UnitDefinition_removeUnit(UD,0) == o2 ); fail_unless( UnitDefinition_getNumUnits(UD) == 1 ); fail_unless( UnitDefinition_removeUnit(UD,0) == o3 ); fail_unless( UnitDefinition_getNumUnits(UD) == 0 ); Unit_free(o1); Unit_free(o2); Unit_free(o3); }
END_TEST START_TEST (test_UnitDefinition_createUnit) { UnitDefinition_t *m = UnitDefinition_create(2, 2); Unit_t *p = UnitDefinition_createUnit(m); fail_unless( UnitDefinition_getNumUnits(m) == 1); fail_unless( SBase_getLevel((SBase_t *) (p)) == 2 ); fail_unless( SBase_getVersion((SBase_t *) (p)) == 2 ); UnitDefinition_free(m); }
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); }