From 345b94fbeee143d9b474eac5224d54141292e298 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Tue, 2 Apr 2024 12:32:36 +0500 Subject: [PATCH] RegenerateGlobalIds - tests --- src/ifcpatch/test/test_RegenerateGlobalIds.py | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/ifcpatch/test/test_RegenerateGlobalIds.py diff --git a/src/ifcpatch/test/test_RegenerateGlobalIds.py b/src/ifcpatch/test/test_RegenerateGlobalIds.py new file mode 100644 index 0000000000..a8e6fe4c23 --- /dev/null +++ b/src/ifcpatch/test/test_RegenerateGlobalIds.py @@ -0,0 +1,48 @@ +# IfcOpenShell - IFC toolkit and geometry engine +# Copyright (C) 2022 Dion Moult +# +# This file is part of IfcOpenShell. +# +# IfcOpenShell is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# IfcOpenShell is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with IfcOpenShell. If not, see . + +import os +import pytest +import ifcpatch +import ifcopenshell +import ifcopenshell.api +import ifcopenshell.util.element + + +class TestRegenerateGlobalIds: + def test_run(self): + ifc_file = ifcopenshell.file() + project = ifcopenshell.api.run("root.create_entity", ifc_file, ifc_class="IfcProject") + wall = ifcopenshell.api.run("root.create_entity", ifc_file, ifc_class="IfcWall") + used_guids = {project.GlobalId, wall.GlobalId} + ifcpatch.execute({"file": ifc_file, "recipe": "RegenerateGlobalIds", "arguments": [False]}) + new_guids = {project.GlobalId, wall.GlobalId} + assert not new_guids.intersection(used_guids) + + def test_regenerate_guids_for_duplicates(self): + ifc_file = ifcopenshell.file() + project = ifcopenshell.api.run("root.create_entity", ifc_file, ifc_class="IfcProject") + wall1 = ifcopenshell.api.run("root.create_entity", ifc_file, ifc_class="IfcWall") + wall2 = ifcopenshell.api.run("root.create_entity", ifc_file, ifc_class="IfcWall") + wall1.GlobalId = wall2.GlobalId + used_guids = {project, wall1.GlobalId, wall2.GlobalId} + + ifcpatch.execute({"file": ifc_file, "recipe": "RegenerateGlobalIds", "arguments": [True]}) + new_guids = {project, wall1.GlobalId, wall2.GlobalId} + assert len(new_guids) == 3 + assert len(new_guids.intersection(used_guids)) == 2