diff --git a/src/ifcopenshell-python/ifcopenshell/api/unit/unassign_unit.py b/src/ifcopenshell-python/ifcopenshell/api/unit/unassign_unit.py index b5d181d1dd..892c37f354 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/unit/unassign_unit.py +++ b/src/ifcopenshell-python/ifcopenshell/api/unit/unassign_unit.py @@ -14,4 +14,5 @@ class Usecase: units = units - set(self.settings["units"]) if units: unit_assignment.Units = list(units) - return unit_assignment + return unit_assignment + self.file.remove(unit_assignment) diff --git a/src/ifcopenshell-python/test/api/unit/test_unassign_unit.py b/src/ifcopenshell-python/test/api/unit/test_unassign_unit.py new file mode 100644 index 0000000000..1640eb93e0 --- /dev/null +++ b/src/ifcopenshell-python/test/api/unit/test_unassign_unit.py @@ -0,0 +1,24 @@ +import test.bootstrap +import ifcopenshell.api + + +class TestUnassignUnit(test.bootstrap.IFC4): + def test_run(self): + project = self.file.createIfcProject() + unit1 = ifcopenshell.api.run("unit.add_monetary_unit", self.file, currency="FOO") + unit2 = ifcopenshell.api.run("unit.add_monetary_unit", self.file, currency="BAR") + assignment = ifcopenshell.api.run("unit.assign_unit", self.file, units=[unit1, unit2]) + ifcopenshell.api.run("unit.unassign_unit", self.file, units=[unit1]) + assert unit1 not in assignment.Units + assert unit2 in assignment.Units + + def test_unassigning_the_last_unit(self): + project = self.file.createIfcProject() + unit = ifcopenshell.api.run("unit.add_monetary_unit", self.file, currency="FOO") + ifcopenshell.api.run("unit.assign_unit", self.file, units=[unit]) + ifcopenshell.api.run("unit.unassign_unit", self.file, units=[unit]) + assert project.UnitsInContext is None + + def test_doing_nothing_if_the_unit_is_not_assigned(self): + unit = ifcopenshell.api.run("unit.add_monetary_unit", self.file, currency="FOO") + assert ifcopenshell.api.run("unit.unassign_unit", self.file, units=[unit]) is None