use darling::{Error, FromMeta}; use syn::parse_quote; #[derive(Debug, FromMeta)] struct Meta { #[darling(default)] meta1: Option, #[darling(default)] meta2: bool, } #[test] fn nested_meta_meta_value() { let meta = Meta::from_list(&[parse_quote! { meta1 = "thefeature" }]) .unwrap(); assert_eq!(meta.meta1, Some("thefeature".to_string())); assert!(!meta.meta2); } #[test] fn nested_meta_meta_bool() { let meta = Meta::from_list(&[parse_quote! { meta2 }]) .unwrap(); assert_eq!(meta.meta1, None); assert!(meta.meta2); } #[test] fn nested_meta_lit_string_errors() { let err = Meta::from_list(&[parse_quote! { "meta2" }]) .unwrap_err(); assert_eq!( err.to_string(), Error::unsupported_format("literal").to_string() ); } #[test] fn nested_meta_lit_integer_errors() { let err = Meta::from_list(&[parse_quote! { 2 }]) .unwrap_err(); assert_eq!( err.to_string(), Error::unsupported_format("literal").to_string() ); } #[test] fn nested_meta_lit_bool_errors() { let err = Meta::from_list(&[parse_quote! { true }]) .unwrap_err(); assert_eq!( err.to_string(), Error::unsupported_format("literal").to_string() ); }