use gecs::prelude::*;
pub struct CompA;
pub struct CompB;
pub struct CompC;
ecs_world! {
ecs_archetype!(
ArchFoo,
5,
CompA, CompC, );
ecs_archetype!(
ArchBar,
5,
#[component_id(6)]
CompA, CompB, CompC, );
ecs_archetype!(
ArchBaz,
5,
CompA, CompB, #[component_id(200)]
CompC, );
}
#[test]
#[rustfmt::skip]
fn test_component_id() {
let mut world = EcsWorld::default();
let entity_a = world.archetype_mut::<ArchFoo>().create((CompA, CompC));
let entity_b = world.archetype_mut::<ArchBar>().create((CompA, CompB, CompC));
let entity_c = world.archetype_mut::<ArchBaz>().create((CompA, CompB, CompC));
ecs_find!(world, entity_a, |_: &CompC| {
assert_eq!(ecs_component_id!(CompC), 1);
});
ecs_find!(world, entity_b, |_: &CompC| {
assert_eq!(ecs_component_id!(CompC), 8);
});
ecs_find!(world, entity_c, |_: &CompC| {
assert_eq!(ecs_component_id!(CompC), 200);
});
assert_eq!(ecs_component_id!(CompC, ArchFoo), 1);
assert_eq!(ecs_component_id!(CompC, ArchBar), 8);
assert_eq!(ecs_component_id!(CompC, ArchBaz), 200);
}