summaryrefslogtreecommitdiffstats
path: root/vendor/darling-0.14.4/tests/hash_map.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/darling-0.14.4/tests/hash_map.rs')
-rw-r--r--vendor/darling-0.14.4/tests/hash_map.rs42
1 files changed, 42 insertions, 0 deletions
diff --git a/vendor/darling-0.14.4/tests/hash_map.rs b/vendor/darling-0.14.4/tests/hash_map.rs
new file mode 100644
index 000000000..5d9a0114e
--- /dev/null
+++ b/vendor/darling-0.14.4/tests/hash_map.rs
@@ -0,0 +1,42 @@
+use std::collections::HashMap;
+
+use darling::FromMeta;
+use syn::{parse_quote, Attribute, Path};
+
+#[derive(Debug, FromMeta, PartialEq, Eq)]
+struct MapValue {
+ name: String,
+ #[darling(default)]
+ option: bool,
+}
+
+#[test]
+fn parse_map() {
+ let attr: Attribute = parse_quote! {
+ #[foo(first(name = "Hello", option), the::second(name = "Second"))]
+ };
+
+ let meta = attr.parse_meta().unwrap();
+ let map: HashMap<Path, MapValue> = FromMeta::from_meta(&meta).unwrap();
+
+ let comparison: HashMap<Path, MapValue> = vec![
+ (
+ parse_quote!(first),
+ MapValue {
+ name: "Hello".into(),
+ option: true,
+ },
+ ),
+ (
+ parse_quote!(the::second),
+ MapValue {
+ name: "Second".into(),
+ option: false,
+ },
+ ),
+ ]
+ .into_iter()
+ .collect();
+
+ assert_eq!(comparison, map);
+}