#pragma once #include #include "XCEngine/RHI/RHIFactory.h" #include "XCEngine/RHI/D3D12/D3D12Device.h" #if defined(XCENGINE_SUPPORT_VULKAN) #include "XCEngine/RHI/Vulkan/VulkanDevice.h" #endif using namespace XCEngine::RHI; TEST(RHIFactory, CreateD3D12Device_ReturnsValidPointer) { RHIDevice* device = RHIFactory::CreateRHIDevice(RHIType::D3D12); ASSERT_NE(device, nullptr); delete device; } TEST(RHIFactory, CreateD3D12DeviceByName_ReturnsValidPointer) { RHIDevice* device = RHIFactory::CreateRHIDevice("D3D12"); ASSERT_NE(device, nullptr); delete device; } TEST(RHIFactory, CreateInvalidDevice_ReturnsNullptr) { RHIDevice* device = RHIFactory::CreateRHIDevice("InvalidAPI"); ASSERT_EQ(device, nullptr); } TEST(RHIFactory, CreateInvalidType_ReturnsNullptr) { RHIDevice* device = RHIFactory::CreateRHIDevice(RHIType::Metal); ASSERT_EQ(device, nullptr); } #if defined(XCENGINE_SUPPORT_VULKAN) TEST(RHIFactory, CreateVulkanDevice_ReturnsValidPointer) { RHIDevice* device = RHIFactory::CreateRHIDevice(RHIType::Vulkan); ASSERT_NE(device, nullptr); delete device; } TEST(RHIFactory, CreateVulkanDeviceByName_ReturnsValidPointer) { RHIDevice* device = RHIFactory::CreateRHIDevice("Vulkan"); ASSERT_NE(device, nullptr); delete device; } #endif TEST(D3D12DeviceCreation, DirectCreation_Success) { D3D12Device* device = new D3D12Device(); ASSERT_NE(device, nullptr); delete device; } #if defined(XCENGINE_SUPPORT_VULKAN) TEST(VulkanDeviceCreation, DirectCreation_Success) { VulkanDevice* device = new VulkanDevice(); ASSERT_NE(device, nullptr); delete device; } #endif