Undo tests - proof of concept

Created some simple undo tests.

This "flip wall and ctrl-z" test actually is crashing blender if I do it manually - so I guess undo in background mode is still kind of different.
This commit is contained in:
Andrej730
2023-02-22 18:19:32 +05:00
parent 68a8c7a235
commit ff7d93e66c
2 changed files with 41 additions and 0 deletions
@@ -467,3 +467,30 @@ Scenario: Regenerate a beam - after doing nothing interesting
Then the object "IfcBeam/Beam" dimensions are "0.1,0.2,3"
And the object "IfcBeam/Beam" bottom left corner is at "0,-0.05,-0.1"
And the object "IfcBeam/Beam" top right corner is at "3,0.05,0.1"
Scenario: Undo test - create a wall and couple windows and undo the last window
Given an empty IFC project
And I load the demo construction library
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
And I press "bim.hotkey(hotkey='S_A')"
And I set "scene.BIMModelProperties.ifc_class" to "IfcWindowType"
And I press "bim.hotkey(hotkey='S_A')"
And I prepare to undo
And the object "IfcWall/Wall" is selected
And I set "scene.BIMModelProperties.ifc_class" to "IfcWindowType"
And I press "bim.hotkey(hotkey='S_A')"
And I undo
Then nothing happens
Scenario: Undo test - create a wall with window opening, flip it and undo
Given an empty IFC project
And I load the demo construction library
And I set "scene.BIMModelProperties.ifc_class" to "IfcWallType"
And I press "bim.hotkey(hotkey='S_A')"
And I set "scene.BIMModelProperties.ifc_class" to "IfcWindowType"
And I press "bim.hotkey(hotkey='S_A')"
And the object "IfcWall/Wall" is selected
And I prepare to undo
And I press "bim.hotkey(hotkey='S_F')"
And I undo
Then nothing happens
+14
View File
@@ -693,6 +693,20 @@ def move_cursor_bottom_left():
bpy.context.window.cursor_warp(10, 10)
@given(parsers.parse("I prepare to undo"))
@when(parsers.parse("I prepare to undo"))
@then(parsers.parse("I prepare to undo"))
def hit_undo():
bpy.ops.ed.undo_push(message="UNDO STEP")
@given(parsers.parse("I undo"))
@when(parsers.parse("I undo"))
@then(parsers.parse("I undo"))
def hit_undo():
bpy.ops.ed.undo_push(message="UNDO STEP")
bpy.ops.ed.undo()
# These definitions are not to be used in tests but simply in debugging failing tests