ContainerEntitySelectionTests.cpp 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include <Tests/FocusMode/EditorFocusModeSelectionFixture.h>
  9. namespace UnitTest
  10. {
  11. TEST_F(EditorFocusModeSelectionFixture, ContainerEntitySelectionFindHighestSelectableEntityWithNoContainers)
  12. {
  13. // When no containers are in the way, the function will just return the entityId of the entity that was clicked.
  14. // Click on Car Entity
  15. ClickAtWorldPositionOnViewport(s_worldCarEntityPosition);
  16. // Verify the correct entity is selected
  17. auto selectedEntitiesAfter = GetSelectedEntities();
  18. EXPECT_EQ(selectedEntitiesAfter.size(), 1);
  19. EXPECT_EQ(selectedEntitiesAfter.front(), m_entityMap[CarEntityName]);
  20. }
  21. TEST_F(EditorFocusModeSelectionFixture, ContainerEntitySelectionFindHighestSelectableEntityWithClosedContainer)
  22. {
  23. // If a closed container is an ancestor of the queried entity, the closed container is selected.
  24. m_containerEntityInterface->RegisterEntityAsContainer(m_entityMap[StreetEntityName]); // Containers are closed by default
  25. // Click on Car Entity
  26. ClickAtWorldPositionOnViewport(s_worldCarEntityPosition);
  27. // Verify the correct entity is selected
  28. auto selectedEntitiesAfter = GetSelectedEntities();
  29. EXPECT_EQ(selectedEntitiesAfter.size(), 1);
  30. EXPECT_EQ(selectedEntitiesAfter.front(), m_entityMap[StreetEntityName]);
  31. // Restore default state for other tests.
  32. m_containerEntityInterface->UnregisterEntityAsContainer(m_entityMap[StreetEntityName]);
  33. }
  34. TEST_F(EditorFocusModeSelectionFixture, ContainerEntitySelectionFindHighestSelectableEntityWithOpenContainer)
  35. {
  36. // If a closed container is an ancestor of the queried entity, the closed container is selected.
  37. m_containerEntityInterface->RegisterEntityAsContainer(m_entityMap[StreetEntityName]);
  38. m_containerEntityInterface->SetContainerOpen(m_entityMap[StreetEntityName], true);
  39. // Click on Car Entity
  40. ClickAtWorldPositionOnViewport(s_worldCarEntityPosition);
  41. // Verify the correct entity is selected
  42. auto selectedEntitiesAfter = GetSelectedEntities();
  43. EXPECT_EQ(selectedEntitiesAfter.size(), 1);
  44. EXPECT_EQ(selectedEntitiesAfter.front(), m_entityMap[StreetEntityName]);
  45. // Restore default state for other tests.
  46. m_containerEntityInterface->UnregisterEntityAsContainer(m_entityMap[StreetEntityName]);
  47. }
  48. TEST_F(EditorFocusModeSelectionFixture, ContainerEntitySelectionFindHighestSelectableEntityWithMultipleClosedContainers)
  49. {
  50. // If multiple closed containers are ancestors of the queried entity, the highest closed container is selected.
  51. m_containerEntityInterface->RegisterEntityAsContainer(m_entityMap[StreetEntityName]);
  52. m_containerEntityInterface->RegisterEntityAsContainer(m_entityMap[CityEntityName]);
  53. // Click on Car Entity
  54. ClickAtWorldPositionOnViewport(s_worldCarEntityPosition);
  55. // Verify the correct entity is selected
  56. auto selectedEntitiesAfter = GetSelectedEntities();
  57. EXPECT_EQ(selectedEntitiesAfter.size(), 1);
  58. EXPECT_EQ(selectedEntitiesAfter.front(), m_entityMap[CityEntityName]);
  59. // Restore default state for other tests.
  60. m_containerEntityInterface->UnregisterEntityAsContainer(m_entityMap[StreetEntityName]);
  61. m_containerEntityInterface->UnregisterEntityAsContainer(m_entityMap[CityEntityName]);
  62. }
  63. TEST_F(EditorFocusModeSelectionFixture, ContainerEntitySelectionFindHighestSelectableEntityWithMultipleContainers)
  64. {
  65. // If multiple containers are ancestors of the queried entity, the highest closed container is selected.
  66. m_containerEntityInterface->RegisterEntityAsContainer(m_entityMap[StreetEntityName]);
  67. m_containerEntityInterface->RegisterEntityAsContainer(m_entityMap[CityEntityName]);
  68. m_containerEntityInterface->SetContainerOpen(m_entityMap[CityEntityName], true);
  69. // Click on Car Entity
  70. ClickAtWorldPositionOnViewport(s_worldCarEntityPosition);
  71. // Verify the correct entity is selected
  72. auto selectedEntitiesAfter = GetSelectedEntities();
  73. EXPECT_EQ(selectedEntitiesAfter.size(), 1);
  74. EXPECT_EQ(selectedEntitiesAfter.front(), m_entityMap[CityEntityName]);
  75. // Restore default state for other tests.
  76. m_containerEntityInterface->UnregisterEntityAsContainer(m_entityMap[StreetEntityName]);
  77. m_containerEntityInterface->UnregisterEntityAsContainer(m_entityMap[CityEntityName]);
  78. }
  79. } // namespace UnitTest