Files
XCEngine/tests/NewEditor/test_xcui_panel_canvas_host.cpp

68 lines
2.5 KiB
C++

#include <gtest/gtest.h>
#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<IXCUIPanelCanvasHost> 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<IXCUIPanelCanvasHost> 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