use switchyard::{threads::single_thread, Switchyard};
#[test]
#[should_panic]
fn panicking_future() {
let yard = Switchyard::new(single_thread(None, None), || ()).unwrap();
let handle = yard.spawn(0, async move {
panic!("whoops!");
});
futures_executor::block_on(handle);
}
#[test]
#[should_panic]
fn panicking_function() {
let yard = Switchyard::new(single_thread(None, None), || ()).unwrap();
let handle = yard.spawn_local(0, |_| {
panic!("whoops!");
#[allow(unreachable_code)]
async move {}
});
futures_executor::block_on(handle);
}
#[test]
#[should_panic]
fn panicking_local_future() {
let yard = Switchyard::new(single_thread(None, None), || ()).unwrap();
let handle = yard.spawn_local(0, |_| async move { panic!("whoops!") });
futures_executor::block_on(handle);
}
#[test]
fn continue_from_panicking_future() {
let yard = Switchyard::new(single_thread(None, None), || ()).unwrap();
yard.spawn(0, async move {
panic!("whoops!");
});
futures_executor::block_on(yard.wait_for_idle());
let handle = yard.spawn(0, async move { 1 });
assert_eq!(futures_executor::block_on(handle), 1);
}