#[cfg(test)]
mod graphics_core_tests {
use crate::ecs::graphics::GraphicsCore;
use crate::ecs::graphics::wuc_resource::WucGraphicsResource;
use windows::Win32::Graphics::Direct2D::D2D1_DEVICE_CONTEXT_OPTIONS_NONE;
use windows::Win32::System::Com::{COINIT_MULTITHREADED, CoInitializeEx};
fn init_mta() {
unsafe {
let _ = CoInitializeEx(None, COINIT_MULTITHREADED);
}
}
#[test]
fn test_graphics_core_creation() {
let _graphics = GraphicsCore::new().expect("GraphicsCore作成失敗");
println!("[TEST PASS] GraphicsCore created successfully with all valid devices");
}
#[test]
fn test_create_device_context() {
let graphics = GraphicsCore::new().expect("GraphicsCore作成失敗");
use crate::com::d2d::D2D1DeviceExt;
let d2d = graphics.d2d_device().expect("D2Dデバイスが無効");
let _dc = d2d
.create_device_context(D2D1_DEVICE_CONTEXT_OPTIONS_NONE)
.expect("DeviceContext作成失敗");
println!("[TEST PASS] ID2D1DeviceContext created successfully");
}
#[test]
fn test_create_visual() {
init_mta();
let graphics = GraphicsCore::new().expect("GraphicsCore作成失敗");
let d2d = graphics.d2d_device().expect("D2Dデバイスが無効");
let wuc_resource = WucGraphicsResource::new(d2d).expect("WucGraphicsResource作成失敗");
let compositor = wuc_resource.compositor().expect("Compositorが無効");
let _visual = compositor
.CreateSpriteVisual()
.expect("SpriteVisual作成失敗");
println!("[TEST PASS] WUC SpriteVisual created successfully");
}
#[test]
fn test_create_multiple_device_contexts() {
let graphics = GraphicsCore::new().expect("GraphicsCore作成失敗");
use crate::com::d2d::D2D1DeviceExt;
let d2d = graphics.d2d_device().expect("D2Dデバイスが無効");
let _dc1 = d2d
.create_device_context(D2D1_DEVICE_CONTEXT_OPTIONS_NONE)
.expect("DeviceContext1作成失敗");
let _dc2 = d2d
.create_device_context(D2D1_DEVICE_CONTEXT_OPTIONS_NONE)
.expect("DeviceContext2作成失敗");
let _dc3 = d2d
.create_device_context(D2D1_DEVICE_CONTEXT_OPTIONS_NONE)
.expect("DeviceContext3作成失敗");
println!("[TEST PASS] Multiple ID2D1DeviceContext created successfully");
}
#[test]
fn test_create_multiple_visuals() {
init_mta();
let graphics = GraphicsCore::new().expect("GraphicsCore作成失敗");
let d2d = graphics.d2d_device().expect("D2Dデバイスが無効");
let wuc_resource = WucGraphicsResource::new(d2d).expect("WucGraphicsResource作成失敗");
let compositor = wuc_resource.compositor().expect("Compositorが無効");
let _v1 = compositor
.CreateSpriteVisual()
.expect("SpriteVisual1作成失敗");
let _v2 = compositor
.CreateSpriteVisual()
.expect("SpriteVisual2作成失敗");
let _v3 = compositor
.CreateSpriteVisual()
.expect("SpriteVisual3作成失敗");
println!("[TEST PASS] Multiple WUC SpriteVisual created successfully");
}
}
#[cfg(test)]
mod has_graphics_resources_tests {
use crate::ecs::graphics::HasGraphicsResources;
#[test]
fn test_default_is_unit_struct() {
let _res = HasGraphicsResources::default();
}
#[test]
fn test_clone_and_partial_eq() {
let res1 = HasGraphicsResources::default();
let res2 = res1.clone();
assert_eq!(res1, res2, "クローンは同一");
}
}
#[cfg(test)]
mod surface_graphics_dirty_tests {
use crate::ecs::graphics::SurfaceGraphicsDirty;
#[test]
fn test_default_requested_frame_is_zero() {
let dirty = SurfaceGraphicsDirty::default();
assert_eq!(dirty.requested_frame, 0, "デフォルトのrequested_frameは0");
}
#[test]
fn test_requested_frame_can_be_updated() {
let mut dirty = SurfaceGraphicsDirty::default();
dirty.requested_frame = 42;
assert_eq!(dirty.requested_frame, 42, "requested_frameを更新できる");
}
}