use crate ::runtime::scheduler::inject;
#[ test]
fn push_and_pop() {
const N: usize = 2 ;
let (inject, mut synced) = inject::Shared::new();
for i in 0 ..N {
assert_eq!(inject.len(), i);
let (task, _) = super ::unowned(async {});
unsafe { inject.push(&mut synced, task) };
}
for i in 0 ..N {
assert_eq!(inject.len(), N - i);
assert!(unsafe { inject.pop(&mut synced) }.is_some());
}
println!("--------------" );
assert!(unsafe { inject.pop(&mut synced) }.is_none());
}
#[ test]
fn push_batch_and_pop() {
let (inject, mut inject_synced) = inject::Shared::new();
unsafe {
inject.push_batch(
&mut inject_synced,
(0 ..10 ).map(|_| super ::unowned(async {}).0 ),
);
assert_eq!(5 , inject.pop_n(&mut inject_synced, 5 ).count());
assert_eq!(5 , inject.pop_n(&mut inject_synced, 5 ).count());
assert_eq!(0 , inject.pop_n(&mut inject_synced, 5 ).count());
}
}
#[ test]
fn pop_n_drains_on_drop() {
let (inject, mut inject_synced) = inject::Shared::new();
unsafe {
inject.push_batch(
&mut inject_synced,
(0 ..10 ).map(|_| super ::unowned(async {}).0 ),
);
let _ = inject.pop_n(&mut inject_synced, 10 );
assert_eq!(inject.len(), 0 );
}
}
Messung V0.5 in Prozent C=100 H=58 G=81
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-24)
¤
*© Formatika GbR, Deutschland