use assert_matches::assert_matches;
use serde_aco::{FieldHelp, Help, TypedHelp};
#[derive(Help)]
pub struct TestStruct {
#[serde_aco(hide)]
pub field1: String,
pub field2: i32,
}
#[test]
fn test_struct_help() {
let help = TestStruct::HELP;
assert_matches!(
help,
TypedHelp::Struct {
name: "TestStruct",
fields: &[FieldHelp {
ident: "field2",
doc: "field2 is a number",
ty: TypedHelp::Int
}]
}
)
}
#[derive(Help)]
pub enum TestEnum {
#[serde_aco(hide)]
Variant1,
Variant2 {
f: u32,
},
}
#[test]
fn test_enum_help() {
let help = TestEnum::HELP;
eprintln!("{:?}", help);
assert_matches!(
help,
TypedHelp::Enum {
name: "TestEnum",
variants: &[FieldHelp {
ident: "Variant2",
doc: "Variant2 has a field",
ty: TypedHelp::Struct {
name: "TestEnum",
fields: &[FieldHelp {
ident: "f",
doc: "f is a u32",
ty: TypedHelp::Int,
}],
},
}],
}
);
}