use setback::{protect, recover, RecoveryError, RecoveryFailure, ThreadId};
fn roundtrip(tid: ThreadId, cause: i32) -> Result<(), RecoveryError> {
unsafe {
protect(tid, move || {
let _ = recover(tid, cause);
})
}
}
#[test]
fn arbitrary_causes_survive_the_jump() {
for cause in [1, 2, 8, 9, -1, i32::MIN, i32::MAX] {
assert_eq!(roundtrip(11, cause), Err(RecoveryError { cause }));
}
}
#[test]
fn recover_without_active_scope_errs() {
let outcome = unsafe { recover(987, 1) };
assert_eq!(outcome, Err(RecoveryFailure));
}