CharacterController_SwitchLevels.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. """
  2. Copyright (c) Contributors to the Open 3D Engine Project.
  3. For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. SPDX-License-Identifier: Apache-2.0 OR MIT
  5. """
  6. # Test case ID : C14654881
  7. # Test Case Title : Switching levels from a level containing a character controller component
  8. # should not lead to a crash
  9. # fmt: off
  10. class Tests:
  11. # level
  12. level1_enter_game_mode = ("Entered game mode level 1", "Failed to enter game mode level 1")
  13. level1_exit_game_mode = ("Exited game mode level 1", "Couldn't exit game mode level 1")
  14. CharacterController_found = ("Character controller was found", "Character controller was not found")
  15. level2_enter_game_mode = ("Entered game mode level 2", "Failed to enter game mode level 2")
  16. level2_exit_game_mode = ("Exited game mode level 2", "Couldn't exit game mode level 2")
  17. # fmt: on
  18. def CharacterController_SwitchLevels():
  19. """
  20. Summary:
  21. Runs an automated test to verify that switching levels from a level containing a character controller component
  22. does not lead to a crash
  23. Level Description:
  24. There are 2 levels used in this test:
  25. One contains an entity with a PhysX Character Controller component,
  26. the other one is empty.
  27. Expected Behavior:
  28. It should enter and then exit game mode without any errors in both levels.
  29. Test Steps:
  30. 1.1) Load the level with PhysX Character Controller
  31. 1.2) Enter game mode
  32. 1.3) Find the entity with PhysX Character Controller component
  33. 1.4) Exit game mode
  34. 2.1) Load the empty level
  35. 2.2) Enter game mode
  36. 2.3) Exit game mode
  37. 3) Close editor
  38. """
  39. import os
  40. import sys
  41. from editor_python_test_tools.utils import Report
  42. from editor_python_test_tools.utils import TestHelper as helper
  43. import azlmbr.legacy.general as general
  44. import azlmbr.bus
  45. import editor_python_test_tools.hydra_editor_utils as hydra
  46. # Constants
  47. WAIT_FOR_ERRORS = 3.0
  48. helper.init_idle()
  49. # 1.1) Load level 1 (with character controller)
  50. helper.open_level("Physics", "CharacterController_SwitchLevels")
  51. # 1.2) Enter game mode
  52. helper.enter_game_mode(Tests.level1_enter_game_mode)
  53. # 1.3) Find and validate character controller entity
  54. characterController_id = general.find_game_entity("CharacterController")
  55. Report.critical_result(Tests.CharacterController_found, characterController_id.IsValid())
  56. # 1.4) Exit Game mode
  57. helper.exit_game_mode(Tests.level1_exit_game_mode)
  58. # 2.1) Load level 2 (empty level)
  59. hydra.open_base_level()
  60. # 2.2) Enter game mode
  61. helper.enter_game_mode(Tests.level2_enter_game_mode)
  62. general.idle_wait(WAIT_FOR_ERRORS)
  63. # 2.3) Exit Game mode
  64. helper.exit_game_mode(Tests.level2_exit_game_mode)
  65. if __name__ == "__main__":
  66. from editor_python_test_tools.utils import Report
  67. Report.start_test(CharacterController_SwitchLevels)