Skip to main content

codama_attributes/utils/
macros.rs

1#[macro_export]
2macro_rules! assert_type {
3    ({$($attr:tt)*}, $expected:expr) => {
4        {
5            let meta: codama_syn_helpers::Meta = syn::parse_quote! { type = $($attr)* };
6            let node = $crate::TypeDirective::parse(&meta)
7                .unwrap()
8                .node
9                .map(codama_nodes::Node::from);
10            assert_eq!(node, $crate::Resolvable::Resolved($expected));
11        }
12    };
13}
14
15#[macro_export]
16macro_rules! assert_type_err {
17    ({$($attr:tt)*}, $expected:expr) => {
18        {
19            let meta: codama_syn_helpers::Meta = syn::parse_quote! { type = $($attr)* };
20            let message = $crate::TypeDirective::parse(&meta).unwrap_err().to_string();
21            assert_eq!(message, $expected);
22        }
23    };
24}
25
26#[macro_export]
27macro_rules! assert_value {
28    ({$($attr:tt)*}, $expected:expr) => {
29        {
30            let meta: codama_syn_helpers::Meta = syn::parse_quote! { default_value = $($attr)* };
31            let node = $crate::DefaultValueDirective::parse(&meta).unwrap().node;
32            assert_eq!(node, $crate::Resolvable::Resolved($expected));
33        }
34    };
35}
36
37#[macro_export]
38macro_rules! assert_value_err {
39    ({$($attr:tt)*}, $expected:expr) => {
40        {
41            let meta: codama_syn_helpers::Meta = syn::parse_quote! { default_value = $($attr)* };
42            let message = $crate::DefaultValueDirective::parse(&meta).unwrap_err().to_string();
43            assert_eq!(message, $expected);
44        }
45    };
46}