| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339 |
- """
- Copyright (c) Contributors to the Open 3D Engine Project.
- For complete copyright and license terms please see the LICENSE at the root of this distribution.
- SPDX-License-Identifier: Apache-2.0 OR MIT
- """
- class Tests:
- postfx_gradient_weight_creation = (
- "PostFX Gradient Weight Modifier Entity successfully created",
- "P0: PostFX Gradient Weight Modifier Entity failed to be created")
- postfx_gradient_weight_component = (
- "Entity has a PostFX Gradient Weight Modifier component",
- "P0: Entity failed to find PostFX Gradient Weight Modifier component")
- postfx_gradient_weight_component_removed = (
- "Entity has a PostFX Gradient Weight Modifier component",
- "P0: Entity failed to find PostFX Gradient Weight Modifier component")
- postfx_gradient_weight_disabled = (
- "PostFX Gradient Weight Modifier component disabled",
- "P0: PostFX Gradient Weight Modifier component was not disabled.")
- postfx_layer_component = (
- "Entity has a PostFX Layer component",
- "P0: Entity did not have an PostFX Layer component")
- postfx_gradient_weight_enabled = (
- "PostFX Gradient Weight Modifier component enabled",
- "P0: PostFX Gradient Weight Modifier component was not enabled.")
- enter_game_mode = (
- "Entered game mode",
- "P0: Failed to enter game mode")
- exit_game_mode = (
- "Exited game mode",
- "P0: Couldn't exit game mode")
- is_visible = (
- "Entity is visible",
- "P0: Entity was not visible")
- is_hidden = (
- "Entity is hidden",
- "P0: Entity was not hidden")
- entity_deleted = (
- "Entity deleted",
- "P0: Entity was not deleted")
- deletion_undo = (
- "UNDO deletion success",
- "P0: UNDO deletion failed")
- deletion_redo = (
- "REDO deletion success",
- "P0: REDO deletion failed")
- gradient_entity_id = (
- "Gradient Entity Id property set",
- "P1: 'Gradient Entity Id' property failed to set")
- opacity = (
- "Opacity property set",
- "P1: 'Opacity' property failed to set")
- invert_input = (
- "Invert Input property set",
- "P1: 'Invert Input' property failed to set")
- enable_levels = (
- "Enable Levels property set",
- "P1: 'Enable Levels' property failed to set")
- input_max = (
- "Input Max property set",
- "P1: 'Input Max' property failed to set")
- input_min = (
- "Input Min property set",
- "P1: 'Input Min' property failed to set")
- input_mid = (
- "Input Mid property set",
- "P1: 'Input Mid' property failed to set")
- output_max = (
- "Output Max property set",
- "P1: 'Output Max' property failed to set")
- output_min = (
- "Output Min property set",
- "P1: 'Output Min' property failed to set")
- enable_transform = (
- "Enable Transform property set",
- "P1: 'Enable Transform' property failed to set")
- scale = (
- "Scale property set",
- "P1: 'Scale' property failed to set")
- rotate = (
- "Rotate property set",
- "P1: 'Rotate' property failed to set")
- translate = (
- "Translate property set",
- "P1: 'Translate' property failed to set")
- def AtomEditorComponents_PostFXGradientWeightModifier_AddedToEntity():
- """
- Summary:
- Tests the PostFX Gradient Weight Modifier component can be added to an entity and has the expected functionality.
- Test setup:
- - Wait for Editor idle loop.
- - Open the "Base" level.
- Expected Behavior:
- The component can be added, used in game mode, hidden/shown, deleted, and has accurate required components.
- Creation and deletion undo/redo should also work.
- Test Steps:
- 1) Create a PostFX Gradient Weight Modifier entity with no components.
- 2) Add a PostFX Gradient Weight Modifier component to PostFX Gradient Weight Modifier entity.
- 3) Remove PostFX Gradient Weight Modifier component.
- 4) UNDO component removal.
- 5) Verify PostFX Gradient Weight Modifier component not enabled.
- 6) Add PostFX Layer component since it is required by the PostFX Gradient Weight Modifier component.
- 7) Verify PostFX Gradient Weight Modifier component is enabled.
- 8) Set 'Gradient Entity Id' property
- 9) Set 'Opacity' property
- 10) Toggle 'Invert Input' property
- 11) Toggle 'Enable Levels' property
- 12) Set 'Input Max' property
- 13) Set 'Input Min' property
- 14) Set 'Input Mid' property
- 15) Set 'Output Max' property
- 16) Set 'Output Min' property
- 17) Toggle 'Enable Transform' property
- 18) Set 'Scale' property
- 19) Set 'Rotate' property
- 20) Set 'Translate' property
- 21) Enter/Exit game mode.
- 22) Test IsHidden.
- 23) Test IsVisible.
- 24) Delete PostFX Gradient Weight Modifier entity.
- 25) UNDO deletion.
- 26) REDO deletion.
- 27) Look for errors.
- :return: None
- """
- import azlmbr.legacy.general as general
- from azlmbr.math import Vector3, Math_IsClose
- from editor_python_test_tools.editor_entity_utils import EditorEntity
- from editor_python_test_tools.utils import Report, Tracer, TestHelper
- from Atom.atom_utils.atom_constants import AtomComponentProperties
- with Tracer() as error_tracer:
- # Test setup begins.
- # Setup: Wait for Editor idle loop before executing Python hydra scripts then open "Base" level.
- TestHelper.init_idle()
- TestHelper.open_level("Graphics", "base_empty")
- # Test steps begin.
- # 1. Create a PostFX Gradient Weight Modifier entity with no components.
- postfx_gradient_weight_entity = EditorEntity.create_editor_entity(AtomComponentProperties.postfx_gradient())
- Report.critical_result(Tests.postfx_gradient_weight_creation, postfx_gradient_weight_entity.exists())
- # 2. Add a PostFX Gradient Weight Modifier component to PostFX Gradient Weight Modifier entity.
- postfx_gradient_weight_component = postfx_gradient_weight_entity.add_component(
- AtomComponentProperties.postfx_gradient())
- Report.critical_result(
- Tests.postfx_gradient_weight_component,
- postfx_gradient_weight_entity.has_component(AtomComponentProperties.postfx_gradient()))
- # 3. Remove PostFX Gradient Weight Modifier component.
- postfx_gradient_weight_component.remove()
- general.idle_wait_frames(1)
- Report.critical_result(
- Tests.postfx_gradient_weight_component_removed,
- not postfx_gradient_weight_entity.has_component(AtomComponentProperties.postfx_gradient()))
- # 4. UNDO component removal.
- general.undo()
- general.idle_wait_frames(1)
- Report.critical_result(
- Tests.postfx_gradient_weight_component,
- postfx_gradient_weight_entity.has_component(AtomComponentProperties.postfx_gradient()))
- # 5. Verify PostFX Gradient Weight Modifier component not enabled.
- Report.result(Tests.postfx_gradient_weight_disabled, not postfx_gradient_weight_component.is_enabled())
- # 6. Add PostFX Layer component since it is required by the PostFX Gradient Weight Modifier component.
- postfx_gradient_weight_entity.add_component(AtomComponentProperties.postfx_layer())
- Report.result(
- Tests.postfx_layer_component,
- postfx_gradient_weight_entity.has_component(AtomComponentProperties.postfx_layer()))
- # 7. Verify PostFX Gradient Weight Modifier component is enabled.
- Report.result(Tests.postfx_gradient_weight_enabled, postfx_gradient_weight_component.is_enabled())
- # 8. Set 'Gradient Entity Id' property
- gradient_entity = EditorEntity.create_editor_entity('Gradient Entity')
- gradient_entity.add_components(['FastNoise Gradient', 'Gradient Transform Modifier', 'Box Shape'])
- postfx_gradient_weight_component.set_component_property_value(
- AtomComponentProperties.postfx_gradient('Gradient Entity Id'), gradient_entity.id)
- Report.result(
- Tests.gradient_entity_id,
- postfx_gradient_weight_component.get_component_property_value(
- AtomComponentProperties.postfx_gradient('Gradient Entity Id')) == gradient_entity.id)
- # 9. Set 'Opacity' property
- postfx_gradient_weight_component.set_component_property_value(
- AtomComponentProperties.postfx_gradient('Opacity'), 0.9)
- Report.result(
- Tests.opacity,
- Math_IsClose(postfx_gradient_weight_component.get_component_property_value(
- AtomComponentProperties.postfx_gradient('Opacity')), 0.9))
- # 10. Toggle 'Invert Input' property
- postfx_gradient_weight_component.set_component_property_value(
- AtomComponentProperties.postfx_gradient('Invert Input'), True)
- Report.result(
- Tests.invert_input,
- postfx_gradient_weight_component.get_component_property_value(
- AtomComponentProperties.postfx_gradient('Invert Input')) is True)
- postfx_gradient_weight_component.set_component_property_value(
- AtomComponentProperties.postfx_gradient('Invert Input'), False)
- Report.result(
- Tests.invert_input,
- postfx_gradient_weight_component.get_component_property_value(
- AtomComponentProperties.postfx_gradient('Invert Input')) is False)
- # 11. Toggle 'Enable Levels' property
- postfx_gradient_weight_component.set_component_property_value(
- AtomComponentProperties.postfx_gradient('Enable Levels'), True)
- Report.result(
- Tests.enable_levels,
- postfx_gradient_weight_component.get_component_property_value(
- AtomComponentProperties.postfx_gradient('Enable Levels')) is True)
- # 12. Set 'Input Max' property
- postfx_gradient_weight_component.set_component_property_value(
- AtomComponentProperties.postfx_gradient('Input Max'), 0.9)
- Report.result(
- Tests.input_max,
- Math_IsClose(postfx_gradient_weight_component.get_component_property_value(
- AtomComponentProperties.postfx_gradient('Input Max')), 0.9))
- # 13. Set 'Input Min' property
- postfx_gradient_weight_component.set_component_property_value(
- AtomComponentProperties.postfx_gradient('Input Min'), 0.1)
- Report.result(
- Tests.input_min,
- Math_IsClose(postfx_gradient_weight_component.get_component_property_value(
- AtomComponentProperties.postfx_gradient('Input Min')), 0.1))
- # 14. Set 'Input Mid' property
- postfx_gradient_weight_component.set_component_property_value(
- AtomComponentProperties.postfx_gradient('Input Mid'), 2.0)
- Report.result(
- Tests.input_mid,
- Math_IsClose(postfx_gradient_weight_component.get_component_property_value(
- AtomComponentProperties.postfx_gradient('Input Mid')), 2.0))
- # 15. Set 'Output Max' property
- postfx_gradient_weight_component.set_component_property_value(
- AtomComponentProperties.postfx_gradient('Output Max'), 0.9)
- Report.result(
- Tests.output_max,
- Math_IsClose(postfx_gradient_weight_component.get_component_property_value(
- AtomComponentProperties.postfx_gradient('Output Max')), 0.9))
- # 16. Set 'Output Min' property
- postfx_gradient_weight_component.set_component_property_value(
- AtomComponentProperties.postfx_gradient('Output Min'), 0.1)
- Report.result(
- Tests.output_min,
- Math_IsClose(postfx_gradient_weight_component.get_component_property_value(
- AtomComponentProperties.postfx_gradient('Output Min')), 0.1))
- # 17. Toggle 'Enable Transform' property
- postfx_gradient_weight_component.set_component_property_value(
- AtomComponentProperties.postfx_gradient('Enable Transform'), True)
- Report.result(
- Tests.enable_transform,
- postfx_gradient_weight_component.get_component_property_value(
- AtomComponentProperties.postfx_gradient('Enable Transform')) is True)
- # 18. Set 'Scale' property
- x2 = Vector3(2.0, 2.0, 2.0)
- postfx_gradient_weight_component.set_component_property_value(
- AtomComponentProperties.postfx_gradient('Scale'), x2)
- Report.result(
- Tests.scale,
- postfx_gradient_weight_component.get_component_property_value(
- AtomComponentProperties.postfx_gradient('Scale')) == x2)
- # 19. Set 'Rotate' property
- rotation = Vector3(5.0, 5.0, 5.0)
- postfx_gradient_weight_component.set_component_property_value(
- AtomComponentProperties.postfx_gradient('Rotate'), rotation)
- Report.result(
- Tests.rotate,
- postfx_gradient_weight_component.get_component_property_value(
- AtomComponentProperties.postfx_gradient('Rotate')) == rotation)
- # 20. Set 'Translate' property
- translation = Vector3(1.0, 1.0, 0.0)
- postfx_gradient_weight_component.set_component_property_value(
- AtomComponentProperties.postfx_gradient('Translate'), translation)
- Report.result(
- Tests.translate,
- postfx_gradient_weight_component.get_component_property_value(
- AtomComponentProperties.postfx_gradient('Translate')) == translation)
- # 21. Enter/Exit game mode.
- TestHelper.enter_game_mode(Tests.enter_game_mode)
- general.idle_wait_frames(1)
- TestHelper.exit_game_mode(Tests.exit_game_mode)
- # 22. Test IsHidden.
- postfx_gradient_weight_entity.set_visibility_state(False)
- Report.result(Tests.is_hidden, postfx_gradient_weight_entity.is_hidden() is True)
- # 23. Test IsVisible.
- postfx_gradient_weight_entity.set_visibility_state(True)
- general.idle_wait_frames(1)
- Report.result(Tests.is_visible, postfx_gradient_weight_entity.is_visible() is True)
- # 24. Delete PostFX Gradient Weight Modifier entity.
- postfx_gradient_weight_entity.delete()
- Report.result(Tests.entity_deleted, not postfx_gradient_weight_entity.exists())
- # 25. UNDO deletion.
- general.undo()
- general.idle_wait_frames(1)
- Report.result(Tests.deletion_undo, postfx_gradient_weight_entity.exists())
- # 26. REDO deletion.
- general.redo()
- general.idle_wait_frames(1)
- Report.result(Tests.deletion_redo, not postfx_gradient_weight_entity.exists())
- # 27. Look for errors or asserts.
- TestHelper.wait_for_condition(lambda: error_tracer.has_errors or error_tracer.has_asserts, 1.0)
- for error_info in error_tracer.errors:
- Report.info(f"Error: {error_info.filename} {error_info.function} | {error_info.message}")
- for assert_info in error_tracer.asserts:
- Report.info(f"Assert: {assert_info.filename} {assert_info.function} | {assert_info.message}")
- if __name__ == "__main__":
- from editor_python_test_tools.utils import Report
- Report.start_test(AtomEditorComponents_PostFXGradientWeightModifier_AddedToEntity)
|