44 lines
756 B
Rust
44 lines
756 B
Rust
use darling::{FromDeriveInput, FromMeta};
|
|
use syn::parse_quote;
|
|
|
|
#[derive(Debug, FromMeta, PartialEq, Eq)]
|
|
enum Dolor {
|
|
Sit,
|
|
#[darling(word)]
|
|
Amet,
|
|
}
|
|
|
|
impl Default for Dolor {
|
|
fn default() -> Self {
|
|
Dolor::Sit
|
|
}
|
|
}
|
|
|
|
#[derive(FromDeriveInput)]
|
|
#[darling(attributes(hello))]
|
|
struct Receiver {
|
|
#[darling(default)]
|
|
example: Dolor,
|
|
}
|
|
|
|
#[test]
|
|
fn missing_meta() {
|
|
let di = Receiver::from_derive_input(&parse_quote! {
|
|
#[hello]
|
|
struct Example;
|
|
})
|
|
.unwrap();
|
|
|
|
assert_eq!(Dolor::Sit, di.example);
|
|
}
|
|
|
|
#[test]
|
|
fn empty_meta() {
|
|
let di = Receiver::from_derive_input(&parse_quote! {
|
|
#[hello(example)]
|
|
struct Example;
|
|
})
|
|
.unwrap();
|
|
|
|
assert_eq!(Dolor::Amet, di.example);
|
|
}
|