3
0

hydra_AtomEditorComponents_ChromaticAberrationAdded.py 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  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. class Tests:
  7. chromatic_aberration_creation = (
  8. "Chromatic Aberration Entity successfully created",
  9. "P0: Chromatic Aberration Entity failed to be created")
  10. chromatic_aberration_component = (
  11. "Entity has a Chromatic Aberration component",
  12. "P0: Entity failed to find Chromatic Aberration component")
  13. chromatic_aberration_component_removal = (
  14. "Chromatic Aberration component successfully removed",
  15. "P0: Chromatic Aberration component failed to be removed")
  16. removal_undo = (
  17. "UNDO Chromatic Aberration component removal success",
  18. "P0: UNDO Chromatic Aberration component removal failed")
  19. chromatic_aberration_disabled = (
  20. "Chromatic Aberration component disabled",
  21. "P0: Chromatic Aberration component was not disabled")
  22. postfx_layer_component = (
  23. "Entity has a PostFX Layer component",
  24. "P0: Entity did not have an PostFX Layer component")
  25. chromatic_aberration_enabled = (
  26. "Chromatic Aberration component enabled",
  27. "P0: Chromatic Aberration component was not enabled")
  28. enable_chromatic_aberration_parameter_enabled = (
  29. "Enable Chromatic Aberration parameter enabled",
  30. "P0: Enable Chromatic Aberration parameter was not enabled")
  31. enable_chromatic_aberration_parameter_disabled = (
  32. "Enable Chromatic Aberration parameter disabled",
  33. "P1: Enable Chromatic Aberration parameter was not disabled")
  34. enabled_override_parameter_enabled = (
  35. "Enabled Override parameter enabled",
  36. "P1: Enabled Override parameter was not enabled")
  37. enabled_override_parameter_disabled = (
  38. "Enabled Override parameter disabled",
  39. "P1: Enabled Override parameter was not disabled")
  40. strength_override_min = (
  41. "Strength Override parameter set to minimum value",
  42. "P1: Strength Override parameter failed to be set to minimum value")
  43. strength_override_max = (
  44. "Strength Override parameter set to maximum value",
  45. "P1: Strength Override parameter failed to be set to maximum value")
  46. blend_override_min = (
  47. "Blend Override parameter set to minimum value",
  48. "P1: Blend Override parameter failed to be set to minimum value")
  49. blend_override_max = (
  50. "Blend Override parameter set to maximum value",
  51. "P1: Blend Override parameter failed to be set to maximum value")
  52. strength_min = (
  53. "Strength parameter set to minimum value",
  54. "P1: Strength parameter failed to be set to minimum value")
  55. strength_max = (
  56. "Strength parameter set to a maximum value",
  57. "P1: Strength parameter failed to be set to maximum value")
  58. blend_min = (
  59. "Blend parameter set to minimum value",
  60. "P1: Blend parameter failed to be set to minimum value")
  61. blend_max = (
  62. "Blend parameter set to maximum value",
  63. "P1: Blend parameter failed to be set to maximum value")
  64. enter_game_mode = (
  65. "Entered game mode",
  66. "P0: Failed to enter game mode")
  67. exit_game_mode = (
  68. "Exited game mode",
  69. "P0: Couldn't exit game mode")
  70. is_visible = (
  71. "Entity is visible",
  72. "P0: Entity was not visible")
  73. is_hidden = (
  74. "Entity is hidden",
  75. "P0: Entity was not hidden")
  76. entity_deleted = (
  77. "Entity deleted",
  78. "P0: Entity was not deleted")
  79. deletion_undo = (
  80. "UNDO deletion success",
  81. "P0: UNDO deletion failed")
  82. deletion_redo = (
  83. "REDO deletion success",
  84. "P0: REDO deletion failed")
  85. def AtomEditorComponents_ChromaticAberration_AddedToEntity():
  86. """
  87. Summary:
  88. Tests the Chromatic Aberration component can be added to an entity and has the expected functionality.
  89. Test setup:
  90. - Wait for Editor idle loop.
  91. - Open the "Base" level.
  92. Expected Behavior:
  93. The component can be added, used in game mode, hidden/shown, deleted, and has accurate required components.
  94. Creation and deletion undo/redo should also work.
  95. Test Steps:
  96. 1) Create an Chromatic Aberration entity with no components.
  97. 2) Add Chromatic Aberration component to Chromatic Aberration entity.
  98. 3) Remove the Chromatic Aberration component.
  99. 4) Undo Chromatic Aberration component removal.
  100. 5) Verify Chromatic Aberration component not enabled.
  101. 6) Add PostFX Layer component since it is required by the Chromatic Aberration component.
  102. 7) Verify Chromatic Aberration component is enabled.
  103. 8) Enable/Disable the "Enable Chromatic Aberration" parameter.
  104. 9) Enable/Disable the Enabled Override parameter.
  105. 10) Update the Strength Override parameter to min/max values.
  106. 11) Update the Blend Override parameter to min/max values.
  107. 12) Update the Strength parameter to min/max values.
  108. 13) Update the Blend parameter to min/max values.
  109. 14) Enter/Exit game mode.
  110. 15) Test IsHidden.
  111. 16) Test IsVisible.
  112. 17) Delete Chromatic Aberration entity.
  113. 18) UNDO deletion.
  114. 19) REDO deletion.
  115. 20) Look for errors and asserts.
  116. :return: None
  117. """
  118. import azlmbr.legacy.general as general
  119. import azlmbr.math as math
  120. from editor_python_test_tools.editor_entity_utils import EditorEntity
  121. from editor_python_test_tools.wait_utils import PrefabWaiter
  122. from editor_python_test_tools.utils import Report, Tracer, TestHelper
  123. from Atom.atom_utils.atom_constants import AtomComponentProperties
  124. with Tracer() as error_tracer:
  125. # Test setup begins.
  126. # Setup: Wait for Editor idle loop before executing Python hydra scripts then open "Base" level.
  127. TestHelper.init_idle()
  128. TestHelper.open_level("Graphics", "base_empty")
  129. # Test steps begin.
  130. # 1. Create an Chromatic Aberration entity with no components.
  131. chromatic_aberration_entity = EditorEntity.create_editor_entity(AtomComponentProperties.chromatic_aberration())
  132. Report.critical_result(Tests.chromatic_aberration_creation, chromatic_aberration_entity.exists())
  133. # 2. Add Chromatic Aberration component to Chromatic Aberration entity.
  134. chromatic_aberration_component = chromatic_aberration_entity.add_component(AtomComponentProperties.chromatic_aberration())
  135. Report.critical_result(Tests.chromatic_aberration_component,
  136. chromatic_aberration_entity.has_component(AtomComponentProperties.chromatic_aberration()))
  137. # 3. Remove the Chromatic Aberration component.
  138. chromatic_aberration_component.remove()
  139. general.idle_wait_frames(1)
  140. Report.critical_result(Tests.chromatic_aberration_component_removal,
  141. not chromatic_aberration_entity.has_component(AtomComponentProperties.chromatic_aberration()))
  142. # 4. Undo Chromatic Aberration component removal.
  143. general.undo()
  144. general.idle_wait_frames(1)
  145. Report.result(Tests.removal_undo,
  146. chromatic_aberration_entity.has_component(AtomComponentProperties.chromatic_aberration()))
  147. # 5. Verify Chromatic Aberration component not enabled.
  148. Report.result(Tests.chromatic_aberration_disabled, not chromatic_aberration_component.is_enabled())
  149. # 6. Add PostFX Layer component since it is required by the Chromatic Aberration component.
  150. chromatic_aberration_entity.add_component(AtomComponentProperties.postfx_layer())
  151. general.idle_wait_frames(1)
  152. Report.result(Tests.postfx_layer_component,
  153. chromatic_aberration_entity.has_component(AtomComponentProperties.postfx_layer()))
  154. # 7. Verify Chromatic Aberration component is enabled.
  155. Report.result(Tests.chromatic_aberration_enabled, chromatic_aberration_component.is_enabled())
  156. # 8. Enable/Disable the "Enable Chromatic Aberration" parameter.
  157. # Enable the "Enable Chromatic Aberration" parameter.
  158. chromatic_aberration_component.set_component_property_value(
  159. AtomComponentProperties.chromatic_aberration('Enable Chromatic Aberration'), True)
  160. Report.result(
  161. Tests.enable_chromatic_aberration_parameter_enabled,
  162. chromatic_aberration_component.get_component_property_value(
  163. AtomComponentProperties.chromatic_aberration('Enable Chromatic Aberration')) is True)
  164. # Disable the "Enable Chromatic Aberration" parameter.
  165. chromatic_aberration_component.set_component_property_value(
  166. AtomComponentProperties.chromatic_aberration('Enable Chromatic Aberration'), False)
  167. Report.result(
  168. Tests.enable_chromatic_aberration_parameter_disabled,
  169. chromatic_aberration_component.get_component_property_value(
  170. AtomComponentProperties.chromatic_aberration('Enable Chromatic Aberration')) is False)
  171. # Re-enable the "Enable Chromatic Aberration" parameter for game mode verification.
  172. chromatic_aberration_component.set_component_property_value(
  173. AtomComponentProperties.chromatic_aberration('Enable Chromatic Aberration'), True)
  174. general.idle_wait_frames(1)
  175. # 9. Enable/Disable the Enabled Override parameter.
  176. # Disable the Enabled Override parameter.
  177. chromatic_aberration_component.set_component_property_value(
  178. AtomComponentProperties.chromatic_aberration('Enabled Override'), False)
  179. Report.result(
  180. Tests.enabled_override_parameter_disabled,
  181. chromatic_aberration_component.get_component_property_value(
  182. AtomComponentProperties.chromatic_aberration('Enabled Override')) is False)
  183. # Enable the Enabled Override parameter.
  184. chromatic_aberration_component.set_component_property_value(
  185. AtomComponentProperties.chromatic_aberration('Enabled Override'), True)
  186. Report.result(
  187. Tests.enabled_override_parameter_enabled,
  188. chromatic_aberration_component.get_component_property_value(
  189. AtomComponentProperties.chromatic_aberration('Enabled Override')) is True)
  190. # 10. Update the Strength Override parameter to min/max values.
  191. # Update the Strength Override parameter to minimum value.
  192. chromatic_aberration_component.set_component_property_value(
  193. AtomComponentProperties.chromatic_aberration('Strength Override'), 0.0)
  194. Report.result(
  195. Tests.strength_override_min,
  196. chromatic_aberration_component.get_component_property_value(
  197. AtomComponentProperties.chromatic_aberration('Strength Override')) == 0.0)
  198. # Update the Strength Override parameter to maximum value.
  199. chromatic_aberration_component.set_component_property_value(
  200. AtomComponentProperties.chromatic_aberration('Strength Override'), 1.0)
  201. Report.result(
  202. Tests.strength_override_max,
  203. chromatic_aberration_component.get_component_property_value(
  204. AtomComponentProperties.chromatic_aberration('Strength Override')) == 1.0)
  205. # 11. Update the Blend Override parameter to min/max values.
  206. # Update the Blend Override parameter to minimum value.
  207. chromatic_aberration_component.set_component_property_value(
  208. AtomComponentProperties.chromatic_aberration('Blend Override'), 0.0)
  209. Report.result(
  210. Tests.blend_override_min,
  211. chromatic_aberration_component.get_component_property_value(
  212. AtomComponentProperties.chromatic_aberration('Blend Override')) == 0.0)
  213. # Update the Blend Override parameter to maximum value.
  214. chromatic_aberration_component.set_component_property_value(
  215. AtomComponentProperties.chromatic_aberration('Blend Override'), 1.0)
  216. Report.result(
  217. Tests.blend_override_max,
  218. chromatic_aberration_component.get_component_property_value(
  219. AtomComponentProperties.chromatic_aberration('Blend Override')) == 1.0)
  220. general.idle_wait_frames(1)
  221. # 12. Update the Strength parameter to min/max values.
  222. # Update the Strength parameter to minimum value.
  223. chromatic_aberration_component.set_component_property_value(
  224. AtomComponentProperties.chromatic_aberration('Strength'), 0.0)
  225. Report.result(
  226. Tests.strength_min,
  227. chromatic_aberration_component.get_component_property_value(
  228. AtomComponentProperties.chromatic_aberration('Strength')) == 0.0)
  229. # Update the Strength parameter to a max value.
  230. chromatic_aberration_component.set_component_property_value(
  231. AtomComponentProperties.chromatic_aberration('Strength'), 1.0)
  232. Report.result(
  233. Tests.strength_max,
  234. chromatic_aberration_component.get_component_property_value(
  235. AtomComponentProperties.chromatic_aberration('Strength')) == 1.0)
  236. # 13. Update the Blend parameter to min/max value.
  237. # Update the Blend parameter to minimum value.
  238. chromatic_aberration_component.set_component_property_value(
  239. AtomComponentProperties.chromatic_aberration('Blend'), 0.0)
  240. Report.result(
  241. Tests.blend_min,
  242. chromatic_aberration_component.get_component_property_value(
  243. AtomComponentProperties.chromatic_aberration('Blend')) == 0.0)
  244. # Update the Blend parameter to maximum value.
  245. chromatic_aberration_component.set_component_property_value(
  246. AtomComponentProperties.chromatic_aberration('Blend'), 1.0)
  247. Report.result(
  248. Tests.blend_max,
  249. chromatic_aberration_component.get_component_property_value(
  250. AtomComponentProperties.chromatic_aberration('Blend')) == 1.0)
  251. # 14. Enter/Exit game mode.
  252. TestHelper.enter_game_mode(Tests.enter_game_mode)
  253. general.idle_wait_frames(1)
  254. TestHelper.exit_game_mode(Tests.exit_game_mode)
  255. # 15. Test IsHidden.
  256. chromatic_aberration_entity.set_visibility_state(False)
  257. Report.result(Tests.is_hidden, chromatic_aberration_entity.is_hidden() is True)
  258. # 16. Test IsVisible.
  259. chromatic_aberration_entity.set_visibility_state(True)
  260. general.idle_wait_frames(1)
  261. Report.result(Tests.is_visible, chromatic_aberration_entity.is_visible() is True)
  262. # 17. Delete Chromatic Aberration entity.
  263. chromatic_aberration_entity.delete()
  264. PrefabWaiter.wait_for_propagation()
  265. Report.result(Tests.entity_deleted, not chromatic_aberration_entity.exists())
  266. # 18. UNDO deletion.
  267. general.undo()
  268. PrefabWaiter.wait_for_propagation()
  269. Report.result(Tests.deletion_undo, chromatic_aberration_entity.exists())
  270. # 19. REDO deletion.
  271. general.redo()
  272. PrefabWaiter.wait_for_propagation()
  273. Report.result(Tests.deletion_redo, not chromatic_aberration_entity.exists())
  274. # 20. Look for errors and asserts.
  275. TestHelper.wait_for_condition(lambda: error_tracer.has_errors or error_tracer.has_asserts, 1.0)
  276. for error_info in error_tracer.errors:
  277. Report.info(f"Error: {error_info.filename} {error_info.function} | {error_info.message}")
  278. for assert_info in error_tracer.asserts:
  279. Report.info(f"Assert: {assert_info.filename} {assert_info.function} | {assert_info.message}")
  280. if __name__ == "__main__":
  281. from editor_python_test_tools.utils import Report
  282. Report.start_test(AtomEditorComponents_ChromaticAberration_AddedToEntity)