mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-20 15:08:51 +00:00
bimtester: steps, add more attributes tests
This commit is contained in:
@@ -1,7 +1,10 @@
|
|||||||
from behave import step
|
from behave import step
|
||||||
|
|
||||||
from attributes_eleclasses_methods import all_element_attribs_have_a_value
|
from attributes_eleclasses_methods import all_element_attribs_have_a_value
|
||||||
|
from attributes_eleclasses_methods import name_has_a_value
|
||||||
|
from attributes_eleclasses_methods import description_has_a_value
|
||||||
from attributes_eleclasses_methods import no_element_class_ele
|
from attributes_eleclasses_methods import no_element_class_ele
|
||||||
|
from utils import assert_elements
|
||||||
from utils import IfcFile
|
from utils import IfcFile
|
||||||
from utils import switch_locale
|
from utils import switch_locale
|
||||||
|
|
||||||
@@ -18,6 +21,18 @@ def step_impl(context, ifc_class):
|
|||||||
all_element_attribs_have_a_value(context, ifc_class)
|
all_element_attribs_have_a_value(context, ifc_class)
|
||||||
|
|
||||||
|
|
||||||
|
@step('all {ifc_class} elements have a name given')
|
||||||
|
def step_impl(context, ifc_class):
|
||||||
|
switch_locale(context.localedir, "en")
|
||||||
|
name_has_a_value(context, ifc_class)
|
||||||
|
|
||||||
|
|
||||||
|
@step('all {ifc_class} elements have a description given')
|
||||||
|
def step_impl(context, ifc_class):
|
||||||
|
switch_locale(context.localedir, "en")
|
||||||
|
description_has_a_value(context, ifc_class)
|
||||||
|
|
||||||
|
|
||||||
@step('all {ifc_class} elements have a name matching the pattern "{pattern}"')
|
@step('all {ifc_class} elements have a name matching the pattern "{pattern}"')
|
||||||
def step_impl(context, ifc_class, pattern):
|
def step_impl(context, ifc_class, pattern):
|
||||||
import re
|
import re
|
||||||
|
|||||||
@@ -82,3 +82,53 @@ def all_element_attribs_have_a_value(context, ifc_class):
|
|||||||
message_no_elems=_("There are no {ifc_class} elements in the IFC file."),
|
message_no_elems=_("There are no {ifc_class} elements in the IFC file."),
|
||||||
parameter=failed_attribs
|
parameter=failed_attribs
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def name_has_a_value(context, ifc_class):
|
||||||
|
|
||||||
|
context.falseelems = []
|
||||||
|
context.falseguids = []
|
||||||
|
|
||||||
|
elements = IfcFile.get().by_type(ifc_class)
|
||||||
|
for elem in elements:
|
||||||
|
# print(elem.Name)
|
||||||
|
if not elem.Name:
|
||||||
|
context.falseelems.append(str(elem))
|
||||||
|
context.falseguids.append(elem.GlobalId)
|
||||||
|
|
||||||
|
context.elemcount = len(elements)
|
||||||
|
context.falsecount = len(context.falseelems)
|
||||||
|
assert_elements(
|
||||||
|
ifc_class,
|
||||||
|
context.elemcount,
|
||||||
|
context.falsecount,
|
||||||
|
context.falseelems,
|
||||||
|
message_all_falseelems=_("The name of all {elemcount} {elemcount} elements is not set."),
|
||||||
|
message_some_falseelems=_("The name of {falsecount} out of {elemcount} {ifc_class} elements is not set: {falseelems}"),
|
||||||
|
message_no_elems=_("There are no {ifc_class} elements in the IFC file."),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def description_has_a_value(context, ifc_class):
|
||||||
|
|
||||||
|
context.falseelems = []
|
||||||
|
context.falseguids = []
|
||||||
|
|
||||||
|
elements = IfcFile.get().by_type(ifc_class)
|
||||||
|
for elem in elements:
|
||||||
|
# print(elem.Description)
|
||||||
|
if not elem.Description:
|
||||||
|
context.falseelems.append(str(elem))
|
||||||
|
context.falseguids.append(elem.GlobalId)
|
||||||
|
|
||||||
|
context.elemcount = len(elements)
|
||||||
|
context.falsecount = len(context.falseelems)
|
||||||
|
assert_elements(
|
||||||
|
ifc_class,
|
||||||
|
context.elemcount,
|
||||||
|
context.falsecount,
|
||||||
|
context.falseelems,
|
||||||
|
message_all_falseelems=_("The description of all {elemcount} {elemcount} elements is not set."),
|
||||||
|
message_some_falseelems=_("The description of {falsecount} out of {elemcount} {ifc_class} elements is not set: {falseelems}"),
|
||||||
|
message_no_elems=_("There are no {ifc_class} elements in the IFC file."),
|
||||||
|
)
|
||||||
|
|||||||
@@ -1,6 +1,15 @@
|
|||||||
from behave import step
|
from behave import step
|
||||||
|
|
||||||
|
from attributes_psets_methods import all_eleclass_elements_have_prop_in_pset
|
||||||
|
from utils import assert_elements
|
||||||
from utils import IfcFile
|
from utils import IfcFile
|
||||||
|
from utils import switch_locale
|
||||||
|
|
||||||
|
|
||||||
|
@step("all {ifc_class} elements have an {aproperty} property in the {pset} pset")
|
||||||
|
def step_impl(context, ifc_class, aproperty, pset):
|
||||||
|
switch_locale(context.localedir, "en")
|
||||||
|
all_eleclass_elements_have_prop_in_pset(context, ifc_class, aproperty, pset)
|
||||||
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------
|
# ------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
import gettext # noqa
|
||||||
|
|
||||||
|
from utils import assert_elements
|
||||||
|
from utils import IfcFile
|
||||||
|
|
||||||
|
|
||||||
|
def all_eleclass_elements_have_prop_in_pset(context, ifc_class, aproperty, pset):
|
||||||
|
|
||||||
|
context.falseelems = []
|
||||||
|
context.falseguids = []
|
||||||
|
context.falseprops = {}
|
||||||
|
from ifcopenshell.util.element import get_psets
|
||||||
|
|
||||||
|
elements = IfcFile.get().by_type(ifc_class)
|
||||||
|
for elem in elements:
|
||||||
|
psets = get_psets(elem)
|
||||||
|
if not (pset in psets and aproperty in psets[pset]):
|
||||||
|
context.falseelems.append(str(elem))
|
||||||
|
context.falseguids.append(elem.GlobalId)
|
||||||
|
context.falseprops[elem.id()] = str(psets)
|
||||||
|
|
||||||
|
context.elemcount = len(elements)
|
||||||
|
context.falsecount = len(context.falseelems)
|
||||||
|
assert_elements(
|
||||||
|
ifc_class,
|
||||||
|
context.elemcount,
|
||||||
|
context.falsecount,
|
||||||
|
context.falseelems,
|
||||||
|
message_all_falseelems=_("All {elemcount} {ifc_class} elements are missing the property {parameter} in the pset."),
|
||||||
|
message_some_falseelems=_("The following {falsecount} of {elemcount} {ifc_class} elements are missing the property {parameter} in the pset: {falseelems}"),
|
||||||
|
message_no_elems=_("There are no {ifc_class} elements in the IFC file."),
|
||||||
|
parameter=aproperty
|
||||||
|
)
|
||||||
|
# the pset name is missing in the failing message, but it is in the step test name
|
||||||
Reference in New Issue
Block a user