From 9dfd0a9ef9a54dab5fb88ed9158bd4184212008e Mon Sep 17 00:00:00 2001 From: HampusM Date: Sat, 2 May 2026 18:47:18 +0200 Subject: fix(ecs): make system with local comps not low/high priority in run order --- ecs/tests/phase.rs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 ecs/tests/phase.rs (limited to 'ecs/tests') diff --git a/ecs/tests/phase.rs b/ecs/tests/phase.rs new file mode 100644 index 0000000..af2646b --- /dev/null +++ b/ecs/tests/phase.rs @@ -0,0 +1,36 @@ +use std::sync::atomic::{AtomicUsize, Ordering}; + +use ecs::component::local::Local; +use ecs::phase::UPDATE; +use ecs::system::Into; +use ecs::system::initializable::Initializable; +use ecs::{Component, World}; + +#[derive(Component)] +struct Thing; + +#[test] +fn system_run_order_correct_when_one_has_local_comp() +{ + static COUNTER: AtomicUsize = AtomicUsize::new(0); + + fn first_system(_thing: Local) + { + assert_eq!(COUNTER.fetch_add(1, Ordering::Relaxed), 0); + } + + fn second_system() + { + assert_eq!(COUNTER.fetch_add(1, Ordering::Relaxed), 1); + } + + let mut world = World::new(); + + world.register_system(*UPDATE, first_system.into_system().initialize((Thing,))); + + world.register_system(*UPDATE, second_system); + + world.step(); + + assert_eq!(COUNTER.load(Ordering::Relaxed), 2); +} -- cgit v1.2.3-18-g5258