#include #include "XCUIBackend/NullXCUIPanelCanvasHost.h" namespace { using XCEngine::Editor::XCUIBackend::CreateNullXCUIPanelCanvasHost; using XCEngine::Editor::XCUIBackend::IXCUIPanelCanvasHost; using XCEngine::Editor::XCUIBackend::XCUIPanelCanvasHostBackend; using XCEngine::Editor::XCUIBackend::XCUIPanelCanvasHostCapabilities; using XCEngine::Editor::XCUIBackend::XCUIPanelCanvasRequest; using XCEngine::Editor::XCUIBackend::XCUIPanelCanvasSession; TEST(NewEditorXCUIPanelCanvasHostTest, NullHostReportsExplicitBackendAndCapabilities) { std::unique_ptr host = CreateNullXCUIPanelCanvasHost(); ASSERT_NE(host, nullptr); EXPECT_STREQ(host->GetDebugName(), "NullXCUIPanelCanvasHost"); EXPECT_EQ(host->GetBackend(), XCUIPanelCanvasHostBackend::Null); const XCUIPanelCanvasHostCapabilities capabilities = host->GetCapabilities(); EXPECT_FALSE(capabilities.supportsPointerHitTesting); EXPECT_FALSE(capabilities.supportsHostedSurfaceImages); EXPECT_FALSE(capabilities.supportsPrimitiveOverlays); } TEST(NewEditorXCUIPanelCanvasHostTest, NullHostBeginCanvasReturnsEmptySessionAndDrawCallsAreNoops) { std::unique_ptr host = CreateNullXCUIPanelCanvasHost(); ASSERT_NE(host, nullptr); XCUIPanelCanvasRequest request = {}; request.childId = "NullCanvas"; request.height = 280.0f; request.topInset = 24.0f; request.bordered = true; request.showSurfaceImage = true; request.drawPreviewFrame = true; request.placeholderTitle = "Placeholder"; request.badgeTitle = "Badge"; const XCUIPanelCanvasSession session = host->BeginCanvas(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.width, 0.0f); EXPECT_FLOAT_EQ(session.canvasRect.height, 0.0f); host->DrawFilledRect( XCEngine::UI::UIRect(10.0f, 12.0f, 48.0f, 64.0f), XCEngine::UI::UIColor(1.0f, 0.0f, 0.0f, 1.0f), 6.0f); host->DrawOutlineRect( XCEngine::UI::UIRect(5.0f, 6.0f, 100.0f, 40.0f), XCEngine::UI::UIColor(0.0f, 1.0f, 0.0f, 1.0f), 2.0f, 8.0f); host->DrawText( XCEngine::UI::UIPoint(8.0f, 14.0f), "Null host should ignore text draws", XCEngine::UI::UIColor(1.0f, 1.0f, 1.0f, 1.0f), 16.0f); host->EndCanvas(); } } // namespace