]> git.proxmox.com Git - rustc.git/blob - vendor/darling/tests/happy_path.rs
New upstream version 1.73.0+dfsg1
[rustc.git] / vendor / darling / tests / happy_path.rs
1 use darling::{FromDeriveInput, FromMeta};
2 use syn::parse_quote;
3
4 #[derive(Default, FromMeta, PartialEq, Debug)]
5 #[darling(default)]
6 struct Lorem {
7 ipsum: bool,
8 dolor: Option<String>,
9 }
10
11 #[derive(FromDeriveInput, PartialEq, Debug)]
12 #[darling(attributes(darling_demo))]
13 struct Core {
14 ident: syn::Ident,
15 vis: syn::Visibility,
16 generics: syn::Generics,
17 lorem: Lorem,
18 }
19
20 #[derive(FromDeriveInput, PartialEq, Debug)]
21 #[darling(attributes(darling_demo))]
22 struct TraitCore {
23 ident: syn::Ident,
24 generics: syn::Generics,
25 lorem: Lorem,
26 }
27
28 #[test]
29 fn simple() {
30 let di = parse_quote! {
31 #[derive(Foo)]
32 #[darling_demo(lorem(ipsum))]
33 pub struct Bar;
34 };
35
36 assert_eq!(
37 Core::from_derive_input(&di).unwrap(),
38 Core {
39 ident: parse_quote!(Bar),
40 vis: parse_quote!(pub),
41 generics: Default::default(),
42 lorem: Lorem {
43 ipsum: true,
44 dolor: None,
45 },
46 }
47 );
48 }
49
50 #[test]
51 fn trait_type() {
52 let di = parse_quote! {
53 #[derive(Foo)]
54 #[darling_demo(lorem(dolor = "hello"))]
55 pub struct Bar;
56 };
57
58 assert_eq!(
59 TraitCore::from_derive_input(&di).unwrap(),
60 TraitCore {
61 ident: parse_quote!(Bar),
62 generics: Default::default(),
63 lorem: Lorem {
64 ipsum: false,
65 dolor: Some("hello".to_owned()),
66 }
67 }
68 );
69 }