use windows::core::Result;
use wintf::com::dcomp::*;
use wintf::ecs::GraphicsCore;
fn setup_graphics() -> Result<GraphicsCore> {
GraphicsCore::new()
}
#[test]
fn test_remove_visual_removes_child_from_parent() -> Result<()> {
let graphics = setup_graphics()?;
let dcomp = graphics.dcomp().expect("dcomp device should exist");
let parent_visual = dcomp.create_visual()?;
let child_visual = dcomp.create_visual()?;
parent_visual.add_visual(&child_visual, false, None)?;
let result = parent_visual.remove_visual(&child_visual);
assert!(result.is_ok(), "remove_visual should succeed: {:?}", result);
Ok(())
}
#[test]
fn test_remove_visual_nonexistent_returns_error() -> Result<()> {
let graphics = setup_graphics()?;
let dcomp = graphics.dcomp().expect("dcomp device should exist");
let parent_visual = dcomp.create_visual()?;
let child_visual = dcomp.create_visual()?;
let result = parent_visual.remove_visual(&child_visual);
eprintln!("remove_visual result for nonexistent: {:?}", result);
Ok(())
}
#[test]
fn test_remove_all_visuals_clears_all_children() -> Result<()> {
let graphics = setup_graphics()?;
let dcomp = graphics.dcomp().expect("dcomp device should exist");
let parent_visual = dcomp.create_visual()?;
let child1 = dcomp.create_visual()?;
let child2 = dcomp.create_visual()?;
let child3 = dcomp.create_visual()?;
parent_visual.add_visual(&child1, false, None)?;
parent_visual.add_visual(&child2, false, None)?;
parent_visual.add_visual(&child3, false, None)?;
let result = parent_visual.remove_all_visuals();
assert!(
result.is_ok(),
"remove_all_visuals should succeed: {:?}",
result
);
let result2 = parent_visual.remove_all_visuals();
assert!(
result2.is_ok(),
"remove_all_visuals on empty parent should succeed: {:?}",
result2
);
Ok(())
}
#[test]
fn test_remove_visual_multiple_operations() -> Result<()> {
let graphics = setup_graphics()?;
let dcomp = graphics.dcomp().expect("dcomp device should exist");
let parent_visual = dcomp.create_visual()?;
let child_visual = dcomp.create_visual()?;
parent_visual.add_visual(&child_visual, false, None)?;
parent_visual.remove_visual(&child_visual)?;
parent_visual.add_visual(&child_visual, false, None)?;
parent_visual.remove_visual(&child_visual)?;
Ok(())
}