summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorYounessBird <67457600+YounessBird@users.noreply.github.com>2022-06-01 19:15:43 +0100
committerYounessBird <67457600+YounessBird@users.noreply.github.com>2022-06-01 22:04:20 +0100
commit2b2966611b70485e184178d0c43ed340e8991593 (patch)
tree57398f49d080eae695880bf1fde89db830896776 /tests
parentc8ee9f1335fb093cda3debabe15ad0f7a3ab9071 (diff)
fix yaml to parse int keys
Diffstat (limited to 'tests')
-rw-r--r--tests/file_yaml.rs29
-rw-r--r--tests/test-keys.yaml8
2 files changed, 37 insertions, 0 deletions
diff --git a/tests/file_yaml.rs b/tests/file_yaml.rs
index 233b92c..0ece482 100644
--- a/tests/file_yaml.rs
+++ b/tests/file_yaml.rs
@@ -91,3 +91,32 @@ fn test_error_parse() {
)
);
}
+
+use std::collections::HashMap;
+
+#[derive(Debug, Deserialize)]
+struct Outer {
+ inner_string: HashMap<String, Inner>,
+ inner_int: HashMap<u32, Inner>,
+}
+
+#[derive(Debug, Deserialize)]
+struct Inner {
+ member: String,
+}
+
+#[test]
+fn test_yaml_parsing_key() {
+ let config = Config::builder()
+ .add_source(File::new("tests/test-keys.yaml", FileFormat::Yaml))
+ .build()
+ .unwrap()
+ .try_deserialize::<Outer>()
+ .unwrap();
+ assert_eq!(config.inner_int.get(&1).unwrap().member, "Test Int 1");
+ assert_eq!(config.inner_int.get(&2).unwrap().member, "Test Int 2");
+ assert_eq!(
+ config.inner_string.get("str_key").unwrap().member,
+ "Test String"
+ );
+}
diff --git a/tests/test-keys.yaml b/tests/test-keys.yaml
new file mode 100644
index 0000000..b026ae5
--- /dev/null
+++ b/tests/test-keys.yaml
@@ -0,0 +1,8 @@
+inner_int:
+ "1":
+ member: "Test Int 1"
+ 2:
+ member: "Test Int 2"
+inner_string:
+ str_key:
+ member: "Test String"