test: cover object-id pick result states
This commit is contained in:
@@ -8,8 +8,11 @@ namespace {
|
||||
|
||||
using XCEngine::Editor::BuildViewportObjectIdReadbackRequest;
|
||||
using XCEngine::Editor::CanPickViewportObjectId;
|
||||
using XCEngine::Editor::PickViewportObjectIdEntity;
|
||||
using XCEngine::Editor::TryPickViewportObjectIdEntity;
|
||||
using XCEngine::Editor::ViewportObjectIdPickContext;
|
||||
using XCEngine::Editor::ViewportObjectIdPickResult;
|
||||
using XCEngine::Editor::ViewportObjectIdPickStatus;
|
||||
using XCEngine::Editor::ViewportObjectIdReadbackRequest;
|
||||
using XCEngine::RHI::RHICommandQueue;
|
||||
using XCEngine::RHI::RHITexture;
|
||||
@@ -97,6 +100,36 @@ TEST(ViewportObjectIdPickerTest, TryPickViewportObjectIdEntityDecodesReadbackCol
|
||||
EXPECT_EQ(capturedRequest.pixelY, 360u);
|
||||
}
|
||||
|
||||
TEST(ViewportObjectIdPickerTest, PickViewportObjectIdEntityReturnsSuccessForZeroObjectId) {
|
||||
const ViewportObjectIdPickContext context = CreateValidContext();
|
||||
|
||||
const ViewportObjectIdPickResult result = PickViewportObjectIdEntity(
|
||||
context,
|
||||
[](const ViewportObjectIdReadbackRequest&, std::array<uint8_t, 4>& outRgba) {
|
||||
outRgba = { 0u, 0u, 0u, 0u };
|
||||
return true;
|
||||
});
|
||||
|
||||
EXPECT_EQ(result.status, ViewportObjectIdPickStatus::Success);
|
||||
EXPECT_EQ(result.entityId, 0u);
|
||||
EXPECT_TRUE(result.HasResolvedSample());
|
||||
}
|
||||
|
||||
TEST(ViewportObjectIdPickerTest, PickViewportObjectIdEntityReturnsUnavailableWhenContextIsInvalid) {
|
||||
ViewportObjectIdPickContext context = CreateValidContext();
|
||||
context.hasValidFrame = false;
|
||||
|
||||
const ViewportObjectIdPickResult result = PickViewportObjectIdEntity(
|
||||
context,
|
||||
[](const ViewportObjectIdReadbackRequest&, std::array<uint8_t, 4>&) {
|
||||
return true;
|
||||
});
|
||||
|
||||
EXPECT_EQ(result.status, ViewportObjectIdPickStatus::Unavailable);
|
||||
EXPECT_EQ(result.entityId, 0u);
|
||||
EXPECT_FALSE(result.HasResolvedSample());
|
||||
}
|
||||
|
||||
TEST(ViewportObjectIdPickerTest, TryPickViewportObjectIdEntityFailsWhenReadbackFails) {
|
||||
const ViewportObjectIdPickContext context = CreateValidContext();
|
||||
|
||||
@@ -112,4 +145,18 @@ TEST(ViewportObjectIdPickerTest, TryPickViewportObjectIdEntityFailsWhenReadbackF
|
||||
EXPECT_EQ(entityId, 0u);
|
||||
}
|
||||
|
||||
TEST(ViewportObjectIdPickerTest, PickViewportObjectIdEntityReportsReadbackFailure) {
|
||||
const ViewportObjectIdPickContext context = CreateValidContext();
|
||||
|
||||
const ViewportObjectIdPickResult result = PickViewportObjectIdEntity(
|
||||
context,
|
||||
[](const ViewportObjectIdReadbackRequest&, std::array<uint8_t, 4>&) {
|
||||
return false;
|
||||
});
|
||||
|
||||
EXPECT_EQ(result.status, ViewportObjectIdPickStatus::ReadbackFailed);
|
||||
EXPECT_EQ(result.entityId, 0u);
|
||||
EXPECT_FALSE(result.HasResolvedSample());
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
Reference in New Issue
Block a user