mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 09:21:46 +00:00
reassign_class - cover with tests
This commit is contained in:
@@ -50,3 +50,45 @@ class TestReassignClass(test.bootstrap.IFC4):
|
||||
)
|
||||
assert new.PredefinedType == "USERDEFINED"
|
||||
assert new.ElementType == "FOO"
|
||||
|
||||
def test_reassign_class_for_type_occurrences(self):
|
||||
element_type = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWallType")
|
||||
element1 = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall")
|
||||
ifcopenshell.api.run("type.assign_type", self.file, related_object=element1, relating_type=element_type)
|
||||
element2 = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall")
|
||||
ifcopenshell.api.run("type.assign_type", self.file, related_object=element2, relating_type=element_type)
|
||||
|
||||
element_type = ifcopenshell.api.run(
|
||||
"root.reassign_class", self.file, product=element_type, ifc_class="IfcSlabType"
|
||||
)
|
||||
|
||||
# type occurrences have reassigned classes
|
||||
occurrences = ifcopenshell.util.element.get_types(element_type)
|
||||
assert len(occurrences) == 2
|
||||
assert all(o.is_a("IfcSlab") for o in occurrences)
|
||||
|
||||
# original clases are gone
|
||||
assert len(self.file.by_type("IfcWall")) == 0
|
||||
assert len(self.file.by_type("IfcWallType")) == 0
|
||||
|
||||
def test_reassigning_type_class_and_its_occurrences_classes_if_entity_was_typed(self):
|
||||
element_type = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWallType")
|
||||
element1 = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall")
|
||||
ifcopenshell.api.run("type.assign_type", self.file, related_object=element1, relating_type=element_type)
|
||||
element2 = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall")
|
||||
ifcopenshell.api.run("type.assign_type", self.file, related_object=element2, relating_type=element_type)
|
||||
|
||||
element1 = ifcopenshell.api.run("root.reassign_class", self.file, product=element1, ifc_class="IfcSlab")
|
||||
|
||||
# occurrence type has reassigned class
|
||||
element_type = ifcopenshell.util.element.get_type(element1)
|
||||
assert element_type.is_a("IfcSlabType")
|
||||
|
||||
# other type occurrences have reassigned classes
|
||||
occurrences = ifcopenshell.util.element.get_types(element_type)
|
||||
assert len(occurrences) == 2
|
||||
assert all(o.is_a("IfcSlab") for o in occurrences)
|
||||
|
||||
# original clases are gone
|
||||
assert len(self.file.by_type("IfcWall")) == 0
|
||||
assert len(self.file.by_type("IfcWallType")) == 0
|
||||
|
||||
Reference in New Issue
Block a user