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

@@ -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());
}