mirror of
https://github.com/bevyengine/bevy
synced 2024-11-22 12:43:34 +00:00
Doc and test get_many(_mut)
ordering (#8045)
This commit is contained in:
parent
cb100ba78f
commit
4a62afb97b
2 changed files with 56 additions and 0 deletions
|
@ -276,6 +276,60 @@ mod tests {
|
|||
assert_eq!(*world.resource::<SystemRan>(), SystemRan::Yes);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn get_many_is_ordered() {
|
||||
use crate::system::Resource;
|
||||
const ENTITIES_COUNT: usize = 1000;
|
||||
|
||||
#[derive(Resource)]
|
||||
struct EntitiesArray(Vec<Entity>);
|
||||
|
||||
fn query_system(
|
||||
mut ran: ResMut<SystemRan>,
|
||||
entities_array: Res<EntitiesArray>,
|
||||
q: Query<&W<usize>>,
|
||||
) {
|
||||
let entities_array: [Entity; ENTITIES_COUNT] =
|
||||
entities_array.0.clone().try_into().unwrap();
|
||||
|
||||
for (i, w) in (0..ENTITIES_COUNT).zip(q.get_many(entities_array).unwrap()) {
|
||||
assert_eq!(i, w.0);
|
||||
}
|
||||
|
||||
*ran = SystemRan::Yes;
|
||||
}
|
||||
|
||||
fn query_system_mut(
|
||||
mut ran: ResMut<SystemRan>,
|
||||
entities_array: Res<EntitiesArray>,
|
||||
mut q: Query<&mut W<usize>>,
|
||||
) {
|
||||
let entities_array: [Entity; ENTITIES_COUNT] =
|
||||
entities_array.0.clone().try_into().unwrap();
|
||||
|
||||
#[allow(unused_mut)]
|
||||
for (i, mut w) in (0..ENTITIES_COUNT).zip(q.get_many_mut(entities_array).unwrap()) {
|
||||
assert_eq!(i, w.0);
|
||||
}
|
||||
|
||||
*ran = SystemRan::Yes;
|
||||
}
|
||||
|
||||
let mut world = World::default();
|
||||
world.insert_resource(SystemRan::No);
|
||||
let entity_ids = (0..ENTITIES_COUNT)
|
||||
.map(|i| world.spawn(W(i)).id())
|
||||
.collect();
|
||||
world.insert_resource(EntitiesArray(entity_ids));
|
||||
|
||||
run_system(&mut world, query_system);
|
||||
assert_eq!(*world.resource::<SystemRan>(), SystemRan::Yes);
|
||||
|
||||
world.insert_resource(SystemRan::No);
|
||||
run_system(&mut world, query_system_mut);
|
||||
assert_eq!(*world.resource::<SystemRan>(), SystemRan::Yes);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn or_param_set_system() {
|
||||
// Regression test for issue #762
|
||||
|
|
|
@ -797,6 +797,7 @@ impl<'w, 's, Q: WorldQuery, F: ReadOnlyWorldQuery> Query<'w, 's, Q, F> {
|
|||
|
||||
/// Returns the read-only query items for the given array of [`Entity`].
|
||||
///
|
||||
/// The returned query items are in the same order as the input.
|
||||
/// In case of a nonexisting entity or mismatched component, a [`QueryEntityError`] is returned instead.
|
||||
/// The elements of the array do not need to be unique, unlike `get_many_mut`.
|
||||
///
|
||||
|
@ -901,6 +902,7 @@ impl<'w, 's, Q: WorldQuery, F: ReadOnlyWorldQuery> Query<'w, 's, Q, F> {
|
|||
|
||||
/// Returns the query items for the given array of [`Entity`].
|
||||
///
|
||||
/// The returned query items are in the same order as the input.
|
||||
/// In case of a nonexisting entity, duplicate entities or mismatched component, a [`QueryEntityError`] is returned instead.
|
||||
///
|
||||
/// # See also
|
||||
|
|
Loading…
Reference in a new issue