use std::process::{Termination, ExitCode};
use thistermination::TerminationFull;
#[derive(TerminationFull)]
#[termination(exit_code(6), msg("test123 {}", 9 + 8))]
enum Test {
#[termination(exit_code(7))]
UnitA,
#[termination(msg("test"))]
UnnamedA(u8),
NamedA{x: u32},
}
fn assert_eq_exit_code_and_int(ex: ExitCode, code: i32) {
assert_eq!(format!("{:?}", ex), format!("ExitCode(unix_exit_status({}))", code));
}
#[test]
fn unit_default() {
let unit = Test::UnitA;
assert_eq!(format!("{:?}", unit), "test123 17");
assert_eq!(format!("{}", unit), "test123 17");
assert_eq_exit_code_and_int(unit.report(), 7);
}
#[test]
fn unnamed_default() {
let unnamed = Test::UnnamedA(42);
assert_eq!(format!("{:?}", unnamed), "test");
assert_eq!(format!("{}", unnamed), "test");
assert_eq_exit_code_and_int(unnamed.report(), 6);
}
#[test]
fn named_default() {
let named = Test::NamedA{x: 1337};
assert_eq!(format!("{:?}", named), "test123 17");
assert_eq!(format!("{}", named), "test123 17");
assert_eq_exit_code_and_int(named.report(), 6);
}