Contain XCUI ImGui adapters behind explicit host seams
This commit is contained in:
@@ -5,7 +5,9 @@
|
||||
namespace {
|
||||
|
||||
using XCEngine::Editor::XCUIBackend::CreateNullXCUIPanelCanvasHost;
|
||||
using XCEngine::Editor::XCUIBackend::BuildPassiveXCUIPanelCanvasSession;
|
||||
using XCEngine::Editor::XCUIBackend::IXCUIPanelCanvasHost;
|
||||
using XCEngine::Editor::XCUIBackend::ResolveXCUIPanelCanvasChildId;
|
||||
using XCEngine::Editor::XCUIBackend::XCUIPanelCanvasHostBackend;
|
||||
using XCEngine::Editor::XCUIBackend::XCUIPanelCanvasHostCapabilities;
|
||||
using XCEngine::Editor::XCUIBackend::XCUIPanelCanvasRequest;
|
||||
@@ -24,7 +26,41 @@ TEST(NewEditorXCUIPanelCanvasHostTest, NullHostReportsExplicitBackendAndCapabili
|
||||
EXPECT_FALSE(capabilities.supportsPrimitiveOverlays);
|
||||
}
|
||||
|
||||
TEST(NewEditorXCUIPanelCanvasHostTest, NullHostBeginCanvasReturnsEmptySessionAndDrawCallsAreNoops) {
|
||||
TEST(NewEditorXCUIPanelCanvasHostTest, ResolveChildIdFallsBackToStableDefaultForMissingNames) {
|
||||
XCUIPanelCanvasRequest request = {};
|
||||
EXPECT_STREQ(ResolveXCUIPanelCanvasChildId(request), "XCUIPanelCanvasHost");
|
||||
EXPECT_STREQ(ResolveXCUIPanelCanvasChildId(request, "FallbackCanvas"), "FallbackCanvas");
|
||||
|
||||
request.childId = "";
|
||||
EXPECT_STREQ(ResolveXCUIPanelCanvasChildId(request), "XCUIPanelCanvasHost");
|
||||
|
||||
request.childId = "CanvasHost";
|
||||
EXPECT_STREQ(ResolveXCUIPanelCanvasChildId(request, "FallbackCanvas"), "CanvasHost");
|
||||
}
|
||||
|
||||
TEST(NewEditorXCUIPanelCanvasHostTest, PassiveSessionClampsRequestGeometryIntoSafeDefaultState) {
|
||||
XCUIPanelCanvasRequest request = {};
|
||||
request.height = -18.0f;
|
||||
request.topInset = 42.0f;
|
||||
|
||||
XCUIPanelCanvasSession session = BuildPassiveXCUIPanelCanvasSession(request);
|
||||
EXPECT_FALSE(session.validCanvas);
|
||||
EXPECT_FALSE(session.hovered);
|
||||
EXPECT_FALSE(session.windowFocused);
|
||||
EXPECT_FLOAT_EQ(session.hostRect.width, 0.0f);
|
||||
EXPECT_FLOAT_EQ(session.hostRect.height, 0.0f);
|
||||
EXPECT_FLOAT_EQ(session.canvasRect.y, 0.0f);
|
||||
EXPECT_FLOAT_EQ(session.canvasRect.height, 0.0f);
|
||||
|
||||
request.height = 120.0f;
|
||||
request.topInset = 180.0f;
|
||||
session = BuildPassiveXCUIPanelCanvasSession(request);
|
||||
EXPECT_FLOAT_EQ(session.hostRect.height, 120.0f);
|
||||
EXPECT_FLOAT_EQ(session.canvasRect.y, 120.0f);
|
||||
EXPECT_FLOAT_EQ(session.canvasRect.height, 0.0f);
|
||||
}
|
||||
|
||||
TEST(NewEditorXCUIPanelCanvasHostTest, NullHostBeginCanvasReturnsSafePassiveSessionAndDrawCallsAreNoops) {
|
||||
std::unique_ptr<IXCUIPanelCanvasHost> host = CreateNullXCUIPanelCanvasHost();
|
||||
ASSERT_NE(host, nullptr);
|
||||
|
||||
@@ -43,9 +79,12 @@ TEST(NewEditorXCUIPanelCanvasHostTest, NullHostBeginCanvasReturnsEmptySessionAnd
|
||||
EXPECT_FALSE(session.hovered);
|
||||
EXPECT_FALSE(session.windowFocused);
|
||||
EXPECT_FLOAT_EQ(session.hostRect.width, 0.0f);
|
||||
EXPECT_FLOAT_EQ(session.hostRect.height, 0.0f);
|
||||
EXPECT_FLOAT_EQ(session.hostRect.height, 280.0f);
|
||||
EXPECT_FLOAT_EQ(session.canvasRect.width, 0.0f);
|
||||
EXPECT_FLOAT_EQ(session.canvasRect.height, 0.0f);
|
||||
EXPECT_FLOAT_EQ(session.canvasRect.y, 24.0f);
|
||||
EXPECT_FLOAT_EQ(session.canvasRect.height, 256.0f);
|
||||
EXPECT_FLOAT_EQ(session.pointerPosition.x, 0.0f);
|
||||
EXPECT_FLOAT_EQ(session.pointerPosition.y, 0.0f);
|
||||
|
||||
host->DrawFilledRect(
|
||||
XCEngine::UI::UIRect(10.0f, 12.0f, 48.0f, 64.0f),
|
||||
@@ -62,6 +101,11 @@ TEST(NewEditorXCUIPanelCanvasHostTest, NullHostBeginCanvasReturnsEmptySessionAnd
|
||||
XCEngine::UI::UIColor(1.0f, 1.0f, 1.0f, 1.0f),
|
||||
16.0f);
|
||||
host->EndCanvas();
|
||||
|
||||
const XCUIPanelCanvasSession secondSession = host->BeginCanvas({});
|
||||
EXPECT_FLOAT_EQ(secondSession.hostRect.height, 0.0f);
|
||||
EXPECT_FLOAT_EQ(secondSession.canvasRect.height, 0.0f);
|
||||
host->EndCanvas();
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
Reference in New Issue
Block a user