From 5c4c61bb15bf63190a3afe67b7b72dacceba2ba7 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Mon, 1 Apr 2024 13:49:42 +0500 Subject: [PATCH] fix issue with prohibited facets in 0065c5f, add a test --- src/ifctester/ifctester/ids.py | 2 -- src/ifctester/test/test_ids.py | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/ifctester/ifctester/ids.py b/src/ifctester/ifctester/ids.py index ce2b7acc47..da71c87c96 100644 --- a/src/ifctester/ifctester/ids.py +++ b/src/ifctester/ifctester/ids.py @@ -262,8 +262,6 @@ class Specification: for facet in self.requirements: result = facet(element) is_pass = bool(result) - if facet.cardinality == "prohibited": - is_pass = not is_pass if self.maxOccurs != 0: # This is a required or optional specification if not is_pass: self.failed_entities.add(element) diff --git a/src/ifctester/test/test_ids.py b/src/ifctester/test/test_ids.py index 0d68c2af7d..9059519b3e 100644 --- a/src/ifctester/test/test_ids.py +++ b/src/ifctester/test/test_ids.py @@ -352,3 +352,22 @@ class TestSpecification: None, None, ) + + def test_prohibited_facet(self): + specs = ids.Ids(title="Title") + spec = ids.Specification(name="Name") + spec.applicability.append(ids.Entity(name="IFCWALL")) + spec.requirements.append(ids.Attribute(name="Name", value="Waldo", cardinality="prohibited")) + specs.specifications.append(spec) + + spec.set_usage("required") + model = ifcopenshell.file() + wall = model.createIfcWall(Name="Wally") + run( + "Prohibited facet not to fail if no entity passes it", + specs, + model, + True, + [wall], + [], + )