use bevy_ecs::prelude::*;
use wintf::ecs::{PointF, Visual, insert_visual, insert_visual_with};
#[test]
fn test_insert_visual_adds_default_visual() {
let mut world = World::new();
let entity = world.spawn_empty().id();
insert_visual(&mut world, entity);
let visual = world.get::<Visual>(entity);
assert!(visual.is_some(), "Visual should be added by insert_visual");
let visual = visual.unwrap();
assert!(visual.is_visible, "Default is_visible should be true");
assert_eq!(visual.opacity, 1.0, "Default opacity should be 1.0");
}
#[test]
fn test_insert_visual_with_adds_custom_visual() {
let mut world = World::new();
let entity = world.spawn_empty().id();
let custom_visual = Visual {
is_visible: false,
opacity: 0.5,
transform_origin: PointF { x: 100.0, y: 100.0 },
clip: None,
};
insert_visual_with(&mut world, entity, custom_visual.clone());
let visual = world.get::<Visual>(entity).expect("Visual should be added");
assert_eq!(visual.is_visible, false);
assert_eq!(visual.opacity, 0.5);
assert_eq!(visual.transform_origin.x, 100.0);
assert_eq!(visual.transform_origin.y, 100.0);
}
#[test]
fn test_insert_visual_overwrites_existing() {
let mut world = World::new();
let entity = world
.spawn(Visual {
is_visible: false,
opacity: 0.3,
..Default::default()
})
.id();
insert_visual(&mut world, entity);
let visual = world.get::<Visual>(entity).expect("Visual should exist");
assert!(visual.is_visible, "Should be overwritten to default true");
assert_eq!(visual.opacity, 1.0, "Should be overwritten to default 1.0");
}
#[test]
fn test_insert_visual_nonexistent_entity() {
let mut world = World::new();
let fake_entity = match Entity::from_raw_u32(9999) {
Some(e) => e,
None => {
return;
}
};
insert_visual(&mut world, fake_entity);
}
#[test]
fn test_insert_visual_multiple_entities() {
let mut world = World::new();
let entity1 = world.spawn_empty().id();
let entity2 = world.spawn_empty().id();
let entity3 = world.spawn_empty().id();
insert_visual(&mut world, entity1);
insert_visual(&mut world, entity2);
insert_visual(&mut world, entity3);
assert!(world.get::<Visual>(entity1).is_some());
assert!(world.get::<Visual>(entity2).is_some());
assert!(world.get::<Visual>(entity3).is_some());
}