summaryrefslogtreecommitdiffstats
path: root/vendor/darling/tests/hash_map.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-30 03:59:35 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-30 03:59:35 +0000
commitd1b2d29528b7794b41e66fc2136e395a02f8529b (patch)
treea4a17504b260206dec3cf55b2dca82929a348ac2 /vendor/darling/tests/hash_map.rs
parentReleasing progress-linux version 1.72.1+dfsg1-1~progress7.99u1. (diff)
downloadrustc-d1b2d29528b7794b41e66fc2136e395a02f8529b.tar.xz
rustc-d1b2d29528b7794b41e66fc2136e395a02f8529b.zip
Merging upstream version 1.73.0+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/darling/tests/hash_map.rs')
-rw-r--r--vendor/darling/tests/hash_map.rs42
1 files changed, 42 insertions, 0 deletions
diff --git a/vendor/darling/tests/hash_map.rs b/vendor/darling/tests/hash_map.rs
new file mode 100644
index 000000000..881cd1cf1
--- /dev/null
+++ b/vendor/darling/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.meta;
+ 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);
+}