Merge branch 'main' into smoke_migration_branch
This commit is contained in:
@@ -51,7 +51,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
TEST_SUITE sandbox
|
||||
TEST_SERIAL
|
||||
PATH ${CMAKE_CURRENT_LIST_DIR}/physics/TestSuite_Sandbox.py
|
||||
TIMEOUT 3600
|
||||
TIMEOUT 1500
|
||||
RUNTIME_DEPENDENCIES
|
||||
Legacy::Editor
|
||||
AZ::AssetProcessor
|
||||
@@ -68,7 +68,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
TEST_SUITE periodic
|
||||
TEST_SERIAL
|
||||
PATH ${CMAKE_CURRENT_LIST_DIR}/scripting/TestSuite_Active.py
|
||||
TIMEOUT 1500
|
||||
TIMEOUT 3000
|
||||
RUNTIME_DEPENDENCIES
|
||||
Legacy::Editor
|
||||
AZ::AssetProcessor
|
||||
@@ -181,21 +181,23 @@ include(${pal_dir}/PAL_traits_${PAL_PLATFORM_NAME_LOWERCASE}.cmake)
|
||||
if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_LARGE_WORLDS_TEST_SUPPORTED)
|
||||
|
||||
## DynVeg ##
|
||||
ly_add_pytest(
|
||||
NAME AutomatedTesting::DynamicVegetationTests_Main
|
||||
TEST_SERIAL
|
||||
TEST_SUITE main
|
||||
PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/dyn_veg
|
||||
PYTEST_MARKS "not SUITE_sandbox and not SUITE_periodic and not SUITE_benchmark"
|
||||
TIMEOUT 1500
|
||||
RUNTIME_DEPENDENCIES
|
||||
AZ::AssetProcessor
|
||||
Legacy::Editor
|
||||
AutomatedTesting.GameLauncher
|
||||
AutomatedTesting.Assets
|
||||
COMPONENT
|
||||
LargeWorlds
|
||||
)
|
||||
# Temporarily moving all tests to periodic suite - SPEC-6553
|
||||
#ly_add_pytest(
|
||||
# NAME AutomatedTesting::DynamicVegetationTests_Main
|
||||
# TEST_SERIAL
|
||||
# TEST_SUITE main
|
||||
# PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/dyn_veg
|
||||
# PYTEST_MARKS "not SUITE_sandbox and not SUITE_periodic and not SUITE_benchmark"
|
||||
# TIMEOUT 1500
|
||||
# RUNTIME_DEPENDENCIES
|
||||
# AZ::AssetProcessor
|
||||
# Legacy::Editor
|
||||
# AutomatedTesting.GameLauncher
|
||||
# AutomatedTesting.Assets
|
||||
# COMPONENT
|
||||
# LargeWorlds
|
||||
#)
|
||||
|
||||
|
||||
ly_add_pytest(
|
||||
NAME AutomatedTesting::DynamicVegetationTests_Sandbox
|
||||
@@ -214,11 +216,11 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_
|
||||
)
|
||||
|
||||
ly_add_pytest(
|
||||
NAME AutomatedTesting::DynamicVegetationTests_Periodic
|
||||
NAME AutomatedTesting::DynamicVegetationFilterTests_Periodic
|
||||
TEST_SERIAL
|
||||
TEST_SUITE periodic
|
||||
PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/dyn_veg
|
||||
PYTEST_MARKS "SUITE_periodic"
|
||||
PYTEST_MARKS "SUITE_periodic and dynveg_filter"
|
||||
TIMEOUT 1500
|
||||
RUNTIME_DEPENDENCIES
|
||||
AZ::AssetProcessor
|
||||
@@ -228,22 +230,97 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_
|
||||
LargeWorlds
|
||||
)
|
||||
|
||||
## LandscapeCanvas ##
|
||||
ly_add_pytest(
|
||||
NAME AutomatedTesting::LandscapeCanvasTests_Main
|
||||
NAME AutomatedTesting::DynamicVegetationModifierTests_Periodic
|
||||
TEST_SERIAL
|
||||
TEST_SUITE main
|
||||
PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/landscape_canvas
|
||||
PYTEST_MARKS "not SUITE_sandbox and not SUITE_periodic and not SUITE_benchmark"
|
||||
TEST_SUITE periodic
|
||||
PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/dyn_veg
|
||||
PYTEST_MARKS "SUITE_periodic and dynveg_modifier"
|
||||
TIMEOUT 1500
|
||||
RUNTIME_DEPENDENCIES
|
||||
AZ::AssetProcessor
|
||||
Legacy::Editor
|
||||
AutomatedTesting.Assets
|
||||
AZ::AssetProcessor
|
||||
Legacy::Editor
|
||||
AutomatedTesting.Assets
|
||||
COMPONENT
|
||||
LargeWorlds
|
||||
)
|
||||
|
||||
ly_add_pytest(
|
||||
NAME AutomatedTesting::DynamicVegetationRegressionTests_Periodic
|
||||
TEST_SERIAL
|
||||
TEST_SUITE periodic
|
||||
PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/dyn_veg
|
||||
PYTEST_MARKS "SUITE_periodic and dynveg_regression"
|
||||
TIMEOUT 1500
|
||||
RUNTIME_DEPENDENCIES
|
||||
AZ::AssetProcessor
|
||||
Legacy::Editor
|
||||
AutomatedTesting.Assets
|
||||
COMPONENT
|
||||
LargeWorlds
|
||||
)
|
||||
|
||||
ly_add_pytest(
|
||||
NAME AutomatedTesting::DynamicVegetationAreaTests_Periodic
|
||||
TEST_SERIAL
|
||||
TEST_SUITE periodic
|
||||
PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/dyn_veg
|
||||
PYTEST_MARKS "SUITE_periodic and dynveg_area"
|
||||
TIMEOUT 1500
|
||||
RUNTIME_DEPENDENCIES
|
||||
AZ::AssetProcessor
|
||||
Legacy::Editor
|
||||
AutomatedTesting.Assets
|
||||
COMPONENT
|
||||
LargeWorlds
|
||||
)
|
||||
|
||||
ly_add_pytest(
|
||||
NAME AutomatedTesting::DynamicVegetationMiscTests_Periodic
|
||||
TEST_SERIAL
|
||||
TEST_SUITE periodic
|
||||
PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/dyn_veg
|
||||
PYTEST_MARKS "SUITE_periodic and dynveg_misc"
|
||||
TIMEOUT 1500
|
||||
RUNTIME_DEPENDENCIES
|
||||
AZ::AssetProcessor
|
||||
Legacy::Editor
|
||||
AutomatedTesting.Assets
|
||||
COMPONENT
|
||||
LargeWorlds
|
||||
)
|
||||
|
||||
ly_add_pytest(
|
||||
NAME AutomatedTesting::DynamicVegetationSurfaceTagTests_Periodic
|
||||
TEST_SERIAL
|
||||
TEST_SUITE periodic
|
||||
PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/dyn_veg
|
||||
PYTEST_MARKS "SUITE_periodic and dynveg_surfacetagemitter"
|
||||
TIMEOUT 1500
|
||||
RUNTIME_DEPENDENCIES
|
||||
AZ::AssetProcessor
|
||||
Legacy::Editor
|
||||
AutomatedTesting.Assets
|
||||
COMPONENT
|
||||
LargeWorlds
|
||||
)
|
||||
## LandscapeCanvas ##
|
||||
# Temporarily moving all tests to periodic suite - SPEC-6553
|
||||
#ly_add_pytest(
|
||||
# NAME AutomatedTesting::LandscapeCanvasTests_Main
|
||||
# TEST_SERIAL
|
||||
# TEST_SUITE main
|
||||
# PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/landscape_canvas
|
||||
# PYTEST_MARKS "not SUITE_sandbox and not SUITE_periodic and not SUITE_benchmark"
|
||||
# TIMEOUT 1500
|
||||
# RUNTIME_DEPENDENCIES
|
||||
# AZ::AssetProcessor
|
||||
# Legacy::Editor
|
||||
# AutomatedTesting.Assets
|
||||
# COMPONENT
|
||||
# LargeWorlds
|
||||
#)
|
||||
|
||||
ly_add_pytest(
|
||||
NAME AutomatedTesting::LandscapeCanvasTests_Periodic
|
||||
TEST_SERIAL
|
||||
|
||||
+13
-1
@@ -265,6 +265,7 @@ class Tracer:
|
||||
self.warnings = []
|
||||
self.errors = []
|
||||
self.asserts = []
|
||||
self.prints = []
|
||||
self.has_warnings = False
|
||||
self.has_errors = False
|
||||
self.has_asserts = False
|
||||
@@ -310,6 +311,11 @@ class Tracer:
|
||||
|
||||
def __repr__(self):
|
||||
return f"[Assert: {self.message}]"
|
||||
|
||||
class PrintInfo:
|
||||
def __init__(self, args):
|
||||
self.window = args[0]
|
||||
self.message = args[1]
|
||||
|
||||
def _on_warning(self, args):
|
||||
warningInfo = Tracer.WarningInfo(args)
|
||||
@@ -331,13 +337,19 @@ class Tracer:
|
||||
Report.info("Tracer caught Assert: %s:%i[%s] \"%s\"" % (assertInfo.filename, assertInfo.line, assertInfo.function, assertInfo.message))
|
||||
self.has_asserts = True
|
||||
return False
|
||||
|
||||
|
||||
def _on_printf(self, args):
|
||||
printInfo = Tracer.PrintInfo(args)
|
||||
self.prints.append(printInfo)
|
||||
return False
|
||||
|
||||
def __enter__(self):
|
||||
self.handler = azlmbr.debug.TraceMessageBusHandler()
|
||||
self.handler.connect(None)
|
||||
self.handler.add_callback("OnPreAssert", self._on_assert)
|
||||
self.handler.add_callback("OnPreWarning", self._on_warning)
|
||||
self.handler.add_callback("OnPreError", self._on_error)
|
||||
self.handler.add_callback("OnPrintf", self._on_printf)
|
||||
return self
|
||||
|
||||
def __exit__(self, type, value, traceback):
|
||||
|
||||
@@ -42,6 +42,7 @@ class TestAssetPicker(object):
|
||||
|
||||
@pytest.mark.test_case_id("C13751579", "C1508814")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.xfail # ATOM-15493
|
||||
def test_AssetPicker_UI_UX(self, request, editor, level, launcher_platform):
|
||||
expected_lines = [
|
||||
"TestEntity Entity successfully created",
|
||||
|
||||
+5
-12
@@ -114,11 +114,8 @@ class TestDynamicSliceInstanceSpawner(EditorTestHelper):
|
||||
# This should result in 400 instances, since our box is 16 m x 16 m and by default the veg system plants
|
||||
# 20 instances per 16 meters
|
||||
spawner_entity.get_set_test(0, 'Configuration|Allow Empty Assets', True)
|
||||
general.idle_wait(1.0)
|
||||
num_expected_instances = 20 * 20
|
||||
box = azlmbr.shape.ShapeComponentRequestsBus(bus.Event, 'GetEncompassingAabb', spawner_entity.id)
|
||||
num_found = azlmbr.areasystem.AreaSystemRequestBus(bus.Broadcast, 'GetInstanceCountInAabb', box)
|
||||
property_tree_success = property_tree_success and (num_found == num_expected_instances)
|
||||
property_tree_success = property_tree_success and self.wait_for_condition(lambda: dynveg.validate_instance_count_in_entity_shape(spawner_entity.id, num_expected_instances), 5.0)
|
||||
self.test_success = self.test_success and property_tree_success
|
||||
self.log(f'Property Tree spawner type test: {property_tree_success}')
|
||||
|
||||
@@ -127,10 +124,8 @@ class TestDynamicSliceInstanceSpawner(EditorTestHelper):
|
||||
# Since we have an empty slice path, we should have 0 instances once we disable 'Allow Empty Assets'
|
||||
num_expected_instances = 0
|
||||
allow_empty_assets_success = allow_empty_assets_success and spawner_entity.get_set_test(0, 'Configuration|Allow Empty Assets', False)
|
||||
general.idle_wait(1.0)
|
||||
num_found = azlmbr.areasystem.AreaSystemRequestBus(bus.Broadcast, 'GetInstanceCountInAabb', box)
|
||||
self.log(f'Allow Empty Assets test: Found {num_found} instances -- Expected {num_expected_instances} instances')
|
||||
allow_empty_assets_success = allow_empty_assets_success and (num_found == num_expected_instances)
|
||||
self.log('Allow Empty Assets test:')
|
||||
allow_empty_assets_success = allow_empty_assets_success and self.wait_for_condition(lambda: dynveg.validate_instance_count_in_entity_shape(spawner_entity.id, num_expected_instances), 5.0)
|
||||
self.test_success = self.test_success and allow_empty_assets_success
|
||||
self.log(f'Allow Empty Assets test: {allow_empty_assets_success}')
|
||||
|
||||
@@ -143,10 +138,8 @@ class TestDynamicSliceInstanceSpawner(EditorTestHelper):
|
||||
descriptor = hydra.get_component_property_value(spawner_entity.components[2], 'Configuration|Embedded Assets|[0]')
|
||||
descriptor.spawner = dynamic_slice_spawner
|
||||
spawns_slices_success = spawns_slices_success and spawner_entity.get_set_test(2, "Configuration|Embedded Assets|[0]", descriptor)
|
||||
general.idle_wait(1.0)
|
||||
num_found = azlmbr.areasystem.AreaSystemRequestBus(bus.Broadcast, 'GetInstanceCountInAabb', box)
|
||||
self.log(f'Spawn dynamic slices test: Found {num_found} instances -- Expected {num_expected_instances} instances')
|
||||
spawns_slices_success = spawns_slices_success and (num_found == num_expected_instances)
|
||||
self.log('Spawn dynamic slices test:')
|
||||
spawns_slices_success = spawns_slices_success and self.wait_for_condition(lambda: dynveg.validate_instance_count_in_entity_shape(spawner_entity.id, num_expected_instances), 5.0)
|
||||
self.test_success = self.test_success and spawns_slices_success
|
||||
self.log(f'Spawn dynamic slices test: {spawns_slices_success}')
|
||||
|
||||
|
||||
+2
-8
@@ -100,21 +100,15 @@ class TestEmptyInstanceSpawner(EditorTestHelper):
|
||||
|
||||
# This should result in 400 instances, since our box is 16 m x 16 m and by default the veg system plants
|
||||
# 20 instances per 16 meters
|
||||
general.idle_wait(2.0)
|
||||
num_expected_instances = 20 * 20
|
||||
box = azlmbr.shape.ShapeComponentRequestsBus(bus.Event, 'GetEncompassingAabb', spawner_entity.id)
|
||||
num_found = azlmbr.areasystem.AreaSystemRequestBus(bus.Broadcast, 'GetInstanceCountInAabb', box)
|
||||
property_tree_success = property_tree_success and (num_found == num_expected_instances)
|
||||
property_tree_success = property_tree_success and self.wait_for_condition(lambda: dynveg.validate_instance_count_in_entity_shape(spawner_entity.id, num_expected_instances), 5.0)
|
||||
self.test_success = self.test_success and property_tree_success
|
||||
self.log(f'Found {num_found} instances -- Expected {num_expected_instances} instances')
|
||||
self.log(f'Property Tree spawner type test: {property_tree_success}')
|
||||
|
||||
# 6) Validate that the "Allow Empty Assets" setting doesn't affect the EmptyInstanceSpawner
|
||||
allow_empty_assets_success = True
|
||||
spawner_entity.get_set_test(0, 'Configuration|Allow Empty Assets', False)
|
||||
general.idle_wait(2.0)
|
||||
num_found = azlmbr.areasystem.AreaSystemRequestBus(bus.Broadcast, 'GetInstanceCountInAabb', box)
|
||||
allow_empty_assets_success = allow_empty_assets_success and (num_found == num_expected_instances)
|
||||
allow_empty_assets_success = allow_empty_assets_success and self.wait_for_condition(lambda: dynveg.validate_instance_count_in_entity_shape(spawner_entity.id, num_expected_instances), 5.0)
|
||||
self.test_success = self.test_success and allow_empty_assets_success
|
||||
self.log(f'Allow Empty Assets test: {allow_empty_assets_success}')
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@ class TestAltitudeFilter(object):
|
||||
|
||||
@pytest.mark.test_case_id('C4814463', 'C4847477')
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_filter
|
||||
def test_AltitudeFilter_ComponentAndOverrides_InstancesPlantAtSpecifiedAltitude(self, request, editor, level,
|
||||
launcher_platform):
|
||||
|
||||
@@ -61,6 +62,7 @@ class TestAltitudeFilter(object):
|
||||
|
||||
@pytest.mark.test_case_id("C4847476")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_filter
|
||||
def test_AltitudeFilter_ShapeSample_InstancesPlantAtSpecifiedAltitude(self, request, editor, level,
|
||||
launcher_platform):
|
||||
|
||||
@@ -85,6 +87,7 @@ class TestAltitudeFilter(object):
|
||||
|
||||
@pytest.mark.test_case_id("C4847478")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_filter
|
||||
@pytest.mark.xfail # LYN-3275
|
||||
def test_AltitudeFilter_FilterStageToggle(self, request, editor, level, workspace, launcher_platform):
|
||||
cfg_args = [level]
|
||||
|
||||
@@ -52,6 +52,7 @@ class TestAreaComponents(object):
|
||||
|
||||
@pytest.mark.test_case_id("C2627900", "C2627905", "C2627904")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_misc
|
||||
def test_AreaComponents_SliceCreationVisibilityToggleWorks(self, request, editor, level, workspace,
|
||||
launcher_platform):
|
||||
cfg_args = [level]
|
||||
|
||||
@@ -38,6 +38,7 @@ class TestAssetListCombiner(object):
|
||||
|
||||
@pytest.mark.test_case_id("C4762374", "C4762373")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_misc
|
||||
def test_AssetListCombiner_CombinedDescriptorsExpressInConfiguredArea(self, request, editor, level,
|
||||
launcher_platform):
|
||||
|
||||
|
||||
@@ -42,6 +42,7 @@ class TestAssetWeightSelector(object):
|
||||
|
||||
@pytest.mark.test_case_id("C6269654", "C4762368")
|
||||
@pytest.mark.SUITE_sandbox
|
||||
@pytest.mark.dynveg_filter
|
||||
def test_AssetWeightSelector_InstancesExpressBasedOnWeight(self, request, editor, level, launcher_platform):
|
||||
|
||||
expected_lines = [
|
||||
|
||||
@@ -40,6 +40,7 @@ class TestDebugger(object):
|
||||
|
||||
@pytest.mark.test_case_id("C2789148")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_misc
|
||||
def test_Debugger_DebugCVarsWork(self, request, editor, level, workspace, launcher_platform):
|
||||
cfg_args = [level]
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@ class TestDistanceBetweenFilter(object):
|
||||
|
||||
@pytest.mark.test_case_id("C4851066")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_filter
|
||||
def test_DistanceBetweenFilter_InstancesPlantAtSpecifiedRadius(self, request, editor, level, launcher_platform):
|
||||
|
||||
expected_lines = [
|
||||
@@ -58,6 +59,7 @@ class TestDistanceBetweenFilter(object):
|
||||
|
||||
@pytest.mark.test_case_id("C4814458")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_filter
|
||||
def test_DistanceBetweenFilterOverrides_InstancesPlantAtSpecifiedRadius(self, request, editor, level,
|
||||
launcher_platform):
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@ class Test_DynVeg_Regressions(object):
|
||||
|
||||
@pytest.mark.test_case_id("C29470845")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_regression
|
||||
def test_SurfaceDataRefreshes_RemainsStable(self, request, editor, level, launcher_platform):
|
||||
|
||||
expected_lines = [
|
||||
|
||||
+6
-1
@@ -41,7 +41,8 @@ class TestDynamicSliceInstanceSpawner(object):
|
||||
return console
|
||||
|
||||
@pytest.mark.test_case_id("C28851763")
|
||||
@pytest.mark.SUITE_sandbox
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_area
|
||||
@pytest.mark.parametrize("launcher_platform", ['windows_editor'])
|
||||
def test_DynamicSliceInstanceSpawner_DynamicSliceSpawnerWorks(self, request, editor, level, workspace, project,
|
||||
launcher_platform):
|
||||
@@ -66,6 +67,7 @@ class TestDynamicSliceInstanceSpawner(object):
|
||||
@pytest.mark.test_case_id('C2574330')
|
||||
@pytest.mark.BAT
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_area
|
||||
@pytest.mark.parametrize("launcher_platform", ['windows_editor'])
|
||||
def test_DynamicSliceInstanceSpawner_Embedded_E2E_Editor(self, workspace, request, editor, level, project,
|
||||
launcher_platform):
|
||||
@@ -85,6 +87,7 @@ class TestDynamicSliceInstanceSpawner(object):
|
||||
@pytest.mark.test_case_id('C2574330')
|
||||
@pytest.mark.BAT
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_area
|
||||
@pytest.mark.parametrize("launcher_platform", ['windows'])
|
||||
@pytest.mark.skip # ATOM-14703
|
||||
def test_DynamicSliceInstanceSpawner_Embedded_E2E_Launcher(self, workspace, launcher, level,
|
||||
@@ -101,6 +104,7 @@ class TestDynamicSliceInstanceSpawner(object):
|
||||
|
||||
@pytest.mark.test_case_id('C4762367')
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_area
|
||||
@pytest.mark.parametrize("launcher_platform", ['windows_editor'])
|
||||
def test_DynamicSliceInstanceSpawner_External_E2E_Editor(self, workspace, request, editor, level, project,
|
||||
launcher_platform):
|
||||
@@ -119,6 +123,7 @@ class TestDynamicSliceInstanceSpawner(object):
|
||||
|
||||
@pytest.mark.test_case_id('C4762367')
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_area
|
||||
@pytest.mark.parametrize("launcher_platform", ['windows'])
|
||||
@pytest.mark.skip # ATOM-14703
|
||||
def test_DynamicSliceInstanceSpawner_External_E2E_Launcher(self, workspace, launcher, level,
|
||||
|
||||
@@ -36,13 +36,9 @@ class TestEmptyInstanceSpawner(object):
|
||||
|
||||
file_system.delete([os.path.join(workspace.paths.engine_root(), project, "Levels", level)], True, True)
|
||||
|
||||
# Main suite needs at least one test
|
||||
@pytest.mark.SUITE_main
|
||||
def test_EmptyInstanceSpawner_Dummy(self, request, editor, level, workspace, project, launcher_platform):
|
||||
pass
|
||||
|
||||
@pytest.mark.test_case_id("C28851762")
|
||||
@pytest.mark.SUITE_sandbox
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_area
|
||||
def test_EmptyInstanceSpawner_EmptySpawnerWorks(self, request, editor, level, launcher_platform):
|
||||
cfg_args = [level]
|
||||
|
||||
|
||||
@@ -43,6 +43,7 @@ class TestInstanceSpawnerPriority(object):
|
||||
|
||||
@pytest.mark.test_case_id("C5747383", "C4762382")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_misc
|
||||
def test_InstanceSpawnerPriority_LayerAndSubPriority_HigherValuesPlantOverLower(self, request, editor, level,
|
||||
launcher_platform):
|
||||
|
||||
|
||||
@@ -20,17 +20,10 @@ import pytest
|
||||
|
||||
pytest.importorskip("ly_test_tools")
|
||||
|
||||
import time as time
|
||||
|
||||
import editor_python_test_tools.hydra_test_utils as hydra
|
||||
import ly_test_tools.launchers.launcher_helper as launcher_helper
|
||||
import ly_remote_console.remote_console_commands as remote_console_commands
|
||||
import ly_test_tools.environment.waiter as waiter
|
||||
import ly_test_tools.environment.file_system as file_system
|
||||
import ly_remote_console.remote_console_commands as remote_console_commands
|
||||
from ly_remote_console.remote_console_commands import send_command_and_expect_response as send_command_and_expect_response
|
||||
|
||||
import automatedtesting_shared.screenshot_utils as screenshot_utils
|
||||
from automatedtesting_shared.network_utils import check_for_listening_port
|
||||
import editor_python_test_tools.hydra_test_utils as hydra
|
||||
|
||||
|
||||
test_directory = os.path.join(os.path.dirname(__file__), "EditorScripts")
|
||||
@@ -58,6 +51,7 @@ class TestLayerBlender(object):
|
||||
@pytest.mark.test_case_id("C2627906")
|
||||
@pytest.mark.BAT
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_area
|
||||
@pytest.mark.parametrize("launcher_platform", ['windows_editor'])
|
||||
def test_LayerBlender_E2E_Editor(self, workspace, request, editor, project, level, launcher_platform):
|
||||
# Make sure temp level doesn't already exist
|
||||
@@ -95,6 +89,7 @@ class TestLayerBlender(object):
|
||||
@pytest.mark.test_case_id("C2627906")
|
||||
@pytest.mark.BAT
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_area
|
||||
@pytest.mark.xfail
|
||||
@pytest.mark.parametrize("launcher_platform", ['windows'])
|
||||
def test_LayerBlender_E2E_Launcher(self, workspace, project, launcher, level, remote_console_instance,
|
||||
|
||||
@@ -38,6 +38,7 @@ class TestLayerBlocker(object):
|
||||
|
||||
@pytest.mark.test_case_id("C2793772")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_area
|
||||
def test_LayerBlocker_InstancesBlockedInConfiguredArea(self, request, editor, level, launcher_platform):
|
||||
|
||||
expected_lines = [
|
||||
|
||||
@@ -40,6 +40,7 @@ class TestLayerSpawner(object):
|
||||
|
||||
@pytest.mark.test_case_id("C4762381")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_misc
|
||||
def test_LayerSpawner_InheritBehaviorFlag(self, request, editor, level, workspace, launcher_platform):
|
||||
|
||||
expected_lines = [
|
||||
@@ -60,6 +61,7 @@ class TestLayerSpawner(object):
|
||||
|
||||
@pytest.mark.test_case_id("C2802020")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_misc
|
||||
def test_LayerSpawner_InstancesPlantInAllSupportedShapes(self, request, editor, level, launcher_platform):
|
||||
|
||||
expected_lines = [
|
||||
@@ -101,6 +103,7 @@ class TestLayerSpawner(object):
|
||||
|
||||
@pytest.mark.test_case_id("C4765973")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_misc
|
||||
@pytest.mark.xfail # LYN-3275
|
||||
def test_LayerSpawner_FilterStageToggle(self, request, editor, level, workspace, launcher_platform):
|
||||
|
||||
@@ -122,6 +125,7 @@ class TestLayerSpawner(object):
|
||||
|
||||
@pytest.mark.test_case_id("C30000751")
|
||||
@pytest.mark.SUITE_sandbox
|
||||
@pytest.mark.dynveg_misc
|
||||
@pytest.mark.skip # ATOM-14828
|
||||
def test_LayerSpawner_InstancesRefreshUsingCorrectViewportCamera(self, request, editor, level, launcher_platform):
|
||||
|
||||
|
||||
@@ -46,6 +46,7 @@ class TestMeshBlocker(object):
|
||||
"""
|
||||
@pytest.mark.test_case_id("C3980834")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_area
|
||||
@pytest.mark.xfail # LYN-3273
|
||||
def test_MeshBlocker_InstancesBlockedByMesh(self, request, editor, level, launcher_platform):
|
||||
expected_lines = [
|
||||
@@ -70,6 +71,7 @@ class TestMeshBlocker(object):
|
||||
"""
|
||||
@pytest.mark.test_case_id("C4766030")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_area
|
||||
@pytest.mark.xfail # LYN-3273
|
||||
def test_MeshBlocker_InstancesBlockedByMeshHeightTuning(self, request, editor, level, launcher_platform):
|
||||
expected_lines = [
|
||||
|
||||
@@ -38,6 +38,7 @@ class TestMeshSurfaceTagEmitter(object):
|
||||
|
||||
@pytest.mark.test_case_id("C2908172")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_surfacetagemitter
|
||||
def test_MeshSurfaceTagEmitter_DependentOnMeshComponent(self, request, editor, level, launcher_platform):
|
||||
|
||||
expected_lines = [
|
||||
@@ -66,6 +67,7 @@ class TestMeshSurfaceTagEmitter(object):
|
||||
|
||||
@pytest.mark.test_case_id("C2908174")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_surfacetagemitter
|
||||
def test_MeshSurfaceTagEmitter_SurfaceTagsAddRemoveSuccessfully(self, request, editor, level, launcher_platform):
|
||||
|
||||
expected_lines = [
|
||||
|
||||
+1
@@ -38,6 +38,7 @@ class TestPhysXColliderSurfaceTagEmitter(object):
|
||||
|
||||
@pytest.mark.test_case_id("C29053640")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_surfacetagemitter
|
||||
def test_PhysXColliderSurfaceTagEmitter_E2E_Editor(self, request, editor, level, launcher_platform):
|
||||
|
||||
expected_lines = [
|
||||
|
||||
@@ -38,6 +38,7 @@ class TestPositionModifier(object):
|
||||
|
||||
@pytest.mark.test_case_id("C4874099", "C4814461")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_modifier
|
||||
def test_PositionModifier_ComponentAndOverrides_InstancesPlantAtSpecifiedOffsets(self, request, editor, level,
|
||||
launcher_platform):
|
||||
|
||||
@@ -60,6 +61,7 @@ class TestPositionModifier(object):
|
||||
|
||||
@pytest.mark.test_case_id("C4874100")
|
||||
@pytest.mark.SUITE_sandbox
|
||||
@pytest.mark.dynveg_modifier
|
||||
@pytest.mark.xfail # LYN-3275
|
||||
def test_PositionModifier_AutoSnapToSurfaceWorks(self, request, editor, level, launcher_platform):
|
||||
|
||||
|
||||
@@ -42,6 +42,7 @@ class TestRotationModifier(object):
|
||||
|
||||
@pytest.mark.test_case_id("C4896922")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_modifier
|
||||
def test_RotationModifier_InstancesRotateWithinRange(self, request, editor, level, launcher_platform) -> None:
|
||||
"""
|
||||
Launches editor and run test script to test that rotation modifier works for all axis.
|
||||
@@ -71,6 +72,7 @@ class TestRotationModifier(object):
|
||||
|
||||
@pytest.mark.test_case_id("C4814460")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_modifier
|
||||
def test_RotationModifierOverrides_InstancesRotateWithinRange(self, request, editor, level, launcher_platform) -> None:
|
||||
|
||||
expected_lines = [
|
||||
|
||||
@@ -41,6 +41,7 @@ class TestScaleOverrideWorksSuccessfully(object):
|
||||
|
||||
@pytest.mark.test_case_id("C4814462")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_modifier
|
||||
def test_ScaleModifierOverrides_InstancesProperlyScale(self, request, editor, level, launcher_platform):
|
||||
|
||||
expected_lines = [
|
||||
@@ -70,6 +71,7 @@ class TestScaleOverrideWorksSuccessfully(object):
|
||||
|
||||
@pytest.mark.test_case_id("C4896937")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_modifier
|
||||
def test_ScaleModifier_InstancesProperlyScale(self, request, editor, level, launcher_platform):
|
||||
|
||||
expected_lines = [
|
||||
|
||||
@@ -38,6 +38,7 @@ class TestShapeIntersectionFilter(object):
|
||||
|
||||
@pytest.mark.test_case_id("C4874094")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_filter
|
||||
def test_ShapeIntersectionFilter_InstancesPlantInAssignedShape(self, request, editor, level, launcher_platform):
|
||||
|
||||
expected_lines = [
|
||||
|
||||
@@ -41,6 +41,7 @@ class TestSlopeAlignmentModifier(object):
|
||||
|
||||
@pytest.mark.test_case_id("C4896941")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_modifier
|
||||
@pytest.mark.skip # ATOM-14299
|
||||
def test_SlopeAlignmentModifier_InstanceSurfaceAlignment(self, request, editor, level, launcher_platform):
|
||||
|
||||
@@ -63,6 +64,7 @@ class TestSlopeAlignmentModifier(object):
|
||||
|
||||
@pytest.mark.test_case_id("C4814459")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_modifier
|
||||
@pytest.mark.skip # ATOM-14299
|
||||
def test_SlopeAlignmentModifierOverrides_InstanceSurfaceAlignment(self, request, editor, level, launcher_platform):
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@ class TestSlopeFilter(object):
|
||||
|
||||
@pytest.mark.test_case_id("C4874097")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_filter
|
||||
def test_SlopeFilter_FilterStageToggle(self, request, editor, level, workspace, launcher_platform):
|
||||
cfg_args = [level]
|
||||
|
||||
@@ -70,6 +71,7 @@ class TestSlopeFilter(object):
|
||||
|
||||
@pytest.mark.test_case_id("C4814464", "C4874096")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_filter
|
||||
@pytest.mark.skip # LYN-2211
|
||||
def test_SlopeFilter_ComponentAndOverrides_InstancesPlantOnValidSlopes(self, request, editor, level,
|
||||
launcher_platform):
|
||||
|
||||
@@ -40,6 +40,7 @@ class TestSurfaceMaskFilter(object):
|
||||
|
||||
# Simple validation test to ensure that SurfaceTag can be created, set to a value, and compared to another SurfaceTag.
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_filter
|
||||
def test_SurfaceMaskFilter_BasicSurfaceTagCreation(self, request, level, editor, launcher_platform):
|
||||
|
||||
expected_lines = [
|
||||
@@ -61,6 +62,7 @@ class TestSurfaceMaskFilter(object):
|
||||
|
||||
@pytest.mark.test_case_id("C2561342")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_filter
|
||||
def test_SurfaceMaskFilter_ExclusiveSurfaceTags_Function(self, request, editor, level, launcher_platform):
|
||||
|
||||
expected_lines = [
|
||||
@@ -93,6 +95,7 @@ class TestSurfaceMaskFilter(object):
|
||||
|
||||
@pytest.mark.test_case_id("C2561341")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_filter
|
||||
def test_SurfaceMaskFilter_InclusiveSurfaceTags_Function(self, request, editor, level, launcher_platform):
|
||||
|
||||
expected_lines = [
|
||||
@@ -125,6 +128,7 @@ class TestSurfaceMaskFilter(object):
|
||||
|
||||
@pytest.mark.test_case_id("C3711666")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_filter
|
||||
def test_SurfaceMaskFilterOverrides_MultipleDescriptorOverridesPlantAsExpected(self, request, editor, level,
|
||||
launcher_platform):
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@ class TestSystemSettings(object):
|
||||
|
||||
@pytest.mark.test_case_id("C2646869")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_misc
|
||||
def test_SystemSettings_SectorPointDensity(self, request, editor, level, launcher_platform):
|
||||
|
||||
expected_lines = [
|
||||
@@ -64,6 +65,7 @@ class TestSystemSettings(object):
|
||||
|
||||
@pytest.mark.test_case_id("C2646870")
|
||||
@pytest.mark.SUITE_periodic
|
||||
@pytest.mark.dynveg_misc
|
||||
def test_SystemSettings_SectorSize(self, request, editor, level, launcher_platform):
|
||||
|
||||
expected_lines = [
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C100000
|
||||
# Test Case Title : Check that Gravity works
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/100000
|
||||
|
||||
|
||||
|
||||
# fmt:off
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C111111
|
||||
# Test Case Title : Check that Gravity works
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/111111
|
||||
|
||||
|
||||
# fmt:off
|
||||
class Tests:
|
||||
|
||||
@@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test Case ID : C12712452
|
||||
# Test Case Title : Verify ScriptCanvas Collision Events
|
||||
# Test Case URL : https://testrail.agscollab.com/index.php?/cases/view/12712452
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C12712453
|
||||
# Test Case Title : Verify Raycast Multiple Node
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/12712453
|
||||
|
||||
|
||||
# fmt:off
|
||||
class Tests:
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : 12712454
|
||||
# Test Case Title : Verify overlap nodes in script canvas
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/12712454
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C12712455
|
||||
# Test Case Title : Verify shape cast nodes in SC
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/12712455
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C12868578
|
||||
# Test Case Title : Check that World space and local space force direction doesn't affect magnitude of force exerted
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/12868578
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C12868580
|
||||
# Test Case Title : Check that spline follow force works if transform components of entity are altered
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/12868580
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C12905527
|
||||
# Test Case Title : Check that deviation occurring in Force Magnitude due to Values in Force direction is not large
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/12905527
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests():
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
Test case ID : C12905528
|
||||
Test Case Title : Check that user is warned if non-trigger collider component is used with force region
|
||||
URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/12905528
|
||||
|
||||
"""
|
||||
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C13351703
|
||||
# Test Case Title : Check that Center of Mass calculations should not include trigger shapes
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/13351703
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C13352089
|
||||
# Test Case Title : Verify that maximum angular velocity interacts correctly with initial angular velocity
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/13352089
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C13508019
|
||||
# Test Case Title : Verify terrain materials are updated after using terrain texture layer painter.
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/13508019
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
|
||||
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C13895144
|
||||
# Test Case Title : Run a level with multiple ragdolls and then switch levels
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/13895144
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C14195074
|
||||
# Test Case Title : Verify Postsimulate Events
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/14195074
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# Test case ID : C14654881
|
||||
# Test Case Title : Switching levels from a level containing a character controller component
|
||||
# should not lead to a crash
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/14654881
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
@@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
"""
|
||||
Test case ID : C14654882
|
||||
Test Case Title : Loading level with old PhysX Ragdoll component serialization should not produce asset processor errors
|
||||
URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/14654882
|
||||
|
||||
"""
|
||||
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# Test case ID : C14861498
|
||||
# Test Case Title : Confirm that when a PhysXCollider has no physics asset, the physics asset collider \
|
||||
# shape throw an error
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/14861498
|
||||
|
||||
|
||||
|
||||
# fmt:off
|
||||
|
||||
@@ -10,7 +10,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
Test case ID : C14861500
|
||||
Test Case Title : Verify Default shape is Physics Asset
|
||||
URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/14861500
|
||||
|
||||
"""
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
Test case ID : C14861501
|
||||
Test Case Title : Verify PxMesh is auto-assigned when Collider component is added after Rendering Mesh component
|
||||
URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/14861501
|
||||
|
||||
"""
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
Test case ID : C14861502
|
||||
Test Case Title : Verify PxMesh is auto-assigned in collider when Mesh is assigned in Rendering Mesh component
|
||||
URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/14861502
|
||||
|
||||
"""
|
||||
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
Test case ID : C14861504
|
||||
Test Case Title : Verify if Rendering Mesh does not have a PhysX Collision Mesh fbx, then PxMesh is not auto-assigned
|
||||
URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/14861504
|
||||
|
||||
"""
|
||||
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C14902097
|
||||
# Test Case Title : Verify Presimulate Events
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/14902097
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C14902098
|
||||
# Test Case Title : Check that force region simulation with Postsimulate works independently from rendering tick
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/14902098
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
@@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C14976307
|
||||
# Test Case Title : Check that Set Gravity Enabled works on an entity with gravity that starts as disabled
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/14976307
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# Test Case
|
||||
# ID : C14976308
|
||||
# Title : Verify that SetKinematicTarget on PhysX rigid body updates transform for kinematic entities and vice versa
|
||||
# URL : https://testrail.agscollab.com/index.php?/cases/view/14976308
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C15096732
|
||||
# Test Case Title : Verify Default material library works across different levels
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/15096732
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C15096732
|
||||
# Test Case Title : Verify Default material library works across different levels
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/15096732
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C15096735
|
||||
# Test Case Title : Verify that default material library works consistently across all systems that use it
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/15096735
|
||||
|
||||
|
||||
|
||||
# fmt:off
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# Test Case Title : Verify that a change in the default material library material information
|
||||
# affects all the materials that reference it, even non-defaulted
|
||||
# exactly like if the library was selected
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/15096737
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
Test case ID : C15096740
|
||||
Test Case Title : Verify that clearing a material library on all systems that use it,
|
||||
assigns the default material library
|
||||
URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/15096740
|
||||
|
||||
"""
|
||||
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# Test case ID : C15308217
|
||||
# Test Case Title : Verify that the Terrain texture layer doesn't crash when changing
|
||||
# from on a level with a terrain component to another level without a terrain component
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/15308217
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test Case ID : C15308221
|
||||
# Test Case Title : Verify that material library and slots are always in sync and work consistently through the different places of usage
|
||||
# Test Case URL : https://testrail.agscollab.com/index.php?/cases/view/15308221
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
@@ -11,7 +11,7 @@ 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
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/15425929
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C15425935
|
||||
# Test Case Title : Verify that the change in Material Library gets updated across levels
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/15425935
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C15556261
|
||||
# Test Case Title : Check that the material assignment works with Character Controller
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/15556261
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test Case ID : C15563573
|
||||
# Test Case Title : Check that any change (Add/Delete/Modify) made to the material surface in the material library reflects immediately in the PhysX Character Controller
|
||||
# Test Case URL : https://testrail.agscollab.com/index.php?/cases/view/15563573
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C15845879
|
||||
# Test Case Title : Check that linear damping with high values do not make the object to quiver
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/15845879
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
|
||||
@@ -10,7 +10,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
Test case ID : C17411467
|
||||
Test Case Title : Check that Physx Ragdoll component can be added without errors/warnings
|
||||
URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/17411467
|
||||
|
||||
"""
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C18243580
|
||||
# Test Case Title : Check that fixed joint constrains 2 bodies
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/18243580
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
|
||||
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C18243581
|
||||
# Test Case Title : Check that fixed joint is breakable
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/18243581
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C18243582
|
||||
# Test Case Title : Check that fixed joint allows lead-follower collision
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/18243582
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C18243583
|
||||
# Test Case Title : Check that hinge joint constrains 2 bodies about X-axis
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/18243583
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C18243584
|
||||
# Test Case Title : Check that hinge joint allows soft limit constraints on 2 bodies
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/18243584
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C18243585
|
||||
# Test Case Title : Check that hinge joint allows no limit constraints on 2 bodies
|
||||
# URL of the test case :https://testrail.agscollab.com/index.php?/cases/view/18243585
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C18243586
|
||||
# Test Case Title : Check that hinge joint allows lead-follower collision
|
||||
# URL of the test case :https://testrail.agscollab.com/index.php?/cases/view/18243586
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
|
||||
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C18243587
|
||||
# Test Case Title : Check that hinge joint is breakable
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/18243587
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
|
||||
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C18243588
|
||||
# Test Case Title : Check that ball joint constrains 2 bodies within cone limits
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/18243588
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
enter_game_mode = ("Entered game mode", "Failed to enter game mode")
|
||||
|
||||
+26
-6
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : 18243589
|
||||
# Test Case Title : Check that ball joint allows soft limit constraints
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/18243589
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
@@ -57,6 +57,7 @@ def C18243589_Joints_BallSoftLimitsConstrained():
|
||||
"""
|
||||
import os
|
||||
import sys
|
||||
import math
|
||||
|
||||
import ImportPathHelper as imports
|
||||
|
||||
@@ -95,13 +96,33 @@ def C18243589_Joints_BallSoftLimitsConstrained():
|
||||
Report.info_vector3(follower.position, "follower initial position:")
|
||||
leadInitialPosition = lead.position
|
||||
followerInitialPosition = follower.position
|
||||
|
||||
followerMovedAboveJoint = False
|
||||
#calculate the start vector from follower and lead positions
|
||||
normalizedStartPos = JointsHelper.getRelativeVector(lead.position, follower.position)
|
||||
normalizedStartPos = normalizedStartPos.GetNormalizedSafe()
|
||||
#the targeted angle to reach between the initial vector and the current follower-lead vector
|
||||
TARGET_ANGLE_DEG = 45
|
||||
targetAngle = math.radians(TARGET_ANGLE_DEG)
|
||||
angleAchieved = 0.0
|
||||
|
||||
# 4) Wait for several seconds
|
||||
general.idle_wait(1.0) # wait for lead and follower to move
|
||||
def checkAngleMet():
|
||||
#calculate the current follower-lead vector
|
||||
normalVec = JointsHelper.getRelativeVector(lead.position, follower.position)
|
||||
normalVec = normalVec.GetNormalizedSafe()
|
||||
#dot product + acos to get the angle
|
||||
angleAchieved = math.acos(normalizedStartPos.Dot(normalVec))
|
||||
#is it above target?
|
||||
return angleAchieved > targetAngle
|
||||
|
||||
MAX_WAIT_TIME = 2.0 #seconds
|
||||
followerMovedAboveJoint = helper.wait_for_condition(checkAngleMet, MAX_WAIT_TIME)
|
||||
|
||||
# 5) Check to see if lead and follower behaved as expected
|
||||
Report.info_vector3(lead.position, "lead position after 1 second:")
|
||||
Report.info_vector3(follower.position, "follower position after 1 second:")
|
||||
Report.info_vector3(lead.position, "lead position:")
|
||||
Report.info_vector3(follower.position, "follower position:")
|
||||
angleAchievedDeg = math.degrees(angleAchieved)
|
||||
Report.info(f"Angle achieved {angleAchievedDeg:.2f} Target {TARGET_ANGLE_DEG:.2f}")
|
||||
|
||||
leadPositionDelta = lead.position.Subtract(leadInitialPosition)
|
||||
leadRemainedStill = JointsHelper.vector3SmallerThanScalar(leadPositionDelta, FLOAT_EPSILON)
|
||||
@@ -111,7 +132,6 @@ def C18243589_Joints_BallSoftLimitsConstrained():
|
||||
followerMovedinXYZ = JointsHelper.vector3LargerThanScalar(followerPositionDelta, FLOAT_EPSILON)
|
||||
Report.critical_result(Tests.check_follower_position, followerMovedinXYZ)
|
||||
|
||||
followerMovedAboveJoint = follower.position.z > (followerInitialPosition.z + 2.5) # (followerInitialPosition.z + 2.5) is the z position past the 45 degree limit. This is to show that the follower swinged past the 45 degree cone limit, above the joint position.
|
||||
Report.critical_result(Tests.check_follower_above_joint, followerMovedAboveJoint)
|
||||
|
||||
# 6) Exit Game Mode
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C18243590
|
||||
# Test Case Title : Check that ball joint allows no limit constraints
|
||||
# URL of the test case :https://testrail.agscollab.com/index.php?/cases/view/18243590
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C18243591
|
||||
# Test Case Title : Check that ball joint allows lead-follower collision
|
||||
# URL of the test case :https://testrail.agscollab.com/index.php?/cases/view/18243591
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
|
||||
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C18243592
|
||||
# Test Case Title : Check that ball joint is breakable
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/18243592
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
enter_game_mode = ("Entered game mode", "Failed to enter game mode")
|
||||
|
||||
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C18243593
|
||||
# Test Case Title : Check that fixed/hinge/ball joints allow constraints to global frame
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/18243593
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C18977601
|
||||
# Test Case Title : Verify that when two objects with different materials collide, the friction combine priority works
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/18977601
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C18981526
|
||||
# Test Case Title : Verify when two objects with different materials collide, the restitution combine priority works
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/18981526
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
@@ -10,7 +10,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
Test case ID : C19536274
|
||||
Test Case Title : Verify that the Get Collision Layer Name node prints the name of the collision layer
|
||||
URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/19536274
|
||||
|
||||
"""
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
Test case ID : C19536277
|
||||
Test Case Title : Verify that when a group is modified using ToggleCollisionLayer node such that the new group is not in the pre-existing groups, GetCollisionGroupName node prints no value
|
||||
URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/19536277
|
||||
|
||||
"""
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
Test case ID : C19578018
|
||||
Test Case Title : Verify that a shape collider component with no shape component indicates a missing service
|
||||
URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/19578018
|
||||
|
||||
"""
|
||||
|
||||
# fmt: off
|
||||
|
||||
@@ -10,7 +10,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
Test case ID : C19578021
|
||||
Test Case Title : Verify that a shape collider component may be added to an entity along with one or more PhysX collider components
|
||||
URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/19578021
|
||||
|
||||
"""
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
Test case ID : C19723164
|
||||
Test Case Title : Verify that if we had 512 shape colliders in the level, the level does not crash
|
||||
URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/19723164
|
||||
|
||||
"""
|
||||
|
||||
|
||||
|
||||
+39
-16
@@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C24308873
|
||||
# Test Case Title : Check that cylinder shape collider collides with terrain
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/24308873
|
||||
|
||||
# A cylinder is suspended slightly over PhysX Terrain to check that it collides when dropped
|
||||
|
||||
|
||||
@@ -20,7 +20,10 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
class Tests():
|
||||
enter_game_mode = ("Entered game mode", "Failed to enter game mode")
|
||||
find_cylinder = ("Cylinder entity found", "Cylinder entity not found")
|
||||
find_terrain = ("Terrain found", "Terrain not found")
|
||||
create_terrain = ("Terrain entity created successfully", "Failed to create Terrain Entity")
|
||||
find_terrain = ("Terrain entity found", "Terrain entity not found")
|
||||
add_physx_shape_collider = ("Added PhysX Shape Collider", "Failed to add PhysX Shape Collider")
|
||||
add_box_shape = ("Added Box Shape", "Failed to add Box Shape")
|
||||
cylinder_above_terrain = ("Cylinder position above ground", "Cylinder is not above the ground")
|
||||
time_out = ("No time out occurred", "A time out occurred, please validate level setup")
|
||||
touched_ground = ("Touched ground before time out", "Did not touch ground before time out")
|
||||
@@ -40,11 +43,12 @@ def C24308873_CylinderShapeCollider_CollidesWithPhysXTerrain():
|
||||
Once game mode is entered, the cylinder should fall toward and collide with the terrain.
|
||||
|
||||
Steps:
|
||||
1) Open level and enter game mode
|
||||
2) Retrieve entities and positions
|
||||
3) Wait for cylinder to collide with terrain OR time out
|
||||
4) Exit game mode
|
||||
5) Close the editor
|
||||
1) Open level and create terrain Entity.
|
||||
2) Enter Game Mode.
|
||||
3) Retrieve entities and positions
|
||||
4) Wait for cylinder to collide with terrain OR time out
|
||||
5) Exit game mode
|
||||
6) Close the editor
|
||||
|
||||
:return:
|
||||
"""
|
||||
@@ -54,29 +58,48 @@ def C24308873_CylinderShapeCollider_CollidesWithPhysXTerrain():
|
||||
import ImportPathHelper as imports
|
||||
|
||||
imports.init()
|
||||
|
||||
from editor_python_test_tools.editor_entity_utils import EditorEntity
|
||||
import azlmbr.legacy.general as general
|
||||
import azlmbr.bus
|
||||
import azlmbr.math as math
|
||||
from editor_python_test_tools.utils import Report
|
||||
from editor_python_test_tools.utils import TestHelper as helper
|
||||
|
||||
# Global time out
|
||||
TIME_OUT = 1.0
|
||||
|
||||
# 1) Open level / Enter game mode
|
||||
# 1) Open level
|
||||
helper.init_idle()
|
||||
helper.open_level("Physics", "C24308873_CylinderShapeCollider_CollidesWithPhysXTerrain")
|
||||
|
||||
# Create terrain entity
|
||||
terrain = EditorEntity.create_editor_entity_at([30.0, 30.0, 33.96], "Terrain")
|
||||
Report.result(Tests.create_terrain, terrain.id.IsValid())
|
||||
|
||||
terrain.add_component("PhysX Shape Collider")
|
||||
Report.result(Tests.add_physx_shape_collider, terrain.has_component("PhysX Shape Collider"))
|
||||
|
||||
box_shape_component = terrain.add_component("Box Shape")
|
||||
Report.result(Tests.add_box_shape, terrain.has_component("Box Shape"))
|
||||
|
||||
box_shape_component.set_component_property_value("Box Shape|Box Configuration|Dimensions",
|
||||
math.Vector3(1024.0, 1024.0, 0.01))
|
||||
|
||||
# 2)Enter game mode
|
||||
helper.enter_game_mode(Tests.enter_game_mode)
|
||||
|
||||
# 2) Retrieve entities and positions
|
||||
# 3) Retrieve entities and positions
|
||||
cylinder_id = general.find_game_entity("PhysX_Cylinder")
|
||||
Report.critical_result(Tests.find_cylinder, cylinder_id.IsValid())
|
||||
|
||||
|
||||
terrain_id = general.find_game_entity("Terrain")
|
||||
Report.critical_result(Tests.find_terrain, terrain_id.IsValid())
|
||||
|
||||
terrain_id = general.find_game_entity("PhysX_Terrain")
|
||||
Report.critical_result(Tests.find_terrain, terrain_id.IsValid())
|
||||
|
||||
cylinder_pos = azlmbr.components.TransformBus(azlmbr.bus.Event, "GetWorldTM", cylinder_id).GetPosition()
|
||||
terrain_pos = azlmbr.components.TransformBus(azlmbr.bus.Event, "GetWorldTM", terrain_id).GetPosition()
|
||||
cylinder_pos = azlmbr.components.TransformBus(azlmbr.bus.Event, "GetWorldTranslation", cylinder_id)
|
||||
#Cylinder position is 64,84,35
|
||||
terrain_pos = azlmbr.components.TransformBus(azlmbr.bus.Event, "GetWorldTranslation", terrain_id)
|
||||
Report.info_vector3(cylinder_pos, "Cylinder:")
|
||||
Report.info_vector3(terrain_pos, "Terrain:")
|
||||
Report.critical_result(
|
||||
@@ -104,13 +127,13 @@ def C24308873_CylinderShapeCollider_CollidesWithPhysXTerrain():
|
||||
handler.connect(cylinder_id)
|
||||
handler.add_callback("OnCollisionBegin", on_collision_begin)
|
||||
|
||||
# 3) Wait for the cylinder to hit the ground OR time out
|
||||
# 4) Wait for the cylinder to hit the ground OR time out
|
||||
test_completed = helper.wait_for_condition((lambda: TouchGround.value), TIME_OUT)
|
||||
|
||||
Report.critical_result(Tests.time_out, test_completed)
|
||||
Report.result(Tests.touched_ground, TouchGround.value)
|
||||
|
||||
# 4) Exit game mode
|
||||
# 5) Exit game mode
|
||||
helper.exit_game_mode(Tests.exit_game_mode)
|
||||
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C28978033
|
||||
# Test Case Title : Check that WorldRequestBus works with PhysX ragdoll
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/28978033
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C29032500
|
||||
# Test Case Title : Check that WorldRequestBus works with editor components
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/29032500
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
@@ -13,7 +13,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# Test case ID : C3510642
|
||||
# Test Case Title : Check that when no physX terrain component is added, collision of a PhysX object
|
||||
# with terrain does not work. Consequently, PhysX material assignment to terrain cannot be tested.
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/3510642
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# Test case ID : 4044455
|
||||
# Test Case Title : Verify that any change in any of the values including the name of the material,
|
||||
# once saved, is immediately reflected in the component and functionality
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/4044455
|
||||
|
||||
|
||||
# fmt: off
|
||||
class Tests:
|
||||
|
||||
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C4044456
|
||||
# Test Case Title : Verify that when two objects with different materials collide, the friction combine works
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/4044456
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C4044457
|
||||
# Test Case Title : Verify that when two objects with different materials collide, the restitution combine works
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/4044457
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C4044459
|
||||
# Test Case Title : Verify the functionality of dynamic friction
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/4044459
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C4044460
|
||||
# Test Case Title : Verify the functionality of static friction
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/4044460
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test case ID : C4044461
|
||||
# Test Case Title : Verify the functionality of restitution
|
||||
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/4044461
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
|
||||
# Test Case ID : C4044694
|
||||
# Test Case Title : Verify that if we add an empty Material library in Collider Component, the object continues to use Default material values
|
||||
# Test Case URL : https://testrail.agscollab.com/index.php?/cases/view/4044694
|
||||
|
||||
|
||||
|
||||
# fmt: off
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user