Skip to content

Commit cf6de85

Browse files
committed
add tests
1 parent 2efa811 commit cf6de85

File tree

1 file changed

+102
-0
lines changed
  • crates/bevy_ecs/src/world

1 file changed

+102
-0
lines changed

crates/bevy_ecs/src/world/mod.rs

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3388,8 +3388,10 @@ mod tests {
33883388
use crate::{
33893389
change_detection::DetectChangesMut,
33903390
component::{ComponentDescriptor, ComponentInfo, StorageType},
3391+
entity::EntityHashSet,
33913392
ptr::OwningPtr,
33923393
system::Resource,
3394+
world::error::EntityFetchError,
33933395
};
33943396
use alloc::sync::Arc;
33953397
use bevy_ecs_macros::Component;
@@ -3926,4 +3928,104 @@ mod tests {
39263928
let mut world = World::new();
39273929
world.spawn(());
39283930
}
3931+
3932+
#[test]
3933+
fn get_entity() {
3934+
let mut world = World::new();
3935+
3936+
let e1 = world.spawn_empty().id();
3937+
let e2 = world.spawn_empty().id();
3938+
3939+
assert!(world.get_entity(e1).is_ok());
3940+
assert!(world.get_entity([e1, e2]).is_ok());
3941+
assert!(world
3942+
.get_entity(&[e1, e2] /* this is an array not a slice */)
3943+
.is_ok());
3944+
assert!(world.get_entity(&vec![e1, e2][..]).is_ok());
3945+
assert!(world
3946+
.get_entity(&EntityHashSet::from_iter([e1, e2]))
3947+
.is_ok());
3948+
3949+
world.entity_mut(e1).despawn();
3950+
3951+
assert_eq!(Err(e1), world.get_entity(e1).map(|_| {}));
3952+
assert_eq!(Err(e1), world.get_entity([e1, e2]).map(|_| {}));
3953+
assert_eq!(
3954+
Err(e1),
3955+
world
3956+
.get_entity(&[e1, e2] /* this is an array not a slice */)
3957+
.map(|_| {})
3958+
);
3959+
assert_eq!(Err(e1), world.get_entity(&vec![e1, e2][..]).map(|_| {}));
3960+
assert_eq!(
3961+
Err(e1),
3962+
world
3963+
.get_entity(&EntityHashSet::from_iter([e1, e2]))
3964+
.map(|_| {})
3965+
);
3966+
}
3967+
3968+
#[test]
3969+
fn get_entity_mut() {
3970+
let mut world = World::new();
3971+
3972+
let e1 = world.spawn_empty().id();
3973+
let e2 = world.spawn_empty().id();
3974+
3975+
assert!(world.get_entity_mut(e1).is_ok());
3976+
assert!(world.get_entity_mut([e1, e2]).is_ok());
3977+
assert!(world
3978+
.get_entity_mut(&[e1, e2] /* this is an array not a slice */)
3979+
.is_ok());
3980+
assert!(world.get_entity_mut(&vec![e1, e2][..]).is_ok());
3981+
assert!(world
3982+
.get_entity_mut(&EntityHashSet::from_iter([e1, e2]))
3983+
.is_ok());
3984+
3985+
assert_eq!(
3986+
Err(EntityFetchError::AliasedMutability(e1)),
3987+
world.get_entity_mut([e1, e2, e1]).map(|_| {})
3988+
);
3989+
assert_eq!(
3990+
Err(EntityFetchError::AliasedMutability(e1)),
3991+
world
3992+
.get_entity_mut(&[e1, e2, e1] /* this is an array not a slice */)
3993+
.map(|_| {})
3994+
);
3995+
assert_eq!(
3996+
Err(EntityFetchError::AliasedMutability(e1)),
3997+
world.get_entity_mut(&vec![e1, e2, e1][..]).map(|_| {})
3998+
);
3999+
// Aliased mutability isn't allowed by HashSets
4000+
assert!(world
4001+
.get_entity_mut(&EntityHashSet::from_iter([e1, e2, e1]))
4002+
.is_ok());
4003+
4004+
world.entity_mut(e1).despawn();
4005+
4006+
assert_eq!(
4007+
Err(EntityFetchError::NoSuchEntity(e1)),
4008+
world.get_entity_mut(e1).map(|_| {})
4009+
);
4010+
assert_eq!(
4011+
Err(EntityFetchError::NoSuchEntity(e1)),
4012+
world.get_entity_mut([e1, e2]).map(|_| {})
4013+
);
4014+
assert_eq!(
4015+
Err(EntityFetchError::NoSuchEntity(e1)),
4016+
world
4017+
.get_entity_mut(&[e1, e2] /* this is an array not a slice */)
4018+
.map(|_| {})
4019+
);
4020+
assert_eq!(
4021+
Err(EntityFetchError::NoSuchEntity(e1)),
4022+
world.get_entity_mut(&vec![e1, e2][..]).map(|_| {})
4023+
);
4024+
assert_eq!(
4025+
Err(EntityFetchError::NoSuchEntity(e1)),
4026+
world
4027+
.get_entity_mut(&EntityHashSet::from_iter([e1, e2]))
4028+
.map(|_| {})
4029+
);
4030+
}
39294031
}

0 commit comments

Comments
 (0)