use std::time::{Duration, Instant};
mod common;
use common::Js;
#[test]
fn set_timeout_honors_delay() {
let js = Js::spawn(
"timers",
r#"
(async () => {
Deno.core.ops.op_emit("early", null);
setTimeout(() => { Deno.core.ops.op_emit("late", null); }, 300);
for (;;) { const m = await Deno.core.ops.op_next_event(); if (m == null) break; }
})();
"#,
);
js.emitted("early", Duration::from_secs(10));
let after_early = Instant::now();
js.emitted("late", Duration::from_secs(10));
let gap = after_early.elapsed();
assert!(
gap >= Duration::from_millis(200),
"setTimeout fired too early ({gap:?}) — delay not honored"
);
eprintln!("OK setTimeout honored its delay (gap {gap:?})");
}