mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-10 01:41:57 +00:00
More qto and spatial tests. Tests can now select items in a UIList.
This commit is contained in:
@@ -86,3 +86,37 @@ Scenario: Perform quantity take-off - using Blender engine
|
|||||||
When I look at the "Quantity Sets" panel
|
When I look at the "Quantity Sets" panel
|
||||||
Then I see "Qto_WallBaseQuantities"
|
Then I see "Qto_WallBaseQuantities"
|
||||||
And I see "NetVolume"
|
And I see "NetVolume"
|
||||||
|
|
||||||
|
Scenario: Manual quantification
|
||||||
|
Given an empty IFC project
|
||||||
|
And I add a cube
|
||||||
|
And the object "Cube" is selected
|
||||||
|
And I look at the "Class" panel
|
||||||
|
And I set the "Products" property to "IfcElement"
|
||||||
|
And I set the "Class" property to "IfcWall"
|
||||||
|
And I click "Assign IFC Class"
|
||||||
|
And I look at the "Manual Quantification" panel
|
||||||
|
When I set the "qto_name" property to "Foo"
|
||||||
|
And I set the "prop_name" property to "Bar"
|
||||||
|
And I click "Calculate Single Quantity"
|
||||||
|
When I look at the "Quantity Sets" panel
|
||||||
|
Then I see "Foo"
|
||||||
|
And I see "Bar"
|
||||||
|
|
||||||
|
Scenario: Manual quantification - set an engine and function
|
||||||
|
Given an empty IFC project
|
||||||
|
And I add a cube
|
||||||
|
And the object "Cube" is selected
|
||||||
|
And I look at the "Class" panel
|
||||||
|
And I set the "Products" property to "IfcElement"
|
||||||
|
And I set the "Class" property to "IfcWall"
|
||||||
|
And I click "Assign IFC Class"
|
||||||
|
And I look at the "Manual Quantification" panel
|
||||||
|
And I set the "Calculator" property to "IfcOpenShell"
|
||||||
|
And I set the "Function" property to "Volume: Net Volume"
|
||||||
|
When I set the "qto_name" property to "Foo"
|
||||||
|
And I set the "prop_name" property to "Bar"
|
||||||
|
And I click "Calculate Single Quantity"
|
||||||
|
When I look at the "Quantity Sets" panel
|
||||||
|
Then I see "Foo"
|
||||||
|
And I see "Bar"
|
||||||
|
|||||||
@@ -101,8 +101,6 @@ Scenario: Select similar container
|
|||||||
When I press "bim.select_similar_container"
|
When I press "bim.select_similar_container"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
|
|
||||||
#HERE STARTS TESTS FOR SPATIAL TOOL
|
|
||||||
|
|
||||||
Scenario: Execute generate space from cursor position
|
Scenario: Execute generate space from cursor position
|
||||||
Given an empty IFC project
|
Given an empty IFC project
|
||||||
When I press "bim.generate_space"
|
When I press "bim.generate_space"
|
||||||
@@ -126,3 +124,51 @@ Scenario: Execute toggle space visibility
|
|||||||
And I press "bim.assign_class(ifc_class='IfcSpace', predefined_type='SPACE')"
|
And I press "bim.assign_class(ifc_class='IfcSpace', predefined_type='SPACE')"
|
||||||
When I press "bim.toggle_space_visibility"
|
When I press "bim.toggle_space_visibility"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
|
|
||||||
|
Scenario: Spatial decomposition - see panel
|
||||||
|
Given an empty IFC project
|
||||||
|
When I look at the "Spatial Decomposition" panel
|
||||||
|
Then the "BIM_UL_containers_manager" list has 4 items
|
||||||
|
And I don't see the "BIM_UL_elements" list
|
||||||
|
|
||||||
|
Scenario: Isolate spatial container
|
||||||
|
Given an empty IFC project
|
||||||
|
And I look at the "Spatial Decomposition" panel
|
||||||
|
When I select the "My Site" item in the "BIM_UL_containers_manager" list
|
||||||
|
And I click "Isolate"
|
||||||
|
Then nothing happens
|
||||||
|
|
||||||
|
Scenario: Show spatial container
|
||||||
|
Given an empty IFC project
|
||||||
|
And I look at the "Spatial Decomposition" panel
|
||||||
|
When I select the "My Site" item in the "BIM_UL_containers_manager" list
|
||||||
|
And I click "HIDE_OFF"
|
||||||
|
Then nothing happens
|
||||||
|
|
||||||
|
Scenario: Hide spatial container
|
||||||
|
Given an empty IFC project
|
||||||
|
And I look at the "Spatial Decomposition" panel
|
||||||
|
When I select the "My Site" item in the "BIM_UL_containers_manager" list
|
||||||
|
And I click "HIDE_ON"
|
||||||
|
Then nothing happens
|
||||||
|
|
||||||
|
Scenario: Select spatial container
|
||||||
|
Given an empty IFC project
|
||||||
|
And I look at the "Spatial Decomposition" panel
|
||||||
|
When I select the "My Site" item in the "BIM_UL_containers_manager" list
|
||||||
|
And I click "OBJECT_DATA"
|
||||||
|
Then the object "IfcSite/My Site" is selected
|
||||||
|
|
||||||
|
Scenario: Delete spatial container
|
||||||
|
Given an empty IFC project
|
||||||
|
And I look at the "Spatial Decomposition" panel
|
||||||
|
When I select the "My Building" item in the "BIM_UL_containers_manager" list
|
||||||
|
And I click "X"
|
||||||
|
Then the "BIM_UL_containers_manager" list has 2 items
|
||||||
|
|
||||||
|
Scenario: Add spatial container
|
||||||
|
Given an empty IFC project
|
||||||
|
And I look at the "Spatial Decomposition" panel
|
||||||
|
And I set the "subelement_class" property to "IfcExternalSpatialElement"
|
||||||
|
When I click "ADD"
|
||||||
|
Then the "BIM_UL_containers_manager" list has 5 items
|
||||||
|
|||||||
@@ -310,7 +310,7 @@ def i_set_the_prop_property_to_value(prop, value):
|
|||||||
elif spied_prop["prop_type"] == "INTEGER":
|
elif spied_prop["prop_type"] == "INTEGER":
|
||||||
setattr(spied_prop["props"], spied_prop["name"], int(value))
|
setattr(spied_prop["props"], spied_prop["name"], int(value))
|
||||||
elif spied_prop["prop_type"] == "ENUM":
|
elif spied_prop["prop_type"] == "ENUM":
|
||||||
enum_identifier = [i for i in spied_prop["enum_items"] if i[1] == value]
|
enum_identifier = [i for i in spied_prop["enum_items"] if i is not None and i[1] == value]
|
||||||
if not enum_identifier:
|
if not enum_identifier:
|
||||||
assert False, f"Could not find value {value} in enum {spied_prop['enum_items']}"
|
assert False, f"Could not find value {value} in enum {spied_prop['enum_items']}"
|
||||||
setattr(spied_prop["props"], spied_prop["name"], enum_identifier[0][0])
|
setattr(spied_prop["props"], spied_prop["name"], enum_identifier[0][0])
|
||||||
@@ -333,6 +333,22 @@ def the_name_list_has_total_items(name, total):
|
|||||||
assert False, f"List {name} not found in {panel_spy.spied_lists}"
|
assert False, f"List {name} not found in {panel_spy.spied_lists}"
|
||||||
|
|
||||||
|
|
||||||
|
@when(parsers.parse('I select the "{item_name}" item in the "{list_name}" list'))
|
||||||
|
def i_select_the_item_name_item_in_the_list_name_list(item_name, list_name):
|
||||||
|
panel_spy.refresh_spy()
|
||||||
|
for spied_list in panel_spy.spied_lists:
|
||||||
|
if list_name == spied_list["listtype_name"]:
|
||||||
|
item_names = []
|
||||||
|
for i, item in enumerate(getattr(spied_list["dataptr"], spied_list["propname"])):
|
||||||
|
item_names.append(item.name)
|
||||||
|
if item.name == item_name:
|
||||||
|
setattr(spied_list["active_dataptr"], spied_list["active_propname"], i)
|
||||||
|
panel_spy.is_spy_dirty = True
|
||||||
|
return
|
||||||
|
assert False, f"Could not find item {item_name} in {item_names}"
|
||||||
|
assert False, f"List {list_name} not found in {panel_spy.spied_lists}"
|
||||||
|
|
||||||
|
|
||||||
@when("I load a new pset template file")
|
@when("I load a new pset template file")
|
||||||
def i_load_a_new_pset_template_file():
|
def i_load_a_new_pset_template_file():
|
||||||
IfcStore.pset_template_path = bpy.context.scene.BIMPsetTemplateProperties.pset_template_files
|
IfcStore.pset_template_path = bpy.context.scene.BIMPsetTemplateProperties.pset_template_files
|
||||||
@@ -519,6 +535,7 @@ def i_deselect_all_objects():
|
|||||||
|
|
||||||
@given(parsers.parse('the object "{name}" is selected'))
|
@given(parsers.parse('the object "{name}" is selected'))
|
||||||
@when(parsers.parse('the object "{name}" is selected'))
|
@when(parsers.parse('the object "{name}" is selected'))
|
||||||
|
@then(parsers.parse('the object "{name}" is selected'))
|
||||||
def the_object_name_is_selected(name):
|
def the_object_name_is_selected(name):
|
||||||
i_deselect_all_objects()
|
i_deselect_all_objects()
|
||||||
additionally_the_object_name_is_selected(name)
|
additionally_the_object_name_is_selected(name)
|
||||||
|
|||||||
Reference in New Issue
Block a user