use geez::geez;
geez! {
enum Multi {
#[error("bad status {0}: {1}")]
Status(u16, String),
#[error("{0} / {1} / {2}")]
Triple(u8, u8, u8),
#[error("only {0}")]
One(String),
}
}
#[test]
fn two_fields() {
let err = Multi::Status(404, "missing".into());
assert_eq!(err.to_string(), "bad status 404: missing");
}
#[test]
fn three_fields() {
let err = Multi::Triple(1, 2, 3);
assert_eq!(err.to_string(), "1 / 2 / 3");
}
#[test]
fn single_with_format() {
let err = Multi::One("x".into());
assert_eq!(err.to_string(), "only x");
}
#[test]
fn docs_passthrough_compiles() {
geez! {
pub enum Documented {
Empty,
#[error("x={0}")]
Value(i32),
}
}
assert_eq!(Documented::Empty.to_string(), "Empty");
assert_eq!(Documented::Value(3).to_string(), "x=3");
}