use std::io;
use thistrace::{origin, trace_frames, traceable, HasTrace};
#[traceable]
#[derive(thiserror::Error, Debug)]
enum E {
#[error("io")]
Io(#[from] thistrace::Origin<io::Error>),
#[error("plain")]
Plain,
}
fn traced() -> Result<(), E> {
let err = origin(io::Error::new(io::ErrorKind::Other, "boom"));
Err(E::from(err))
}
#[test]
fn trace_frames_empty_when_absent() {
let e = E::Plain;
assert!(e.trace().is_none());
assert!(trace_frames(&e).is_empty());
}
#[test]
fn trace_frames_returns_frames_when_present() {
let e = traced().unwrap_err();
assert!(e.trace().is_some());
assert!(!trace_frames(&e).is_empty());
}