""" 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 : C5689528 # Test Case Title : Create multiple entities each with one PhysX terrain component and verify that a warning # is thrown to the user # URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/5689528 # fmt: off class Tests(): enter_game_mode = ("Entered game mode", "Failed to enter game mode") warning_message_logged = ("The expected warning was logged", "The expected message was not logged") find_terrains = ("All Terrains are found", "All Terrains are not found") exit_game_mode = ("Exited game mode", "Couldn't exit game mode") # fmt: on def C5689528_Terrain_MultipleTerrainComponents(): """ Summary: Create multiple entities each with one PhysX terrain component and verify that a warning is thrown to the user. Level Description: Terrain1 (entity) - Entity with PhysX Terrain component. Terrain2 (entity) - Entity with PhysX Terrain component. Terrain3 (entity) - Entity with PhysX Terrain component. Expected Behavior: We are verifying if the entities are valid. Additionally we are checking for the messages in log when 3 entities with terrain components are added. The log messages should be as follows: [Warning] (EditorTerrainComponent) - Multiple EditorTerrainComponents found in the editor scene on these entities: Terrain1 Terrain2 Terrain3 Test Steps: 1) Open level 2) Enter game mode 3) Look for warning 4) Retrieve and validate entities 5) Exit game mode 6) Close the editor Note: - This test file must be called from the Open 3D Engine Editor command terminal - Any passed and failed tests are written to the Editor.log file. Parsing the file or running a log_monitor are required to observe the test results. :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() with Tracer() as warning_tracer: def has_terrain_warning(): return warning_tracer.has_warnings and any( 'EditorTerrainComponent' in warningInfo.window for warningInfo in warning_tracer.warnings) # 1) Open level helper.open_level("Physics", "C5689528_Terrain_MultipleTerrainComponents") # 2) Enter game mode helper.enter_game_mode(Tests.enter_game_mode) # 3) Look for warning helper.wait_for_condition(has_terrain_warning, 1.0) Report.result(Tests.warning_message_logged, has_terrain_warning()) # 4) Retrieve and validate entities all_terrains_found = True for index in range(1, 4): entity_name = "Terrain{}".format(index) terrain_id = general.find_game_entity(entity_name) if not terrain_id.IsValid(): all_terrains_found = False Report.critical_result(Tests.find_terrains, all_terrains_found) # 5) Exit game mode helper.exit_game_mode(Tests.exit_game_mode) if __name__ == "__main__": import ImportPathHelper as imports imports.init() from editor_python_test_tools.utils import Report Report.start_test(C5689528_Terrain_MultipleTerrainComponents)