use ecs_os_api::try_add_init_hook;
use flecs_ecs::prelude::*;
#[test]
fn hooks() {
use core::sync::atomic::{AtomicU32, Ordering};
use flecs_ecs::prelude::*;
let n = Box::leak(Box::new(AtomicU32::new(0)));
try_add_init_hook(Box::new(|_| {
n.fetch_add(1, Ordering::SeqCst);
}))
.unwrap();
assert_eq!(n.load(Ordering::SeqCst), 0);
let _w = World::new();
assert_eq!(n.load(Ordering::SeqCst), 1);
let _w2 = World::new();
assert_eq!(n.load(Ordering::SeqCst), 1);
try_add_init_hook(Box::new(|_| {
n.fetch_add(2, Ordering::SeqCst);
}))
.unwrap_err();
assert_eq!(n.load(Ordering::SeqCst), 1);
}