Fix #1795. New support for conversion based units with offsets, like fahrenheit.

This commit is contained in:
Dion Moult
2021-10-14 12:46:01 +11:00
parent 1fa1a9e3d3
commit 3d0d2ec8fb
3 changed files with 63 additions and 18 deletions
@@ -0,0 +1,43 @@
import test.bootstrap
import ifcopenshell.api
class TestAddConversionBasedUnit(test.bootstrap.IFC4):
def test_run(self):
unit = ifcopenshell.api.run("unit.add_conversion_based_unit", self.file, name="foot")
assert unit.is_a("IfcConversionBasedUnit")
assert unit.Dimensions.LengthExponent == 1
assert unit.Dimensions.MassExponent == 0
assert unit.Dimensions.TimeExponent == 0
assert unit.Dimensions.ElectricCurrentExponent == 0
assert unit.Dimensions.ThermodynamicTemperatureExponent == 0
assert unit.Dimensions.AmountOfSubstanceExponent == 0
assert unit.Dimensions.LuminousIntensityExponent == 0
assert unit.UnitType == "LENGTHUNIT"
assert unit.Name == "foot"
assert unit.ConversionFactor.ValueComponent.wrappedValue == 0.3048
si_unit = unit.ConversionFactor.UnitComponent
assert si_unit.is_a("IfcSIUnit")
assert si_unit.UnitType == "LENGTHUNIT"
assert si_unit.Prefix is None
assert si_unit.Name == "METRE"
def test_adding_a_unit_with_offset(self):
unit = ifcopenshell.api.run("unit.add_conversion_based_unit", self.file, name="fahrenheit")
assert unit.is_a("IfcConversionBasedUnitWithOffset")
assert unit.Dimensions.LengthExponent == 0
assert unit.Dimensions.MassExponent == 0
assert unit.Dimensions.TimeExponent == 0
assert unit.Dimensions.ElectricCurrentExponent == 0
assert unit.Dimensions.ThermodynamicTemperatureExponent == 1
assert unit.Dimensions.AmountOfSubstanceExponent == 0
assert unit.Dimensions.LuminousIntensityExponent == 0
assert unit.UnitType == "THERMODYNAMICTEMPERATUREUNIT"
assert unit.Name == "fahrenheit"
assert unit.ConversionFactor.ValueComponent.wrappedValue == 1.8
si_unit = unit.ConversionFactor.UnitComponent
assert si_unit.is_a("IfcSIUnit")
assert si_unit.UnitType == "THERMODYNAMICTEMPERATUREUNIT"
assert si_unit.Prefix is None
assert si_unit.Name == "KELVIN"
assert unit.ConversionOffset == -459.67