67 lines
1.5 KiB
Rust
67 lines
1.5 KiB
Rust
use bind_conf_derive::*;
|
|
use bind_conf::{Parse, Parser};
|
|
|
|
|
|
#[test]
|
|
fn derive_enum() {
|
|
#[derive(Parse, Debug, PartialEq)]
|
|
#[parse(fallback="Unknown")]
|
|
enum TestEnum {
|
|
MyVariant,
|
|
MyOtherVariant(),
|
|
Key(String),
|
|
Unknown,
|
|
};
|
|
|
|
assert_eq!(
|
|
Parser::new("my-variant;").read::<TestEnum>().unwrap(),
|
|
TestEnum::MyVariant
|
|
);
|
|
|
|
assert_eq!(
|
|
Parser::new("my-other-variant;").read::<TestEnum>().unwrap(),
|
|
TestEnum::MyOtherVariant()
|
|
);
|
|
|
|
assert_eq!(
|
|
Parser::new("key my-key;").read::<TestEnum>().unwrap(),
|
|
TestEnum::Key("my-key".into())
|
|
);
|
|
|
|
assert_eq!(
|
|
Parser::new("not-yet-implemented { complicated statement; };").read::<TestEnum>().unwrap(),
|
|
TestEnum::Unknown
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn derive_enum_rename() {
|
|
#[derive(Parse, Debug, PartialEq)]
|
|
enum TestEnum {
|
|
#[parse(rename = "other-name", alias="such-alias")]
|
|
FirstVariant,
|
|
#[parse(alias = "good-alias", alias = "better-alias")]
|
|
SecondVariant
|
|
};
|
|
|
|
assert_eq!(
|
|
Parser::new("other-name;").read::<TestEnum>().unwrap(),
|
|
TestEnum::FirstVariant
|
|
);
|
|
|
|
assert_eq!(
|
|
Parser::new("such-alias;").read::<TestEnum>().unwrap(),
|
|
TestEnum::FirstVariant
|
|
);
|
|
|
|
assert_eq!(
|
|
Parser::new("good-alias;").read::<TestEnum>().unwrap(),
|
|
TestEnum::SecondVariant
|
|
);
|
|
|
|
assert_eq!(
|
|
Parser::new("better-alias;").read::<TestEnum>().unwrap(),
|
|
TestEnum::SecondVariant
|
|
);
|
|
}
|