diff --git a/src/ifcopenshell-python/test/api/document/test_add_reference.py b/src/ifcopenshell-python/test/api/document/test_add_reference.py index deb379cdaa..6cccd86d27 100644 --- a/src/ifcopenshell-python/test/api/document/test_add_reference.py +++ b/src/ifcopenshell-python/test/api/document/test_add_reference.py @@ -32,19 +32,9 @@ class TestAddReference(test.bootstrap.IFC4): element = ifcopenshell.api.run("document.add_reference", self.file, information=information) assert element.is_a("IfcDocumentReference") assert len(self.file.by_type("IfcDocumentReference")) == 1 - assert element.ReferencedDocument == information + ifc2x3 = self.file.schema == "IFC2X3" + assert (element.ReferenceToDocument[0] if ifc2x3 else element.ReferencedDocument) == information -class TestAddReferenceIFC2X3(test.bootstrap.IFC2X3): - def test_adding_a_reference(self): - element = ifcopenshell.api.run("document.add_reference", self.file, information=None) - assert element.is_a("IfcDocumentReference") - assert len(self.file.by_type("IfcDocumentReference")) == 1 - - def test_adding_a_reference_to_an_information(self): - self.file.createIfcProject() - information = ifcopenshell.api.run("document.add_information", self.file, parent=None) - element = ifcopenshell.api.run("document.add_reference", self.file, information=information) - assert element.is_a("IfcDocumentReference") - assert len(self.file.by_type("IfcDocumentReference")) == 1 - assert element.ReferenceToDocument[0] == information +class TestAddReferenceIFC2X3(test.bootstrap.IFC2X3, TestAddReference): + pass diff --git a/src/ifcopenshell-python/test/api/library/test_add_reference.py b/src/ifcopenshell-python/test/api/library/test_add_reference.py index 7cb13839b0..c0791e1855 100644 --- a/src/ifcopenshell-python/test/api/library/test_add_reference.py +++ b/src/ifcopenshell-python/test/api/library/test_add_reference.py @@ -25,12 +25,12 @@ class TestAddReference(test.bootstrap.IFC4): library = ifcopenshell.api.run("library.add_library", self.file, name="Name") reference = ifcopenshell.api.run("library.add_reference", self.file, library=library) assert reference.is_a("IfcLibraryReference") - assert reference.ReferencedLibrary == library + ifc2x3 = self.file.schema == "IFC2X3" + if ifc2x3: + assert library.LibraryReference == (reference,) + else: + assert reference.ReferencedLibrary == library -class TestAddReferenceIFC2X3(test.bootstrap.IFC2X3): - def test_adding_a_reference(self): - library = ifcopenshell.api.run("library.add_library", self.file, name="Name") - reference = ifcopenshell.api.run("library.add_reference", self.file, library=library) - assert reference.is_a("IfcLibraryReference") - assert library.LibraryReference == (reference,) +class TestAddReferenceIFC2X3(test.bootstrap.IFC2X3, TestAddReference): + pass diff --git a/src/ifcopenshell-python/test/api/system/test_assign_port.py b/src/ifcopenshell-python/test/api/system/test_assign_port.py index 130e208b02..f78183cf49 100644 --- a/src/ifcopenshell-python/test/api/system/test_assign_port.py +++ b/src/ifcopenshell-python/test/api/system/test_assign_port.py @@ -24,54 +24,15 @@ import ifcopenshell.util.system class TestAssignPort(test.bootstrap.IFC4): - def test_assigning_a_port_once_only(self): - port = self.file.createIfcDistributionPort() - element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcChiller") - ifcopenshell.api.run("system.assign_port", self.file, element=element, port=port) - assert element.IsNestedBy[0].RelatedObjects == (port,) - assert ifcopenshell.util.system.get_ports(element) == [port] - ifcopenshell.api.run("system.assign_port", self.file, element=element, port=port) - assert ifcopenshell.util.system.get_ports(element) == [port] - - def test_updating_the_placement_to_be_relative_if_it_exists(self): - ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcProject") - ifcopenshell.api.run("unit.assign_unit", self.file) - element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcChiller") - subelement = ifcopenshell.api.run("system.add_port", self.file) - matrix = numpy.array( - ( - (1.0, 0.0, 0.0, 1.0), - (0.0, 1.0, 0.0, 1.0), - (0.0, 0.0, 1.0, 1.0), - (0.0, 0.0, 0.0, 1.0), - ) - ) - submatrix = numpy.array( - ( - (1.0, 0.0, 0.0, 1.0), - (0.0, 1.0, 0.0, 2.0), - (0.0, 0.0, 1.0, 3.0), - (0.0, 0.0, 0.0, 1.0), - ) - ) - ifcopenshell.api.run( - "geometry.edit_object_placement", self.file, product=element, matrix=matrix.copy(), is_si=False - ) - ifcopenshell.api.run( - "geometry.edit_object_placement", self.file, product=subelement, matrix=submatrix.copy(), is_si=False - ) - ifcopenshell.api.run("system.assign_port", self.file, element=element, port=subelement) - assert numpy.array_equal(ifcopenshell.util.placement.get_local_placement(element.ObjectPlacement), matrix) - assert numpy.array_equal(ifcopenshell.util.placement.get_local_placement(subelement.ObjectPlacement), submatrix) - assert subelement.ObjectPlacement.PlacementRelTo == element.ObjectPlacement - - -class TestAssignPortIFC2X3(test.bootstrap.IFC2X3): def test_assigning_a_port_once_only(self): port = self.file.createIfcDistributionPort() element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcFlowSegment") ifcopenshell.api.run("system.assign_port", self.file, element=element, port=port) - assert element.HasPorts[0].RelatingPort == port + ifc2x3 = self.file.schema == "IFC2X3" + if ifc2x3: + assert element.HasPorts[0].RelatingPort == port + else: + assert element.IsNestedBy[0].RelatedObjects == (port,) assert ifcopenshell.util.system.get_ports(element) == [port] ifcopenshell.api.run("system.assign_port", self.file, element=element, port=port) assert ifcopenshell.util.system.get_ports(element) == [port] @@ -107,3 +68,7 @@ class TestAssignPortIFC2X3(test.bootstrap.IFC2X3): assert numpy.array_equal(ifcopenshell.util.placement.get_local_placement(element.ObjectPlacement), matrix) assert numpy.array_equal(ifcopenshell.util.placement.get_local_placement(subelement.ObjectPlacement), submatrix) assert subelement.ObjectPlacement.PlacementRelTo == element.ObjectPlacement + + +class TestAssignPortIFC2X3(test.bootstrap.IFC2X3, TestAssignPort): + pass diff --git a/src/ifcopenshell-python/test/api/system/test_unassign_port.py b/src/ifcopenshell-python/test/api/system/test_unassign_port.py index 2edafa6c1d..3ba59bd72a 100644 --- a/src/ifcopenshell-python/test/api/system/test_unassign_port.py +++ b/src/ifcopenshell-python/test/api/system/test_unassign_port.py @@ -22,18 +22,13 @@ import ifcopenshell.util.system class TestAssignPort(test.bootstrap.IFC4): - def test_assigning_a_port_once_only(self): - port = self.file.createIfcDistributionPort() - element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcChiller") - ifcopenshell.api.run("system.assign_port", self.file, element=element, port=port) - ifcopenshell.api.run("system.unassign_port", self.file, element=element, port=port) - assert ifcopenshell.util.system.get_ports(element) == [] - - -class TestAssignPortIFC2X3(test.bootstrap.IFC2X3): def test_assigning_a_port_once_only(self): port = self.file.createIfcDistributionPort() element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcFlowSegment") ifcopenshell.api.run("system.assign_port", self.file, element=element, port=port) ifcopenshell.api.run("system.unassign_port", self.file, element=element, port=port) assert ifcopenshell.util.system.get_ports(element) == [] + + +class TestAssignPortIFC2X3(test.bootstrap.IFC2X3, TestAssignPort): + pass diff --git a/src/ifcopenshell-python/test/util/test_element.py b/src/ifcopenshell-python/test/util/test_element.py index a0d0ee3f47..ec5e686d60 100644 --- a/src/ifcopenshell-python/test/util/test_element.py +++ b/src/ifcopenshell-python/test/util/test_element.py @@ -301,13 +301,8 @@ class TestGetTypeIFC4(test.bootstrap.IFC4): assert subject.get_type(element_type) == element_type -class TestGetTypeIFC2X3(test.bootstrap.IFC2X3): - def test_getting_the_type_of_a_product(self): - element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") - element_type = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWallType") - ifcopenshell.api.run("type.assign_type", self.file, related_object=element, relating_type=element_type) - assert subject.get_type(element) == element_type - assert subject.get_type(element_type) == element_type +class TestGetTypeIFC2X3(test.bootstrap.IFC2X3, TestGetTypeIFC4): + pass class TestGetTypes(test.bootstrap.IFC4): @@ -318,12 +313,8 @@ class TestGetTypes(test.bootstrap.IFC4): assert subject.get_types(element_type) == (element,) -class TestGetTypesIFC2X3(test.bootstrap.IFC2X3): - def test_getting_the_type_of_a_product(self): - element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") - element_type = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWallType") - ifcopenshell.api.run("type.assign_type", self.file, related_object=element, relating_type=element_type) - assert subject.get_types(element_type) == (element,) +class TestGetTypesIFC2X3(test.bootstrap.IFC2X3, TestGetTypes): + pass class TestGetShapeAspects(test.bootstrap.IFC4): @@ -645,42 +636,6 @@ class TestGetElementsByLayer(test.bootstrap.IFC4): assert list(subject.get_elements_by_layer(self.file, layer)) == [element] -class TestGetlayers(test.bootstrap.IFC4): - def test_getting_the_layer_of_a_product_representation(self): - element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") - layer = ifcopenshell.api.run("layer.add_layer", self.file) - representation = self.file.createIfcShapeRepresentation() - element.Representation = self.file.createIfcProductDefinitionShape(Representations=[representation]) - ifcopenshell.api.run("layer.assign_layer", self.file, items=[representation], layer=layer) - assert subject.get_layers(self.file, element) == [layer] - - def test_getting_the_layer_of_a_product_item(self): - element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") - layer = ifcopenshell.api.run("layer.add_layer", self.file) - item = self.file.createIfcExtrudedAreaSolid() - representation = self.file.createIfcShapeRepresentation(Items=[item]) - element.Representation = self.file.createIfcProductDefinitionShape(Representations=[representation]) - ifcopenshell.api.run("layer.assign_layer", self.file, items=[item], layer=layer) - assert subject.get_layers(self.file, element) == [layer] - - def test_getting_the_layer_of_a_type_product_representation(self): - element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWallType") - layer = ifcopenshell.api.run("layer.add_layer", self.file) - representation = self.file.createIfcShapeRepresentation() - element.RepresentationMaps = [self.file.createIfcRepresentationMap(MappedRepresentation=representation)] - ifcopenshell.api.run("layer.assign_layer", self.file, items=[representation], layer=layer) - assert subject.get_layers(self.file, element) == [layer] - - def test_getting_the_layer_of_a_type_product_item(self): - element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWallType") - layer = ifcopenshell.api.run("layer.add_layer", self.file) - item = self.file.createIfcExtrudedAreaSolid() - representation = self.file.createIfcShapeRepresentation(Items=[item]) - element.RepresentationMaps = [self.file.createIfcRepresentationMap(MappedRepresentation=representation)] - ifcopenshell.api.run("layer.assign_layer", self.file, items=[item], layer=layer) - assert subject.get_layers(self.file, element) == [layer] - - class TestGetlayersIFC2X3(test.bootstrap.IFC2X3): def test_getting_the_layer_of_a_product_item(self): element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") @@ -701,6 +656,24 @@ class TestGetlayersIFC2X3(test.bootstrap.IFC2X3): assert subject.get_layers(self.file, element) == [layer] +class TestGetlayers(test.bootstrap.IFC4, TestGetlayersIFC2X3): + def test_getting_the_layer_of_a_product_representation(self): + element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") + layer = ifcopenshell.api.run("layer.add_layer", self.file) + representation = self.file.createIfcShapeRepresentation() + element.Representation = self.file.createIfcProductDefinitionShape(Representations=[representation]) + ifcopenshell.api.run("layer.assign_layer", self.file, items=[representation], layer=layer) + assert subject.get_layers(self.file, element) == [layer] + + def test_getting_the_layer_of_a_type_product_representation(self): + element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWallType") + layer = ifcopenshell.api.run("layer.add_layer", self.file) + representation = self.file.createIfcShapeRepresentation() + element.RepresentationMaps = [self.file.createIfcRepresentationMap(MappedRepresentation=representation)] + ifcopenshell.api.run("layer.assign_layer", self.file, items=[representation], layer=layer) + assert subject.get_layers(self.file, element) == [layer] + + class TestGetContainerIFC4(test.bootstrap.IFC4): def test_getting_the_spatial_container_of_an_element(self): element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcWall") diff --git a/src/ifcopenshell-python/test/util/test_system.py b/src/ifcopenshell-python/test/util/test_system.py index a3951f5e88..100b10fd9c 100644 --- a/src/ifcopenshell-python/test/util/test_system.py +++ b/src/ifcopenshell-python/test/util/test_system.py @@ -57,14 +57,6 @@ class TestGetElementSystems(test.bootstrap.IFC4): class TestGetPorts(test.bootstrap.IFC4): - def test_run(self): - port = self.file.createIfcDistributionPort() - element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcChiller") - ifcopenshell.api.run("system.assign_port", self.file, element=element, port=port) - assert subject.get_ports(element) == [port] - - -class TestGetPortsIFC2X3(test.bootstrap.IFC2X3): def test_run(self): port = self.file.createIfcDistributionPort() element = ifcopenshell.api.run("root.create_entity", self.file, ifc_class="IfcFlowSegment") @@ -72,6 +64,10 @@ class TestGetPortsIFC2X3(test.bootstrap.IFC2X3): assert subject.get_ports(element) == [port] +class TestGetPortsIFC2X3(test.bootstrap.IFC2X3, TestGetPorts): + pass + + class TestGetConnectedPort(test.bootstrap.IFC4): def test_run(self): port1 = ifcopenshell.api.run("system.add_port", self.file) @@ -104,6 +100,5 @@ class TestGetConnectedToFrom(test.bootstrap.IFC4): assert subject.get_connected_from(element2) == [] -class TestGetConnectedToFromIFC2X3(test.bootstrap.IFC2X3): - def test_run(self): - TestGetConnectedToFrom.test_run(self) +class TestGetConnectedToFromIFC2X3(test.bootstrap.IFC2X3, TestGetConnectedToFrom): + pass