test: close render object id coverage gaps

This commit is contained in:
2026-04-10 02:03:45 +08:00
parent 899442c64d
commit 131f46682b
3 changed files with 22 additions and 4 deletions

View File

@@ -29,6 +29,7 @@ using XCEngine::Rendering::BuildRenderCameraData;
using XCEngine::Rendering::CompareVisibleRenderItemsStable;
using XCEngine::Rendering::CollectRenderItemsForEntityIds;
using XCEngine::Rendering::ConvertRenderObjectIdToRuntimeObjectId;
using XCEngine::Rendering::IsValidRenderObjectId;
using XCEngine::Rendering::VisibleRenderItem;
using XCEngine::Rendering::kInvalidRenderObjectId;
using XCEngine::Resources::Mesh;
@@ -200,9 +201,10 @@ TEST_F(RenderSceneUtilityTest, CollectRenderItemsForEntityIdsFiltersInvalidTarge
ASSERT_EQ(renderables.size(), 1u);
EXPECT_EQ(renderables[0].gameObject, validObject);
EXPECT_EQ(renderables[0].meshRenderer, validObject->GetComponent<MeshRendererComponent>());
EXPECT_TRUE(renderables[0].hasSection);
EXPECT_TRUE(IsValidRenderObjectId(renderables[0].renderObjectId));
EXPECT_NE(renderables[0].renderObjectId, kInvalidRenderObjectId);
EXPECT_EQ(ConvertRenderObjectIdToRuntimeObjectId(renderables[0].renderObjectId), validObject->GetID());
EXPECT_TRUE(renderables[0].hasSection);
}
TEST_F(RenderSceneUtilityTest, CollectRenderItemsForEntityIdsExpandsMeshSections) {
@@ -221,6 +223,8 @@ TEST_F(RenderSceneUtilityTest, CollectRenderItemsForEntityIdsExpandsMeshSections
ASSERT_EQ(renderables.size(), 2u);
EXPECT_EQ(renderables[0].gameObject, object);
EXPECT_TRUE(IsValidRenderObjectId(renderables[0].renderObjectId));
EXPECT_EQ(renderables[0].renderObjectId, renderables[1].renderObjectId);
EXPECT_EQ(renderables[0].sectionIndex, 0u);
EXPECT_EQ(renderables[0].materialIndex, 0u);
EXPECT_EQ(renderables[1].sectionIndex, 1u);

View File

@@ -17,6 +17,7 @@ using XCEngine::Editor::ViewportObjectIdReadbackRequest;
using XCEngine::RHI::RHICommandQueue;
using XCEngine::RHI::RHITexture;
using XCEngine::RHI::ResourceStates;
using XCEngine::Rendering::kInvalidRenderObjectId;
using XCEngine::UI::UIPoint;
using XCEngine::UI::UISize;
@@ -85,6 +86,16 @@ TEST(ViewportObjectIdPickerTest, BuildReadbackRequestMapsViewportCoordinatesToTe
TEST(ViewportObjectIdPickerTest, TryPickViewportObjectIdEntityDecodesReadbackColor) {
const ViewportObjectIdPickContext context = CreateValidContext();
const ViewportObjectIdPickResult result = PickViewportObjectIdEntity(
context,
[](const ViewportObjectIdReadbackRequest&, std::array<uint8_t, 4>& outRgba) {
outRgba = { 0x78, 0x56, 0x34, 0x12 };
return true;
});
EXPECT_EQ(result.renderObjectId, 0x12345678u);
EXPECT_EQ(result.entityId, 0x12345678ull);
EXPECT_TRUE(result.HasResolvedSample());
uint64_t entityId = 0;
ViewportObjectIdReadbackRequest capturedRequest = {};
const bool picked = TryPickViewportObjectIdEntity(
@@ -113,6 +124,7 @@ TEST(ViewportObjectIdPickerTest, PickViewportObjectIdEntityReturnsSuccessForZero
});
EXPECT_EQ(result.status, ViewportObjectIdPickStatus::Success);
EXPECT_EQ(result.renderObjectId, kInvalidRenderObjectId);
EXPECT_EQ(result.entityId, 0u);
EXPECT_TRUE(result.HasResolvedSample());
}
@@ -128,6 +140,7 @@ TEST(ViewportObjectIdPickerTest, PickViewportObjectIdEntityReturnsUnavailableWhe
});
EXPECT_EQ(result.status, ViewportObjectIdPickStatus::Unavailable);
EXPECT_EQ(result.renderObjectId, kInvalidRenderObjectId);
EXPECT_EQ(result.entityId, 0u);
EXPECT_FALSE(result.HasResolvedSample());
}
@@ -157,6 +170,7 @@ TEST(ViewportObjectIdPickerTest, PickViewportObjectIdEntityReportsReadbackFailur
});
EXPECT_EQ(result.status, ViewportObjectIdPickStatus::ReadbackFailed);
EXPECT_EQ(result.renderObjectId, kInvalidRenderObjectId);
EXPECT_EQ(result.entityId, 0u);
EXPECT_FALSE(result.HasResolvedSample());
}