mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-10 14:07:43 +00:00
Fix failing tests and optimise brick tests.
This commit is contained in:
@@ -3,28 +3,33 @@ Feature: Brick
|
||||
|
||||
Scenario: Create Brick project
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
When I press "bim.new_brick_file"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Load Brick project
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
When I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: View Brick class
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
When I press "bim.view_brick_class(brick_class='Building')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: View Brick item
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
When I press "bim.view_brick_item(item='https://example.org/digitaltwin#lighting_zone_1')"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Rewind Brick class
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
And I press "bim.view_brick_class(brick_class='Building')"
|
||||
When I press "bim.rewind_brick_class"
|
||||
@@ -32,19 +37,23 @@ Scenario: Rewind Brick class
|
||||
|
||||
Scenario: Close Brick project
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
When I press "bim.close_brick_project"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Close Brick project then create Brick project
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
And I press "bim.close_brick_project"
|
||||
And the Brickschema is stubbed
|
||||
When I press "bim.new_brick_file"
|
||||
Then nothing happens
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add Brick - vanilla Brick with no IFC
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.new_brick_file"
|
||||
And I set "scene.BIMBrickProperties.namespace" to "https://example.org/digitaltwin#"
|
||||
And I set "scene.BIMBrickProperties.new_brick_label" to "abc123"
|
||||
@@ -53,6 +62,7 @@ Scenario: Add Brick - vanilla Brick with no IFC
|
||||
|
||||
Scenario: Add Brick - from geometry without a Brick IFC library
|
||||
Given an empty IFC project
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.new_brick_file"
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
@@ -66,6 +76,7 @@ Scenario: Add Brick - from geometry without a Brick IFC library
|
||||
|
||||
Scenario: Add Brick - from geometry with a Brick IFC library
|
||||
Given an empty IFC project
|
||||
And the Brickschema is stubbed
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcChiller"
|
||||
@@ -79,12 +90,14 @@ Scenario: Add Brick - from geometry with a Brick IFC library
|
||||
|
||||
Scenario: Refresh Brick viewer
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.new_brick_file"
|
||||
When I press "bim.refresh_brick_viewer"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Add Brick relation - vanilla Brick with no IFC
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
And I set "scene.BIMBrickProperties.namespace" to "https://example.org/digitaltwin#"
|
||||
And I press "bim.view_brick_class(brick_class='Lighting_Zone')"
|
||||
@@ -96,16 +109,17 @@ Scenario: Add Brick relation - vanilla Brick with no IFC
|
||||
|
||||
Scenario: Add Brick relation - vanilla Brick with no IFC and with split screen
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
And I set "scene.BIMBrickProperties.namespace" to "https://example.org/digitaltwin#"
|
||||
And I set "scene.BIMBrickProperties.brick_entity_create_type" to "Location"
|
||||
And I set "scene.BIMBrickProperties.new_brick_label" to "abc123"
|
||||
And I set "scene.BIMBrickProperties.brick_entity_class" to "https://brickschema.org/schema/Brick#Room"
|
||||
And I set "scene.BIMBrickProperties.brick_entity_class" to "https://brickschema.org/schema/Brick#Building"
|
||||
And I press "bim.add_brick"
|
||||
And I press "bim.view_brick_class(brick_class='Lighting_Zone')"
|
||||
And I set "scene.BIMBrickProperties.active_brick_index" to "0"
|
||||
And I set "scene.BIMBrickProperties.split_screen_toggled" to "True"
|
||||
And I press "bim.view_brick_class(brick_class='Room', split_screen=True)"
|
||||
And I press "bim.view_brick_class(brick_class='Building', split_screen=True)"
|
||||
And I set "scene.BIMBrickProperties.split_screen_active_brick_index" to "0"
|
||||
And I set "scene.BIMBrickProperties.brick_create_relations_toggled" to "True"
|
||||
When I press "bim.add_brick_relation"
|
||||
@@ -113,6 +127,7 @@ Scenario: Add Brick relation - vanilla Brick with no IFC and with split screen
|
||||
|
||||
Scenario: Remove Brick - vanilla Brick
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
And I press "bim.view_brick_class(brick_class='Lighting_Zone')"
|
||||
And I set "scene.BIMBrickProperties.active_brick_index" to "0"
|
||||
@@ -121,6 +136,7 @@ Scenario: Remove Brick - vanilla Brick
|
||||
|
||||
Scenario: Remove Brick - with a Brick IFC library reference
|
||||
Given an empty IFC project
|
||||
And the Brickschema is stubbed
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcChiller"
|
||||
@@ -129,13 +145,14 @@ Scenario: Remove Brick - with a Brick IFC library reference
|
||||
And the object "IfcChiller/Cube" is selected
|
||||
And I set "scene.BIMBrickProperties.namespace" to "https://example.org/digitaltwin#"
|
||||
And I press "bim.add_brick"
|
||||
And I press "bim.view_brick_class(brick_class='Chiller')"
|
||||
And I press "bim.view_brick_class(brick_class='Equipment')"
|
||||
And I set "scene.BIMBrickProperties.active_brick_index" to "0"
|
||||
When I press "bim.remove_brick"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Change viewer list root
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
And I set "scene.BIMBrickProperties.set_list_root_toggled" to "True"
|
||||
When I set "scene.BIMBrickProperties.brick_list_root" to "Location"
|
||||
@@ -143,6 +160,7 @@ Scenario: Change viewer list root
|
||||
|
||||
Scenario: Change viewer list root - split screen
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
And I set "scene.BIMBrickProperties.set_list_root_toggled" to "True"
|
||||
And I set "scene.BIMBrickProperties.split_screen_toggled" to "True"
|
||||
@@ -151,17 +169,20 @@ Scenario: Change viewer list root - split screen
|
||||
|
||||
Scenario: Toggle split screen
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
When I set "scene.BIMBrickProperties.split_screen_toggled" to "True"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Set active namespace
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
When I set "scene.BIMBrickProperties.namespace" to "https://example.org/digitaltwin#"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Bind new namespace
|
||||
Given an empty Blender session
|
||||
And the Brickschema is stubbed
|
||||
And I set "scene.BIMBrickProperties.new_brick_namespace_alias" to "digitaltwin2"
|
||||
And I set "scene.BIMBrickProperties.new_brick_namespace_uri" to "https://example.org/digitaltwin2#"
|
||||
When I press "bim.add_brick_namespace"
|
||||
@@ -169,12 +190,14 @@ Scenario: Bind new namespace
|
||||
|
||||
Scenario: Convert brick project
|
||||
Given an empty IFC project
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
When I press "bim.convert_brick_project"
|
||||
Then nothing happens
|
||||
|
||||
Scenario: Convert IFC to brick
|
||||
Given an empty IFC project
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
And I press "bim.convert_brick_project"
|
||||
And I set "scene.BIMBrickProperties.namespace" to "https://example.org/digitaltwin#"
|
||||
@@ -188,6 +211,7 @@ Scenario: Convert IFC to brick
|
||||
|
||||
Scenario: Assign brick reference
|
||||
Given an empty IFC project
|
||||
And the Brickschema is stubbed
|
||||
And I press "bim.load_brick_project(filepath='{cwd}/test/files/spaces.ttl')"
|
||||
And I set "scene.BIMBrickProperties.namespace" to "https://example.org/digitaltwin#"
|
||||
And I set "scene.BIMBrickProperties.brick_entity_class" to "https://brickschema.org/schema/Brick#Chiller"
|
||||
@@ -201,4 +225,4 @@ Scenario: Assign brick reference
|
||||
And the object "IfcChiller/Cube" is selected
|
||||
And I press "bim.convert_brick_project"
|
||||
When I press "bim.assign_brick_reference"
|
||||
Then nothing happens
|
||||
Then nothing happens
|
||||
|
||||
@@ -47,6 +47,7 @@ Scenario: Add representation - add a representation with a scale factor applied
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
When the object "Cube" is scaled to "2"
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
Then the object "IfcWall/Cube" has no scale
|
||||
@@ -58,6 +59,7 @@ Scenario: Add representation - add a representation with a scale factor removed
|
||||
And I press "object.duplicate_move_linked"
|
||||
And the object "Cube" is selected
|
||||
When the object "Cube" is scaled to "2"
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
Then the object "IfcWall/Cube" has no scale
|
||||
@@ -179,6 +181,7 @@ Scenario: Update representation - updating a tessellation
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I press "bim.update_representation(obj='IfcWall/Cube')"
|
||||
@@ -188,6 +191,7 @@ Scenario: Update representation - updating a layered extrusion
|
||||
Given an empty IFC project
|
||||
And I add a cube
|
||||
And the object "Cube" is selected
|
||||
And I set "scene.BIMRootProperties.ifc_product" to "IfcElement"
|
||||
And I set "scene.BIMRootProperties.ifc_class" to "IfcWall"
|
||||
And I press "bim.assign_class"
|
||||
And I add an empty
|
||||
@@ -318,7 +322,7 @@ Scenario: Override duplicate move - copying a coloured representation
|
||||
When I duplicate the selected objects
|
||||
And I press "export_ifc.bim(filepath='{cwd}/test/files/temp/export.ifc')"
|
||||
And an empty Blender session is started
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/temp/export.ifc')"
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/temp/export.ifc', should_start_fresh_session=False)"
|
||||
Then the material "Material" colour is "1,0,0,1"
|
||||
And the object "IfcWall/Cube" has the material "Material"
|
||||
And the object "IfcWall/Cube.001" has the material "Material"
|
||||
|
||||
@@ -456,7 +456,7 @@ Scenario: Export IFC - with changed style colour synchronised
|
||||
When the material "Material" colour is set to "1,0,0,1"
|
||||
And I press "export_ifc.bim(filepath='{cwd}/test/files/temp/export.ifc')"
|
||||
And an empty Blender session is started
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/temp/export.ifc')"
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/temp/export.ifc', should_start_fresh_session=False)"
|
||||
Then the material "Material" colour is "1,0,0,1"
|
||||
|
||||
Scenario: Export IFC - with changed style element synchronised
|
||||
@@ -471,5 +471,5 @@ Scenario: Export IFC - with changed style element synchronised
|
||||
And the material "Material.001" colour is set to "1,0,0,1"
|
||||
And I press "export_ifc.bim(filepath='{cwd}/test/files/temp/export.ifc')"
|
||||
And an empty Blender session is started
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/temp/export.ifc')"
|
||||
And I press "bim.load_project(filepath='{cwd}/test/files/temp/export.ifc', should_start_fresh_session=False)"
|
||||
Then the material "Material.001" colour is "1,0,0,1"
|
||||
|
||||
@@ -24,6 +24,7 @@ import ifcopenshell
|
||||
import blenderbim.tool as tool
|
||||
import blenderbim.bim
|
||||
from blenderbim.bim.ifc import IfcStore
|
||||
from blenderbim.tool.brick import BrickStore
|
||||
from blenderbim.bim.module.model.data import AuthoringData
|
||||
from pytest_bdd import scenarios, given, when, then, parsers
|
||||
from mathutils import Vector
|
||||
@@ -71,6 +72,8 @@ def an_empty_blender_session():
|
||||
if len(bpy.data.objects) > 0:
|
||||
bpy.data.batch_remove(bpy.data.objects)
|
||||
bpy.ops.outliner.orphans_purge(do_local_ids=True, do_linked_ids=True, do_recursive=True)
|
||||
if len(bpy.data.materials) > 0:
|
||||
bpy.data.batch_remove(bpy.data.materials)
|
||||
|
||||
# default project settings
|
||||
bpy.context.scene.unit_settings.system = "METRIC"
|
||||
@@ -92,6 +95,13 @@ def an_empty_ifc_2x3_project():
|
||||
bpy.ops.bim.create_project()
|
||||
|
||||
|
||||
@given("the Brickschema is stubbed")
|
||||
def the_brickschema_is_stubbed():
|
||||
# This makes things run faster since we don't need to load the entire brick schema
|
||||
cwd = os.path.dirname(os.path.realpath(__file__))
|
||||
BrickStore.schema = os.path.join(cwd, "..", "files", "BrickStub.ttl")
|
||||
|
||||
|
||||
@when("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
|
||||
|
||||
Reference in New Issue
Block a user