From d6be887bde798d859a51330c323d8ca9a605af68 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Tue, 18 Oct 2022 23:11:11 +1100 Subject: [PATCH] Minor IfcTester test case fixes --- src/ifctester/test/ids_doc_generator.py | 6 +++++- src/ifctester/test/test_facet.py | 1 + src/ifctester/test/test_ids.py | 26 +++++++++++++++++-------- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/ifctester/test/ids_doc_generator.py b/src/ifctester/test/ids_doc_generator.py index 35e9998e75..fcf312bc72 100644 --- a/src/ifctester/test/ids_doc_generator.py +++ b/src/ifctester/test/ids_doc_generator.py @@ -111,10 +111,14 @@ class IdsDocGenerator: def __init__(self): self.testcases = [] - def __call__(self, name, ids, ifc, expected, applicable_entities=[], failed_entities=[]): + def __call__(self, name, ids, ifc, expected, applicable_entities=None, failed_entities=None): ids.validate(ifc) all_applicable = set() all_failures = set() + if not applicable_entities: + applicable_entities = [] + if not failed_entities: + failed_entities = [] for spec in ids.specifications: assert spec.status is expected all_applicable.update(spec.applicable_entities) diff --git a/src/ifctester/test/test_facet.py b/src/ifctester/test/test_facet.py index bf4453f03a..4cde46fb14 100644 --- a/src/ifctester/test/test_facet.py +++ b/src/ifctester/test/test_facet.py @@ -1541,6 +1541,7 @@ class TestPartOf: facet = PartOf(relation="IfcRelNests", entity="IFCFURNITURE") run("The nest entity must match exactly 2/2", facet=facet, inst=subelement, expected=True) + element.PredefinedType = "USERDEFINED" element.ObjectType = "WATERBOTTLE" facet = PartOf(relation="IfcRelNests", entity="IFCFURNITURE", predefinedType="LITTERBOX") run("The nest predefined type must match exactly 1/2", facet=facet, inst=subelement, expected=False) diff --git a/src/ifctester/test/test_ids.py b/src/ifctester/test/test_ids.py index bfb77e3288..6a4eeef436 100644 --- a/src/ifctester/test/test_ids.py +++ b/src/ifctester/test/test_ids.py @@ -23,12 +23,22 @@ import ifcopenshell from ifctester import ids -def run(name, specs, model, expected, applicable_entities, failed_entities): - specs.validate(model) - spec = specs.specifications[0] - assert spec.status is expected - assert set(spec.applicable_entities) == set(applicable_entities) - assert set(spec.requirements[0].failed_entities) == set(failed_entities) +def run(name, ids, ifc, expected, applicable_entities=None, failed_entities=None): + ids.validate(ifc) + all_applicable = set() + all_failures = set() + if not applicable_entities: + applicable_entities = [] + if not failed_entities: + failed_entities = [] + for spec in ids.specifications: + assert spec.status is expected + all_applicable.update(spec.applicable_entities) + for requirement in spec.requirements: + if requirement.status is False: + all_failures.update(requirement.failed_entities) + assert set(all_applicable) == set(applicable_entities) + assert set(all_failures) == set(failed_entities) class TestIds: @@ -116,7 +126,7 @@ class TestIds: waldo = model.createIfcWall(Name="Waldo") run("A minimal IDS can check a minimal IFC 1/2", specs, model, False, [wall, waldo], [wall]) wall.Name = "Waldo" - run("A minimal IDS can check a minimal IFC 2/2", specs, model, True, [wall, waldo], []) + run("A minimal IDS can check a minimal IFC 2/2", specs, model, True, [wall, waldo]) spec.ifcVersion = ["IFC2X3"] run( @@ -124,7 +134,7 @@ class TestIds: specs, model, True, - [wall, waldo], + [wall, waldo] ) spec.ifcVersion = []