Merge remote-tracking branch 'origin' into MultiplayerComponents

main
karlberg 5 years ago
commit 751d13dd7b

@ -1 +0,0 @@
<CacheBuildConfiguration Name="Game" UpAxis="Y" MeshPrediction="1" UseBFrames="1" IndexFrameDistance="10" BlockCompressionFormat="deflate" PlaybackFromMemory="0" PositionPrecision="1" UVmax="0"/>

@ -1 +0,0 @@
<CacheBuildConfiguration Name="Game (fast decode)" UpAxis="Y" MeshPrediction="1" UseBFrames="1" IndexFrameDistance="10" BlockCompressionFormat="lz4hc" PlaybackFromMemory="0" PositionPrecision="1" UVmax="0"/>

@ -1 +0,0 @@
<CacheBuildConfiguration Name="Game (Z-up)" UpAxis="Z" MeshPrediction="1" UseBFrames="1" IndexFrameDistance="10" BlockCompressionFormat="deflate" PlaybackFromMemory="0" PositionPrecision="1" UVmax="0"/>

@ -1 +0,0 @@
<CacheBuildConfiguration Name="Game (fast decode, Z-up)" UpAxis="Z" MeshPrediction="1" UseBFrames="1" IndexFrameDistance="10" BlockCompressionFormat="lz4hc" PlaybackFromMemory="0" PositionPrecision="1" UVmax="0"/>

@ -1 +0,0 @@
<CacheBuildConfiguration Name="Prerendered" UpAxis="Y" MeshPrediction="1" UseBFrames="1" IndexFrameDistance="10" BlockCompressionFormat="deflate" PlaybackFromMemory="0" PositionPrecision="0" UVmax="0"/>

@ -1 +0,0 @@
<CacheBuildConfiguration Name="Prerendered (Z-up)" UpAxis="Z" MeshPrediction="1" UseBFrames="1" IndexFrameDistance="10" BlockCompressionFormat="deflate" PlaybackFromMemory="0" PositionPrecision="0" UVmax="0"/>

@ -1 +0,0 @@
<CacheBuildConfiguration Name="Rigids Only" UpAxis="Y" MeshPrediction="0" UseBFrames="0" IndexFrameDistance="10" BlockCompressionFormat="deflate" PlaybackFromMemory="1" PositionPrecision="0" UVmax="0"/>

@ -1 +0,0 @@
<CacheBuildConfiguration Name="Rigids Only (Z-up)" UpAxis="Z" MeshPrediction="0" UseBFrames="0" IndexFrameDistance="10" BlockCompressionFormat="deflate" PlaybackFromMemory="1" PositionPrecision="0" UVmax="0"/>

@ -1 +0,0 @@
<CacheBuildConfiguration Name="Uncompressed (fastest compile)" UpAxis="Y" MeshPrediction="0" UseBFrames="0" IndexFrameDistance="10" BlockCompressionFormat="store" PlaybackFromMemory="0" PositionPrecision="0" UVmax="0"/>

@ -1 +0,0 @@
<CacheBuildConfiguration Name="Uncompressed (fastest compile, Z-up)" UpAxis="Z" MeshPrediction="0" UseBFrames="0" IndexFrameDistance="10" BlockCompressionFormat="store" PlaybackFromMemory="0" PositionPrecision="0" UVmax="0"/>

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9c36d7bc993ddf616f478115a123efabda5b4b833a4e6524312f43c228ae0902
size 487003

@ -1 +0,0 @@
<CacheBuildConfiguration UpAxis="Y" MeshPrediction="1" UseBFrames="1" IndexFrameDistance="15" BlockCompressionFormat="deflate" PlaybackFromMemory="1"/>

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:96a21446422b834ea90a5d38eaaca309fdee31dc3cc03c0e9c094b39ec3a459d
size 4715164

@ -1,17 +0,0 @@
<Material MtlFlags="524544" vertModifType="0">
<SubMaterials>
<Material Name="mat01_white" MtlFlags="524416" Shader="Illum" GenMask="12000020040003" StringGenMask="%ALLOW_SILHOUETTE_POM%ALLOW_SPECULAR_ANTIALIASING%EMITTANCE_MAP%NORMAL_MAP%SPECULAR_MAP%SUBSURFACE_SCATTERING" SurfaceType="mat_default" Diffuse="1,1,1,1" Specular="0.5,0.5,0.5,1" Opacity="1" Shininess="174.72" vertModifType="0" LayerAct="1">
<Textures>
<Texture Map="Diffuse" File="engineassets/textures/white.dds"/>
</Textures>
<PublicParams EmittanceMapGamma="1" SSSIndex="0" IndirectColor="0.25,0.25,0.25"/>
</Material>
<Material Name="mat02_grey" MtlFlags="524416" Shader="Illum" GenMask="10000000000003" StringGenMask="%ALLOW_SILHOUETTE_POM%ALLOW_SPECULAR_ANTIALIASING%SUBSURFACE_SCATTERING" SurfaceType="mat_default" Diffuse="0.5,0.5,0.5,1" Specular="0.5,0.5,0.5,1" Opacity="1" Shininess="10" vertModifType="0" LayerAct="1">
<Textures>
<Texture Map="Diffuse" File="engineassets/textures/white.dds"/>
</Textures>
<PublicParams EmittanceMapGamma="1" SSSIndex="0" IndirectColor="0.25,0.25,0.25"/>
</Material>
</SubMaterials>
<PublicParams EmittanceMapGamma="1" SSSIndex="0" IndirectColor="0.25,0.25,0.25"/>
</Material>

@ -181,12 +181,30 @@ 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) if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_LARGE_WORLDS_TEST_SUPPORTED)
## DynVeg ## ## DynVeg ##
# 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( ly_add_pytest(
NAME AutomatedTesting::DynamicVegetationTests_Main NAME AutomatedTesting::DynamicVegetationTests_Sandbox
TEST_SERIAL TEST_SERIAL
TEST_SUITE main TEST_SUITE sandbox
PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/dyn_veg PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/dyn_veg
PYTEST_MARKS "not SUITE_sandbox and not SUITE_periodic and not SUITE_benchmark" PYTEST_MARKS "SUITE_sandbox"
TIMEOUT 1500 TIMEOUT 1500
RUNTIME_DEPENDENCIES RUNTIME_DEPENDENCIES
AZ::AssetProcessor AZ::AssetProcessor
@ -198,27 +216,26 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_
) )
ly_add_pytest( ly_add_pytest(
NAME AutomatedTesting::DynamicVegetationTests_Sandbox NAME AutomatedTesting::DynamicVegetationFilterTests_Periodic
TEST_SERIAL TEST_SERIAL
TEST_SUITE sandbox TEST_SUITE periodic
PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/dyn_veg PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/dyn_veg
PYTEST_MARKS "SUITE_sandbox" PYTEST_MARKS "SUITE_periodic and dynveg_filter"
TIMEOUT 1500 TIMEOUT 1500
RUNTIME_DEPENDENCIES RUNTIME_DEPENDENCIES
AZ::AssetProcessor AZ::AssetProcessor
Legacy::Editor Legacy::Editor
AutomatedTesting.GameLauncher
AutomatedTesting.Assets AutomatedTesting.Assets
COMPONENT COMPONENT
LargeWorlds LargeWorlds
) )
ly_add_pytest( ly_add_pytest(
NAME AutomatedTesting::DynamicVegetationTests_Periodic NAME AutomatedTesting::DynamicVegetationModifierTests_Periodic
TEST_SERIAL TEST_SERIAL
TEST_SUITE periodic TEST_SUITE periodic
PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/dyn_veg PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/dyn_veg
PYTEST_MARKS "SUITE_periodic" PYTEST_MARKS "SUITE_periodic and dynveg_modifier"
TIMEOUT 1500 TIMEOUT 1500
RUNTIME_DEPENDENCIES RUNTIME_DEPENDENCIES
AZ::AssetProcessor AZ::AssetProcessor
@ -228,22 +245,82 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_
LargeWorlds LargeWorlds
) )
## LandscapeCanvas ##
ly_add_pytest( ly_add_pytest(
NAME AutomatedTesting::LandscapeCanvasTests_Main NAME AutomatedTesting::DynamicVegetationRegressionTests_Periodic
TEST_SERIAL TEST_SERIAL
TEST_SUITE main TEST_SUITE periodic
PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/landscape_canvas PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/dyn_veg
PYTEST_MARKS "not SUITE_sandbox and not SUITE_periodic and not SUITE_benchmark" PYTEST_MARKS "SUITE_periodic and dynveg_regression"
TIMEOUT 1500 TIMEOUT 1500
RUNTIME_DEPENDENCIES RUNTIME_DEPENDENCIES
AZ::AssetProcessor AZ::AssetProcessor
Legacy::Editor Legacy::Editor
AutomatedTesting.Assets AutomatedTesting.Assets
COMPONENT COMPONENT
LargeWorlds 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( ly_add_pytest(
NAME AutomatedTesting::LandscapeCanvasTests_Periodic NAME AutomatedTesting::LandscapeCanvasTests_Periodic
TEST_SERIAL TEST_SERIAL

@ -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 # 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 # 20 instances per 16 meters
spawner_entity.get_set_test(0, 'Configuration|Allow Empty Assets', True) spawner_entity.get_set_test(0, 'Configuration|Allow Empty Assets', True)
general.idle_wait(1.0)
num_expected_instances = 20 * 20 num_expected_instances = 20 * 20
box = azlmbr.shape.ShapeComponentRequestsBus(bus.Event, 'GetEncompassingAabb', spawner_entity.id) 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)
num_found = azlmbr.areasystem.AreaSystemRequestBus(bus.Broadcast, 'GetInstanceCountInAabb', box)
property_tree_success = property_tree_success and (num_found == num_expected_instances)
self.test_success = self.test_success and property_tree_success self.test_success = self.test_success and property_tree_success
self.log(f'Property Tree spawner type test: {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' # Since we have an empty slice path, we should have 0 instances once we disable 'Allow Empty Assets'
num_expected_instances = 0 num_expected_instances = 0
allow_empty_assets_success = allow_empty_assets_success and spawner_entity.get_set_test(0, 'Configuration|Allow Empty Assets', False) 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) self.log('Allow Empty Assets test:')
num_found = azlmbr.areasystem.AreaSystemRequestBus(bus.Broadcast, 'GetInstanceCountInAabb', box) 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.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.test_success = self.test_success and allow_empty_assets_success self.test_success = self.test_success and allow_empty_assets_success
self.log(f'Allow Empty Assets test: {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 = hydra.get_component_property_value(spawner_entity.components[2], 'Configuration|Embedded Assets|[0]')
descriptor.spawner = dynamic_slice_spawner descriptor.spawner = dynamic_slice_spawner
spawns_slices_success = spawns_slices_success and spawner_entity.get_set_test(2, "Configuration|Embedded Assets|[0]", descriptor) spawns_slices_success = spawns_slices_success and spawner_entity.get_set_test(2, "Configuration|Embedded Assets|[0]", descriptor)
general.idle_wait(1.0) self.log('Spawn dynamic slices test:')
num_found = azlmbr.areasystem.AreaSystemRequestBus(bus.Broadcast, 'GetInstanceCountInAabb', box) 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.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.test_success = self.test_success and spawns_slices_success self.test_success = self.test_success and spawns_slices_success
self.log(f'Spawn dynamic slices test: {spawns_slices_success}') self.log(f'Spawn dynamic slices test: {spawns_slices_success}')

@ -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 # 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 # 20 instances per 16 meters
general.idle_wait(2.0)
num_expected_instances = 20 * 20 num_expected_instances = 20 * 20
box = azlmbr.shape.ShapeComponentRequestsBus(bus.Event, 'GetEncompassingAabb', spawner_entity.id) 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)
num_found = azlmbr.areasystem.AreaSystemRequestBus(bus.Broadcast, 'GetInstanceCountInAabb', box)
property_tree_success = property_tree_success and (num_found == num_expected_instances)
self.test_success = self.test_success and property_tree_success 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}') self.log(f'Property Tree spawner type test: {property_tree_success}')
# 6) Validate that the "Allow Empty Assets" setting doesn't affect the EmptyInstanceSpawner # 6) Validate that the "Allow Empty Assets" setting doesn't affect the EmptyInstanceSpawner
allow_empty_assets_success = True allow_empty_assets_success = True
spawner_entity.get_set_test(0, 'Configuration|Allow Empty Assets', False) spawner_entity.get_set_test(0, 'Configuration|Allow Empty Assets', False)
general.idle_wait(2.0) 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)
num_found = azlmbr.areasystem.AreaSystemRequestBus(bus.Broadcast, 'GetInstanceCountInAabb', box)
allow_empty_assets_success = allow_empty_assets_success and (num_found == num_expected_instances)
self.test_success = self.test_success and allow_empty_assets_success self.test_success = self.test_success and allow_empty_assets_success
self.log(f'Allow Empty Assets test: {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.test_case_id('C4814463', 'C4847477')
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_filter
def test_AltitudeFilter_ComponentAndOverrides_InstancesPlantAtSpecifiedAltitude(self, request, editor, level, def test_AltitudeFilter_ComponentAndOverrides_InstancesPlantAtSpecifiedAltitude(self, request, editor, level,
launcher_platform): launcher_platform):
@ -61,6 +62,7 @@ class TestAltitudeFilter(object):
@pytest.mark.test_case_id("C4847476") @pytest.mark.test_case_id("C4847476")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_filter
def test_AltitudeFilter_ShapeSample_InstancesPlantAtSpecifiedAltitude(self, request, editor, level, def test_AltitudeFilter_ShapeSample_InstancesPlantAtSpecifiedAltitude(self, request, editor, level,
launcher_platform): launcher_platform):
@ -85,6 +87,7 @@ class TestAltitudeFilter(object):
@pytest.mark.test_case_id("C4847478") @pytest.mark.test_case_id("C4847478")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_filter
@pytest.mark.xfail # LYN-3275 @pytest.mark.xfail # LYN-3275
def test_AltitudeFilter_FilterStageToggle(self, request, editor, level, workspace, launcher_platform): def test_AltitudeFilter_FilterStageToggle(self, request, editor, level, workspace, launcher_platform):
cfg_args = [level] cfg_args = [level]

@ -52,6 +52,7 @@ class TestAreaComponents(object):
@pytest.mark.test_case_id("C2627900", "C2627905", "C2627904") @pytest.mark.test_case_id("C2627900", "C2627905", "C2627904")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_misc
def test_AreaComponents_SliceCreationVisibilityToggleWorks(self, request, editor, level, workspace, def test_AreaComponents_SliceCreationVisibilityToggleWorks(self, request, editor, level, workspace,
launcher_platform): launcher_platform):
cfg_args = [level] cfg_args = [level]

@ -38,6 +38,7 @@ class TestAssetListCombiner(object):
@pytest.mark.test_case_id("C4762374", "C4762373") @pytest.mark.test_case_id("C4762374", "C4762373")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_misc
def test_AssetListCombiner_CombinedDescriptorsExpressInConfiguredArea(self, request, editor, level, def test_AssetListCombiner_CombinedDescriptorsExpressInConfiguredArea(self, request, editor, level,
launcher_platform): launcher_platform):

@ -42,6 +42,7 @@ class TestAssetWeightSelector(object):
@pytest.mark.test_case_id("C6269654", "C4762368") @pytest.mark.test_case_id("C6269654", "C4762368")
@pytest.mark.SUITE_sandbox @pytest.mark.SUITE_sandbox
@pytest.mark.dynveg_filter
def test_AssetWeightSelector_InstancesExpressBasedOnWeight(self, request, editor, level, launcher_platform): def test_AssetWeightSelector_InstancesExpressBasedOnWeight(self, request, editor, level, launcher_platform):
expected_lines = [ expected_lines = [

@ -40,6 +40,7 @@ class TestDebugger(object):
@pytest.mark.test_case_id("C2789148") @pytest.mark.test_case_id("C2789148")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_misc
def test_Debugger_DebugCVarsWork(self, request, editor, level, workspace, launcher_platform): def test_Debugger_DebugCVarsWork(self, request, editor, level, workspace, launcher_platform):
cfg_args = [level] cfg_args = [level]

@ -38,6 +38,7 @@ class TestDistanceBetweenFilter(object):
@pytest.mark.test_case_id("C4851066") @pytest.mark.test_case_id("C4851066")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_filter
def test_DistanceBetweenFilter_InstancesPlantAtSpecifiedRadius(self, request, editor, level, launcher_platform): def test_DistanceBetweenFilter_InstancesPlantAtSpecifiedRadius(self, request, editor, level, launcher_platform):
expected_lines = [ expected_lines = [
@ -58,6 +59,7 @@ class TestDistanceBetweenFilter(object):
@pytest.mark.test_case_id("C4814458") @pytest.mark.test_case_id("C4814458")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_filter
def test_DistanceBetweenFilterOverrides_InstancesPlantAtSpecifiedRadius(self, request, editor, level, def test_DistanceBetweenFilterOverrides_InstancesPlantAtSpecifiedRadius(self, request, editor, level,
launcher_platform): launcher_platform):

@ -40,6 +40,7 @@ class Test_DynVeg_Regressions(object):
@pytest.mark.test_case_id("C29470845") @pytest.mark.test_case_id("C29470845")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_regression
def test_SurfaceDataRefreshes_RemainsStable(self, request, editor, level, launcher_platform): def test_SurfaceDataRefreshes_RemainsStable(self, request, editor, level, launcher_platform):
expected_lines = [ expected_lines = [

@ -41,7 +41,8 @@ class TestDynamicSliceInstanceSpawner(object):
return console return console
@pytest.mark.test_case_id("C28851763") @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']) @pytest.mark.parametrize("launcher_platform", ['windows_editor'])
def test_DynamicSliceInstanceSpawner_DynamicSliceSpawnerWorks(self, request, editor, level, workspace, project, def test_DynamicSliceInstanceSpawner_DynamicSliceSpawnerWorks(self, request, editor, level, workspace, project,
launcher_platform): launcher_platform):
@ -66,6 +67,7 @@ class TestDynamicSliceInstanceSpawner(object):
@pytest.mark.test_case_id('C2574330') @pytest.mark.test_case_id('C2574330')
@pytest.mark.BAT @pytest.mark.BAT
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_area
@pytest.mark.parametrize("launcher_platform", ['windows_editor']) @pytest.mark.parametrize("launcher_platform", ['windows_editor'])
def test_DynamicSliceInstanceSpawner_Embedded_E2E_Editor(self, workspace, request, editor, level, project, def test_DynamicSliceInstanceSpawner_Embedded_E2E_Editor(self, workspace, request, editor, level, project,
launcher_platform): launcher_platform):
@ -85,6 +87,7 @@ class TestDynamicSliceInstanceSpawner(object):
@pytest.mark.test_case_id('C2574330') @pytest.mark.test_case_id('C2574330')
@pytest.mark.BAT @pytest.mark.BAT
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_area
@pytest.mark.parametrize("launcher_platform", ['windows']) @pytest.mark.parametrize("launcher_platform", ['windows'])
@pytest.mark.skip # ATOM-14703 @pytest.mark.skip # ATOM-14703
def test_DynamicSliceInstanceSpawner_Embedded_E2E_Launcher(self, workspace, launcher, level, 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.test_case_id('C4762367')
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_area
@pytest.mark.parametrize("launcher_platform", ['windows_editor']) @pytest.mark.parametrize("launcher_platform", ['windows_editor'])
def test_DynamicSliceInstanceSpawner_External_E2E_Editor(self, workspace, request, editor, level, project, def test_DynamicSliceInstanceSpawner_External_E2E_Editor(self, workspace, request, editor, level, project,
launcher_platform): launcher_platform):
@ -119,6 +123,7 @@ class TestDynamicSliceInstanceSpawner(object):
@pytest.mark.test_case_id('C4762367') @pytest.mark.test_case_id('C4762367')
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_area
@pytest.mark.parametrize("launcher_platform", ['windows']) @pytest.mark.parametrize("launcher_platform", ['windows'])
@pytest.mark.skip # ATOM-14703 @pytest.mark.skip # ATOM-14703
def test_DynamicSliceInstanceSpawner_External_E2E_Launcher(self, workspace, launcher, level, 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) 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.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): def test_EmptyInstanceSpawner_EmptySpawnerWorks(self, request, editor, level, launcher_platform):
cfg_args = [level] cfg_args = [level]

@ -43,6 +43,7 @@ class TestInstanceSpawnerPriority(object):
@pytest.mark.test_case_id("C5747383", "C4762382") @pytest.mark.test_case_id("C5747383", "C4762382")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_misc
def test_InstanceSpawnerPriority_LayerAndSubPriority_HigherValuesPlantOverLower(self, request, editor, level, def test_InstanceSpawnerPriority_LayerAndSubPriority_HigherValuesPlantOverLower(self, request, editor, level,
launcher_platform): launcher_platform):

@ -20,17 +20,10 @@ import pytest
pytest.importorskip("ly_test_tools") pytest.importorskip("ly_test_tools")
import time as time import ly_remote_console.remote_console_commands as remote_console_commands
import editor_python_test_tools.hydra_test_utils as hydra
import ly_test_tools.launchers.launcher_helper as launcher_helper
import ly_test_tools.environment.waiter as waiter import ly_test_tools.environment.waiter as waiter
import ly_test_tools.environment.file_system as file_system import ly_test_tools.environment.file_system as file_system
import ly_remote_console.remote_console_commands as remote_console_commands import editor_python_test_tools.hydra_test_utils as hydra
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
test_directory = os.path.join(os.path.dirname(__file__), "EditorScripts") 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.test_case_id("C2627906")
@pytest.mark.BAT @pytest.mark.BAT
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_area
@pytest.mark.parametrize("launcher_platform", ['windows_editor']) @pytest.mark.parametrize("launcher_platform", ['windows_editor'])
def test_LayerBlender_E2E_Editor(self, workspace, request, editor, project, level, launcher_platform): def test_LayerBlender_E2E_Editor(self, workspace, request, editor, project, level, launcher_platform):
# Make sure temp level doesn't already exist # Make sure temp level doesn't already exist
@ -95,6 +89,7 @@ class TestLayerBlender(object):
@pytest.mark.test_case_id("C2627906") @pytest.mark.test_case_id("C2627906")
@pytest.mark.BAT @pytest.mark.BAT
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_area
@pytest.mark.xfail @pytest.mark.xfail
@pytest.mark.parametrize("launcher_platform", ['windows']) @pytest.mark.parametrize("launcher_platform", ['windows'])
def test_LayerBlender_E2E_Launcher(self, workspace, project, launcher, level, remote_console_instance, 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.test_case_id("C2793772")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_area
def test_LayerBlocker_InstancesBlockedInConfiguredArea(self, request, editor, level, launcher_platform): def test_LayerBlocker_InstancesBlockedInConfiguredArea(self, request, editor, level, launcher_platform):
expected_lines = [ expected_lines = [

@ -40,6 +40,7 @@ class TestLayerSpawner(object):
@pytest.mark.test_case_id("C4762381") @pytest.mark.test_case_id("C4762381")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_misc
def test_LayerSpawner_InheritBehaviorFlag(self, request, editor, level, workspace, launcher_platform): def test_LayerSpawner_InheritBehaviorFlag(self, request, editor, level, workspace, launcher_platform):
expected_lines = [ expected_lines = [
@ -60,6 +61,7 @@ class TestLayerSpawner(object):
@pytest.mark.test_case_id("C2802020") @pytest.mark.test_case_id("C2802020")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_misc
def test_LayerSpawner_InstancesPlantInAllSupportedShapes(self, request, editor, level, launcher_platform): def test_LayerSpawner_InstancesPlantInAllSupportedShapes(self, request, editor, level, launcher_platform):
expected_lines = [ expected_lines = [
@ -101,6 +103,7 @@ class TestLayerSpawner(object):
@pytest.mark.test_case_id("C4765973") @pytest.mark.test_case_id("C4765973")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_misc
@pytest.mark.xfail # LYN-3275 @pytest.mark.xfail # LYN-3275
def test_LayerSpawner_FilterStageToggle(self, request, editor, level, workspace, launcher_platform): 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.test_case_id("C30000751")
@pytest.mark.SUITE_sandbox @pytest.mark.SUITE_sandbox
@pytest.mark.dynveg_misc
@pytest.mark.skip # ATOM-14828 @pytest.mark.skip # ATOM-14828
def test_LayerSpawner_InstancesRefreshUsingCorrectViewportCamera(self, request, editor, level, launcher_platform): 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.test_case_id("C3980834")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_area
@pytest.mark.xfail # LYN-3273 @pytest.mark.xfail # LYN-3273
def test_MeshBlocker_InstancesBlockedByMesh(self, request, editor, level, launcher_platform): def test_MeshBlocker_InstancesBlockedByMesh(self, request, editor, level, launcher_platform):
expected_lines = [ expected_lines = [
@ -70,6 +71,7 @@ class TestMeshBlocker(object):
""" """
@pytest.mark.test_case_id("C4766030") @pytest.mark.test_case_id("C4766030")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_area
@pytest.mark.xfail # LYN-3273 @pytest.mark.xfail # LYN-3273
def test_MeshBlocker_InstancesBlockedByMeshHeightTuning(self, request, editor, level, launcher_platform): def test_MeshBlocker_InstancesBlockedByMeshHeightTuning(self, request, editor, level, launcher_platform):
expected_lines = [ expected_lines = [

@ -38,6 +38,7 @@ class TestMeshSurfaceTagEmitter(object):
@pytest.mark.test_case_id("C2908172") @pytest.mark.test_case_id("C2908172")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_surfacetagemitter
def test_MeshSurfaceTagEmitter_DependentOnMeshComponent(self, request, editor, level, launcher_platform): def test_MeshSurfaceTagEmitter_DependentOnMeshComponent(self, request, editor, level, launcher_platform):
expected_lines = [ expected_lines = [
@ -66,6 +67,7 @@ class TestMeshSurfaceTagEmitter(object):
@pytest.mark.test_case_id("C2908174") @pytest.mark.test_case_id("C2908174")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_surfacetagemitter
def test_MeshSurfaceTagEmitter_SurfaceTagsAddRemoveSuccessfully(self, request, editor, level, launcher_platform): def test_MeshSurfaceTagEmitter_SurfaceTagsAddRemoveSuccessfully(self, request, editor, level, launcher_platform):
expected_lines = [ expected_lines = [

@ -38,6 +38,7 @@ class TestPhysXColliderSurfaceTagEmitter(object):
@pytest.mark.test_case_id("C29053640") @pytest.mark.test_case_id("C29053640")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_surfacetagemitter
def test_PhysXColliderSurfaceTagEmitter_E2E_Editor(self, request, editor, level, launcher_platform): def test_PhysXColliderSurfaceTagEmitter_E2E_Editor(self, request, editor, level, launcher_platform):
expected_lines = [ expected_lines = [

@ -38,6 +38,7 @@ class TestPositionModifier(object):
@pytest.mark.test_case_id("C4874099", "C4814461") @pytest.mark.test_case_id("C4874099", "C4814461")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_modifier
def test_PositionModifier_ComponentAndOverrides_InstancesPlantAtSpecifiedOffsets(self, request, editor, level, def test_PositionModifier_ComponentAndOverrides_InstancesPlantAtSpecifiedOffsets(self, request, editor, level,
launcher_platform): launcher_platform):
@ -60,6 +61,7 @@ class TestPositionModifier(object):
@pytest.mark.test_case_id("C4874100") @pytest.mark.test_case_id("C4874100")
@pytest.mark.SUITE_sandbox @pytest.mark.SUITE_sandbox
@pytest.mark.dynveg_modifier
@pytest.mark.xfail # LYN-3275 @pytest.mark.xfail # LYN-3275
def test_PositionModifier_AutoSnapToSurfaceWorks(self, request, editor, level, launcher_platform): 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.test_case_id("C4896922")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_modifier
def test_RotationModifier_InstancesRotateWithinRange(self, request, editor, level, launcher_platform) -> None: 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. 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.test_case_id("C4814460")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_modifier
def test_RotationModifierOverrides_InstancesRotateWithinRange(self, request, editor, level, launcher_platform) -> None: def test_RotationModifierOverrides_InstancesRotateWithinRange(self, request, editor, level, launcher_platform) -> None:
expected_lines = [ expected_lines = [

@ -41,6 +41,7 @@ class TestScaleOverrideWorksSuccessfully(object):
@pytest.mark.test_case_id("C4814462") @pytest.mark.test_case_id("C4814462")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_modifier
def test_ScaleModifierOverrides_InstancesProperlyScale(self, request, editor, level, launcher_platform): def test_ScaleModifierOverrides_InstancesProperlyScale(self, request, editor, level, launcher_platform):
expected_lines = [ expected_lines = [
@ -70,6 +71,7 @@ class TestScaleOverrideWorksSuccessfully(object):
@pytest.mark.test_case_id("C4896937") @pytest.mark.test_case_id("C4896937")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_modifier
def test_ScaleModifier_InstancesProperlyScale(self, request, editor, level, launcher_platform): def test_ScaleModifier_InstancesProperlyScale(self, request, editor, level, launcher_platform):
expected_lines = [ expected_lines = [

@ -38,6 +38,7 @@ class TestShapeIntersectionFilter(object):
@pytest.mark.test_case_id("C4874094") @pytest.mark.test_case_id("C4874094")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_filter
def test_ShapeIntersectionFilter_InstancesPlantInAssignedShape(self, request, editor, level, launcher_platform): def test_ShapeIntersectionFilter_InstancesPlantInAssignedShape(self, request, editor, level, launcher_platform):
expected_lines = [ expected_lines = [

@ -41,6 +41,7 @@ class TestSlopeAlignmentModifier(object):
@pytest.mark.test_case_id("C4896941") @pytest.mark.test_case_id("C4896941")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_modifier
@pytest.mark.skip # ATOM-14299 @pytest.mark.skip # ATOM-14299
def test_SlopeAlignmentModifier_InstanceSurfaceAlignment(self, request, editor, level, launcher_platform): 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.test_case_id("C4814459")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_modifier
@pytest.mark.skip # ATOM-14299 @pytest.mark.skip # ATOM-14299
def test_SlopeAlignmentModifierOverrides_InstanceSurfaceAlignment(self, request, editor, level, launcher_platform): 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.test_case_id("C4874097")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_filter
def test_SlopeFilter_FilterStageToggle(self, request, editor, level, workspace, launcher_platform): def test_SlopeFilter_FilterStageToggle(self, request, editor, level, workspace, launcher_platform):
cfg_args = [level] cfg_args = [level]
@ -70,6 +71,7 @@ class TestSlopeFilter(object):
@pytest.mark.test_case_id("C4814464", "C4874096") @pytest.mark.test_case_id("C4814464", "C4874096")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_filter
@pytest.mark.skip # LYN-2211 @pytest.mark.skip # LYN-2211
def test_SlopeFilter_ComponentAndOverrides_InstancesPlantOnValidSlopes(self, request, editor, level, def test_SlopeFilter_ComponentAndOverrides_InstancesPlantOnValidSlopes(self, request, editor, level,
launcher_platform): 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. # 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.SUITE_periodic
@pytest.mark.dynveg_filter
def test_SurfaceMaskFilter_BasicSurfaceTagCreation(self, request, level, editor, launcher_platform): def test_SurfaceMaskFilter_BasicSurfaceTagCreation(self, request, level, editor, launcher_platform):
expected_lines = [ expected_lines = [
@ -61,6 +62,7 @@ class TestSurfaceMaskFilter(object):
@pytest.mark.test_case_id("C2561342") @pytest.mark.test_case_id("C2561342")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_filter
def test_SurfaceMaskFilter_ExclusiveSurfaceTags_Function(self, request, editor, level, launcher_platform): def test_SurfaceMaskFilter_ExclusiveSurfaceTags_Function(self, request, editor, level, launcher_platform):
expected_lines = [ expected_lines = [
@ -93,6 +95,7 @@ class TestSurfaceMaskFilter(object):
@pytest.mark.test_case_id("C2561341") @pytest.mark.test_case_id("C2561341")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_filter
def test_SurfaceMaskFilter_InclusiveSurfaceTags_Function(self, request, editor, level, launcher_platform): def test_SurfaceMaskFilter_InclusiveSurfaceTags_Function(self, request, editor, level, launcher_platform):
expected_lines = [ expected_lines = [
@ -125,6 +128,7 @@ class TestSurfaceMaskFilter(object):
@pytest.mark.test_case_id("C3711666") @pytest.mark.test_case_id("C3711666")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_filter
def test_SurfaceMaskFilterOverrides_MultipleDescriptorOverridesPlantAsExpected(self, request, editor, level, def test_SurfaceMaskFilterOverrides_MultipleDescriptorOverridesPlantAsExpected(self, request, editor, level,
launcher_platform): launcher_platform):

@ -38,6 +38,7 @@ class TestSystemSettings(object):
@pytest.mark.test_case_id("C2646869") @pytest.mark.test_case_id("C2646869")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_misc
def test_SystemSettings_SectorPointDensity(self, request, editor, level, launcher_platform): def test_SystemSettings_SectorPointDensity(self, request, editor, level, launcher_platform):
expected_lines = [ expected_lines = [
@ -64,6 +65,7 @@ class TestSystemSettings(object):
@pytest.mark.test_case_id("C2646870") @pytest.mark.test_case_id("C2646870")
@pytest.mark.SUITE_periodic @pytest.mark.SUITE_periodic
@pytest.mark.dynveg_misc
def test_SystemSettings_SectorSize(self, request, editor, level, launcher_platform): def test_SystemSettings_SectorSize(self, request, editor, level, launcher_platform):
expected_lines = [ expected_lines = [

@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C100000 # Test case ID : C100000
# Test Case Title : Check that Gravity works # Test Case Title : Check that Gravity works
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/100000
# fmt:off # fmt:off

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C111111 # Test case ID : C111111
# Test Case Title : Check that Gravity works # Test Case Title : Check that Gravity works
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/111111
# fmt:off # fmt:off
class Tests: class Tests:

@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test Case ID : C12712452 # Test Case ID : C12712452
# Test Case Title : Verify ScriptCanvas Collision Events # Test Case Title : Verify ScriptCanvas Collision Events
# Test Case URL : https://testrail.agscollab.com/index.php?/cases/view/12712452
# fmt: off # fmt: off

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C12712453 # Test case ID : C12712453
# Test Case Title : Verify Raycast Multiple Node # Test Case Title : Verify Raycast Multiple Node
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/12712453
# fmt:off # fmt:off
class Tests: class Tests:

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : 12712454 # Test case ID : 12712454
# Test Case Title : Verify overlap nodes in script canvas # 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 # fmt: off
class Tests: class Tests:

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C12712455 # Test case ID : C12712455
# Test Case Title : Verify shape cast nodes in SC # 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 # fmt: off
class Tests: class Tests:

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C12868578 # Test case ID : C12868578
# Test Case Title : Check that World space and local space force direction doesn't affect magnitude of force exerted # 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 # fmt: off
class Tests: class Tests:

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C12868580 # Test case ID : C12868580
# Test Case Title : Check that spline follow force works if transform components of entity are altered # 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 # fmt: off

@ -10,7 +10,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C12905527 # Test case ID : C12905527
# Test Case Title : Check that deviation occurring in Force Magnitude due to Values in Force direction is not large # 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 # fmt: off
class Tests(): class Tests():

@ -10,7 +10,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID : C12905528 Test case ID : C12905528
Test Case Title : Check that user is warned if non-trigger collider component is used with force region 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 ID : C13351703
# Test Case Title : Check that Center of Mass calculations should not include trigger shapes # 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 # fmt: off

@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C13352089 # Test case ID : C13352089
# Test Case Title : Verify that maximum angular velocity interacts correctly with initial angular velocity # 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 # fmt: off

@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C13508019 # Test case ID : C13508019
# Test Case Title : Verify terrain materials are updated after using terrain texture layer painter. # 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 # fmt: off
class Tests: class Tests:

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C13895144 # Test case ID : C13895144
# Test Case Title : Run a level with multiple ragdolls and then switch levels # 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 # fmt: off

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C14195074 # Test case ID : C14195074
# Test Case Title : Verify Postsimulate Events # Test Case Title : Verify Postsimulate Events
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/14195074
# fmt: off # fmt: off
class Tests: class Tests:

@ -13,7 +13,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C14654881 # Test case ID : C14654881
# Test Case Title : Switching levels from a level containing a character controller component # Test Case Title : Switching levels from a level containing a character controller component
# should not lead to a crash # should not lead to a crash
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/14654881
# fmt: off # fmt: off

@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
""" """
Test case ID : C14654882 Test case ID : C14654882
Test Case Title : Loading level with old PhysX Ragdoll component serialization should not produce asset processor errors 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 ID : C14861498
# Test Case Title : Confirm that when a PhysXCollider has no physics asset, the physics asset collider \ # Test Case Title : Confirm that when a PhysXCollider has no physics asset, the physics asset collider \
# shape throw an error # shape throw an error
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/14861498
# fmt:off # fmt:off

@ -10,7 +10,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID : C14861500 Test case ID : C14861500
Test Case Title : Verify Default shape is Physics Asset Test Case Title : Verify Default shape is Physics Asset
URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/14861500
""" """

@ -10,7 +10,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID : C14861501 Test case ID : C14861501
Test Case Title : Verify PxMesh is auto-assigned when Collider component is added after Rendering Mesh component 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
""" """

@ -10,7 +10,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID : C14861502 Test case ID : C14861502
Test Case Title : Verify PxMesh is auto-assigned in collider when Mesh is assigned in Rendering Mesh component 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 ID : C14861504
Test Case Title : Verify if Rendering Mesh does not have a PhysX Collision Mesh fbx, then PxMesh is not auto-assigned 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 ID : C14902097
# Test Case Title : Verify Presimulate Events # Test Case Title : Verify Presimulate Events
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/14902097
# fmt: off # fmt: off
class Tests: class Tests:

@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C14902098 # Test case ID : C14902098
# Test Case Title : Check that force region simulation with Postsimulate works independently from rendering tick # 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 # fmt: off

@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C14976307 # Test case ID : C14976307
# Test Case Title : Check that Set Gravity Enabled works on an entity with gravity that starts as disabled # 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 # fmt: off

@ -13,7 +13,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test Case # Test Case
# ID : C14976308 # ID : C14976308
# Title : Verify that SetKinematicTarget on PhysX rigid body updates transform for kinematic entities and vice versa # 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 # fmt: off

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C15096732 # Test case ID : C15096732
# Test Case Title : Verify Default material library works across different levels # 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 # fmt: off
class Tests: class Tests:

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C15096732 # Test case ID : C15096732
# Test Case Title : Verify Default material library works across different levels # 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 # fmt: off
class Tests: class Tests:

@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C15096735 # Test case ID : C15096735
# Test Case Title : Verify that default material library works consistently across all systems that use it # 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 # fmt:off

@ -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 # Test Case Title : Verify that a change in the default material library material information
# affects all the materials that reference it, even non-defaulted # affects all the materials that reference it, even non-defaulted
# exactly like if the library was selected # exactly like if the library was selected
# URL of the test case : https://testrail.agscollab.com/index.php?/cases/view/15096737
# fmt: off # fmt: off
class Tests: class Tests:

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID : C15096740 Test case ID : C15096740
Test Case Title : Verify that clearing a material library on all systems that use it, Test Case Title : Verify that clearing a material library on all systems that use it,
assigns the default material library 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 ID : C15308217
# Test Case Title : Verify that the Terrain texture layer doesn't crash when changing # 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 # 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 # fmt: off

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test Case ID : C15308221 # 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 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 # fmt: off

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C15425929 # Test case ID : C15425929
# Test Case Title : Verify that undo - redo operations do not create any error # 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 # fmt: off

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C15425935 # Test case ID : C15425935
# Test Case Title : Verify that the change in Material Library gets updated across levels # 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 # fmt: off
class Tests: class Tests:

@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C15556261 # Test case ID : C15556261
# Test Case Title : Check that the material assignment works with Character Controller # 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 # fmt: off

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test Case ID : C15563573 # 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 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 # fmt: off

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C15845879 # Test case ID : C15845879
# Test Case Title : Check that linear damping with high values do not make the object to quiver # 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 # fmt: off
class Tests: class Tests:

@ -10,7 +10,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID : C17411467 Test case ID : C17411467
Test Case Title : Check that Physx Ragdoll component can be added without errors/warnings 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
""" """

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C18243580 # Test case ID : C18243580
# Test Case Title : Check that fixed joint constrains 2 bodies # 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 # fmt: off
class Tests: class Tests:

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C18243581 # Test case ID : C18243581
# Test Case Title : Check that fixed joint is breakable # 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 # fmt: off
class Tests: class Tests:

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C18243582 # Test case ID : C18243582
# Test Case Title : Check that fixed joint allows lead-follower collision # 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 # fmt: off
class Tests: class Tests:

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C18243583 # Test case ID : C18243583
# Test Case Title : Check that hinge joint constrains 2 bodies about X-axis # 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 # fmt: off
class Tests: class Tests:

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C18243584 # Test case ID : C18243584
# Test Case Title : Check that hinge joint allows soft limit constraints on 2 bodies # 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 # fmt: off
class Tests: class Tests:

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C18243585 # Test case ID : C18243585
# Test Case Title : Check that hinge joint allows no limit constraints on 2 bodies # 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 # fmt: off
class Tests: class Tests:

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C18243586 # Test case ID : C18243586
# Test Case Title : Check that hinge joint allows lead-follower collision # 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 # fmt: off
class Tests: class Tests:

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C18243587 # Test case ID : C18243587
# Test Case Title : Check that hinge joint is breakable # 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 # fmt: off
class Tests: class Tests:

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C18243588 # Test case ID : C18243588
# Test Case Title : Check that ball joint constrains 2 bodies within cone limits # 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 # fmt: off
class Tests: class Tests:
enter_game_mode = ("Entered game mode", "Failed to enter game mode") 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 : 18243589 # Test case ID : 18243589
# Test Case Title : Check that ball joint allows soft limit constraints # 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 # fmt: off
class Tests: class Tests:
@ -57,6 +57,7 @@ def C18243589_Joints_BallSoftLimitsConstrained():
""" """
import os import os
import sys import sys
import math
import ImportPathHelper as imports import ImportPathHelper as imports
@ -95,13 +96,33 @@ def C18243589_Joints_BallSoftLimitsConstrained():
Report.info_vector3(follower.position, "follower initial position:") Report.info_vector3(follower.position, "follower initial position:")
leadInitialPosition = lead.position leadInitialPosition = lead.position
followerInitialPosition = follower.position followerInitialPosition = follower.position
# 4) Wait for several seconds followerMovedAboveJoint = False
general.idle_wait(1.0) # wait for lead and follower to move #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
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 # 5) Check to see if lead and follower behaved as expected
Report.info_vector3(lead.position, "lead position after 1 second:") Report.info_vector3(lead.position, "lead position:")
Report.info_vector3(follower.position, "follower position after 1 second:") 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) leadPositionDelta = lead.position.Subtract(leadInitialPosition)
leadRemainedStill = JointsHelper.vector3SmallerThanScalar(leadPositionDelta, FLOAT_EPSILON) leadRemainedStill = JointsHelper.vector3SmallerThanScalar(leadPositionDelta, FLOAT_EPSILON)
@ -111,7 +132,6 @@ def C18243589_Joints_BallSoftLimitsConstrained():
followerMovedinXYZ = JointsHelper.vector3LargerThanScalar(followerPositionDelta, FLOAT_EPSILON) followerMovedinXYZ = JointsHelper.vector3LargerThanScalar(followerPositionDelta, FLOAT_EPSILON)
Report.critical_result(Tests.check_follower_position, followerMovedinXYZ) 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) Report.critical_result(Tests.check_follower_above_joint, followerMovedAboveJoint)
# 6) Exit Game Mode # 6) Exit Game Mode

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C18243590 # Test case ID : C18243590
# Test Case Title : Check that ball joint allows no limit constraints # 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 # fmt: off
class Tests: class Tests:

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C18243591 # Test case ID : C18243591
# Test Case Title : Check that ball joint allows lead-follower collision # 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 # fmt: off
class Tests: class Tests:

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C18243592 # Test case ID : C18243592
# Test Case Title : Check that ball joint is breakable # 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 # fmt: off
class Tests: class Tests:
enter_game_mode = ("Entered game mode", "Failed to enter game mode") 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 ID : C18243593
# Test Case Title : Check that fixed/hinge/ball joints allow constraints to global frame # 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 # fmt: off
class Tests: class Tests:

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C18977601 # Test case ID : C18977601
# Test Case Title : Verify that when two objects with different materials collide, the friction combine priority works # 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 # fmt: off

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# Test case ID : C18981526 # Test case ID : C18981526
# Test Case Title : Verify when two objects with different materials collide, the restitution combine priority works # 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 # fmt: off

@ -10,7 +10,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID : C19536274 Test case ID : C19536274
Test Case Title : Verify that the Get Collision Layer Name node prints the name of the collision layer 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
""" """

@ -10,7 +10,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID : C19536277 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 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
""" """

@ -10,7 +10,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID : C19578018 Test case ID : C19578018
Test Case Title : Verify that a shape collider component with no shape component indicates a missing service 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 # fmt: off

@ -10,7 +10,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Test case ID : C19578021 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 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
""" """

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save