""" All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or its licensors. For complete copyright and license terms please see the LICENSE at the root of this distribution (the "License"). All use of this software is governed by the License, or, if provided, by the license below or the license accompanying this file. Do not remove or modify any license notices. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. """ # Test case ID : C15425929 # Test Case Title : Verify that undo - redo operations do not create any error # fmt: off class Tests: entity_found = ("Entity was initially found", "Entity COULD NOT be found initially") entity_deleted = ("Entity was deleted", "Entity WAS NOT deleted") deletion_undone = ("Undo worked", "Undo DID NOT work") deletion_redone = ("Redo worked", "Redo DID NOT work") no_error_occurred = ("Undo/redo completed without errors", "An error occurred during undo/redo") # fmt: off def C15425929_Undo_Redo(): """ Summary: Tests that no error messages arise when using the undo and redo functions in the editor. Level Description: DeleteMe - an entity that just exists above the terrain with a sphere shape component on it. Steps: 1) Load level 2) Initially find the entity 3) Delete the entity 4) Undo the deletion 5) Redo the deletion 6) Look for errors 7) Close the editor Expected Behavior: The entity should be deleted, un-deleted, and re-deleted. :return: None """ import os import sys import ImportPathHelper as imports imports.init() from editor_python_test_tools.utils import Report from editor_python_test_tools.utils import TestHelper as helper from editor_python_test_tools.utils import Tracer import azlmbr.legacy.general as general helper.init_idle() # 1) Load the level helper.open_level("Physics", "C15425929_Undo_Redo") with Tracer() as error_tracer: # Entity to delete and undo and re-delete entity_name = "DeleteMe" # 2) Find entity initially entity_id = general.find_editor_entity(entity_name) Report.critical_result(Tests.entity_found, entity_id.IsValid()) # 3) Delete entity general.select_objects([entity_name]) general.delete_selected() entity_id = general.find_editor_entity(entity_name) Report.result(Tests.entity_deleted, not entity_id.IsValid()) # 4) Undo deletion general.undo() entity_id = general.find_editor_entity(entity_name) Report.result(Tests.deletion_undone, entity_id.IsValid()) # 5) Redo deletion general.redo() entity_id = general.find_editor_entity(entity_name) Report.result(Tests.deletion_redone, not entity_id.IsValid()) # 6) Look for errors helper.wait_for_condition(lambda: error_tracer.has_errors, 1.0) Report.result(Tests.no_error_occurred, not error_tracer.has_errors) if __name__ == "__main__": import ImportPathHelper as imports imports.init() from editor_python_test_tools.utils import Report Report.start_test(C15425929_Undo_Redo)