Enhance XCUI demo text editing and host bridge

This commit is contained in:
2026-04-05 05:58:05 +08:00
parent a7662a1d43
commit d1cb0c874b
11 changed files with 479 additions and 24 deletions

View File

@@ -28,6 +28,8 @@ set(EDITOR_TEST_SOURCES
test_viewport_object_id_picker.cpp
test_viewport_render_targets.cpp
test_viewport_render_flow_utils.cpp
test_imgui_backend_bridge_api.cpp
test_window_renderer_api.cpp
test_builtin_icon_layout_utils.cpp
test_xcui_draw_data.cpp
test_xcui_imgui_transition_backend.cpp

View File

@@ -0,0 +1,22 @@
#include <gtest/gtest.h>
#include "Core/EditorConsoleSink.h"
namespace XCEngine::Debug {
namespace {
TEST(EditorConsoleSink, GetInstanceTracksRegisteredSinkOnly) {
EditorConsoleSink* registeredInstance = nullptr;
{
EditorConsoleSink sink;
registeredInstance = &sink;
EXPECT_EQ(EditorConsoleSink::GetInstance(), registeredInstance);
}
EXPECT_EQ(EditorConsoleSink::GetInstance(), nullptr);
}
} // namespace
} // namespace XCEngine::Debug

View File

@@ -0,0 +1,40 @@
#include <gtest/gtest.h>
#include "UI/ImGuiBackendBridge.h"
#include <type_traits>
namespace {
using XCEngine::Editor::UI::ImGuiBackendBridge;
using XCEngine::RHI::RHIDevice;
using XCEngine::RHI::RHIResourceView;
using XCEngine::RHI::RHITexture;
TEST(ImGuiBackendBridgeApiTest, ExposesExistingShaderResourceViewRegistrationOverload) {
using TextureDescriptorFromTextureSignature = bool (ImGuiBackendBridge::*)(
RHIDevice*,
RHITexture*,
D3D12_CPU_DESCRIPTOR_HANDLE*,
D3D12_GPU_DESCRIPTOR_HANDLE*,
ImTextureID*);
using TextureDescriptorFromSrvSignature = bool (ImGuiBackendBridge::*)(
RHIDevice*,
RHIResourceView*,
D3D12_CPU_DESCRIPTOR_HANDLE*,
D3D12_GPU_DESCRIPTOR_HANDLE*,
ImTextureID*);
static_assert(std::is_same_v<
decltype(static_cast<TextureDescriptorFromTextureSignature>(
&ImGuiBackendBridge::CreateTextureDescriptor)),
TextureDescriptorFromTextureSignature>);
static_assert(std::is_same_v<
decltype(static_cast<TextureDescriptorFromSrvSignature>(
&ImGuiBackendBridge::CreateTextureDescriptor)),
TextureDescriptorFromSrvSignature>);
SUCCEED();
}
} // namespace

View File

@@ -0,0 +1,28 @@
#include <gtest/gtest.h>
#include "Platform/D3D12WindowRenderer.h"
#include <type_traits>
namespace {
using XCEngine::Editor::Platform::D3D12WindowRenderer;
using XCEngine::Rendering::RenderSurface;
TEST(D3D12WindowRendererApiTest, ExposesSurfaceAwareRenderCallbackAndAccessor) {
using Callback = D3D12WindowRenderer::RenderCallback;
static_assert(std::is_same_v<
decltype(std::declval<D3D12WindowRenderer&>().GetCurrentRenderSurface()),
const RenderSurface*>);
static_assert(std::is_same_v<
decltype(std::declval<D3D12WindowRenderer&>().Render(
std::declval<::XCEngine::Editor::UI::ImGuiBackendBridge&>(),
std::declval<const float*>(),
std::declval<const Callback&>())),
void>);
SUCCEED();
}
} // namespace