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_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_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_Unit_setMultiplier1) { int i = Unit_setMultiplier(U, 2); fail_unless( i == LIBSBML_UNEXPECTED_ATTRIBUTE ); fail_unless( Unit_getMultiplier(U) == 2 ); }
END_TEST START_TEST (test_Unit_setMultiplier2) { Unit_t *c = Unit_create(2, 2); int i = Unit_setMultiplier(c, 4); fail_unless( i == LIBSBML_OPERATION_SUCCESS ); fail_unless( Unit_getMultiplier(c) == 4 ); Unit_free(c); }
END_TEST START_TEST (test_L3_Unit_multiplier) { double multiplier = 0.2; fail_unless( !Unit_isSetMultiplier(U)); fail_unless( isnan(Unit_getMultiplier(U))); Unit_setMultiplier(U, multiplier); fail_unless( Unit_getMultiplier(U) == multiplier ); fail_unless( Unit_isSetMultiplier(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_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_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_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); }