use crate::z_ignore_test_common::*;
use flecs_ecs::prelude::*;
#[derive(Component)]
struct Waiter;
#[derive(Component)]
struct Plate;
fn main() {
let world = World::new();
let mut q_waiter = world
.query::<()>()
.with(Waiter)
.without((Plate, id::<flecs::Wildcard>()))
.build();
world
.system_named::<()>("AssignPlate")
.with(Plate)
.without((Waiter, id::<flecs::Wildcard>()))
.immediate(true)
.each_iter(move |mut it, index, plate| {
let world = it.world();
let plate = it.entity(index);
if let Some(waiter) = q_waiter.try_first_entity() {
it.world().defer_suspend();
waiter.add((Plate, plate));
it.world().defer_resume();
plate.add((Waiter, waiter));
println!("Assigned {} to {}!", waiter.name(), plate.name());
}
});
let waiter_1 = world.entity_named("waiter_1").add(Waiter);
world.entity_named("waiter_2").add(Waiter);
world.entity_named("waiter_3").add(Waiter);
world.entity_named("plate_1").add(Plate);
let plate_2 = world.entity_named("plate_2").add(Plate);
world.entity_named("plate_3").add(Plate);
waiter_1.add((Plate, plate_2));
plate_2.add((Waiter, waiter_1));
world.progress();
}
#[cfg(feature = "flecs_nightly_tests")]
#[test]
#[ignore = "todo fix"]
fn test() {
let output_capture = OutputCapture::capture().unwrap();
main();
output_capture.test("system_no_readonly".to_string());
}