summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/env.rs4
-rw-r--r--tests/file_json5.rs2
-rw-r--r--tests/integer_range.rs10
-rw-r--r--tests/unsigned_int.rs48
-rw-r--r--tests/unsigned_int_hm.rs46
5 files changed, 106 insertions, 4 deletions
diff --git a/tests/env.rs b/tests/env.rs
index 2ee67de..3a24bde 100644
--- a/tests/env.rs
+++ b/tests/env.rs
@@ -191,7 +191,9 @@ fn test_parse_float() {
// can't use `matches!` because of float value
match config {
- TestFloatEnum::Float(TestFloat { float_val }) => assert_eq!(float_val, 42.3),
+ TestFloatEnum::Float(TestFloat { float_val }) => {
+ assert!(float_cmp::approx_eq!(f64, float_val, 42.3))
+ }
}
})
}
diff --git a/tests/file_json5.rs b/tests/file_json5.rs
index 74d06c2..bdeb3ea 100644
--- a/tests/file_json5.rs
+++ b/tests/file_json5.rs
@@ -84,7 +84,7 @@ fn test_error_parse() {
assert_eq!(
res.unwrap_err().to_string(),
format!(
- " --> 2:7\n |\n2 | ok: true␊\n | ^---\n |\n = expected null in {}",
+ " --> 2:7\n |\n2 | ok: true\n | ^---\n |\n = expected null in {}",
path_with_extension.display()
)
);
diff --git a/tests/integer_range.rs b/tests/integer_range.rs
index 7777ef2..e80a2f2 100644
--- a/tests/integer_range.rs
+++ b/tests/integer_range.rs
@@ -13,8 +13,14 @@ fn wrapping_u16() {
.build()
.unwrap();
- let port: u16 = c.get("settings.port").unwrap();
- assert_eq!(port, 464);
+ // FIXME: Can't compare ConfigError, because Unexpected are private.
+ let _port_error = c.get::<u16>("settings.port").unwrap_err();
+ /*
+ assert!(matches!(
+ Err(ConfigError::invalid_type(None, config::Unexpected::U64(66000), "an unsigned 16 bit integer"),)
+ port_error
+ ));
+ */
}
#[test]
diff --git a/tests/unsigned_int.rs b/tests/unsigned_int.rs
new file mode 100644
index 0000000..e870c8a
--- /dev/null
+++ b/tests/unsigned_int.rs
@@ -0,0 +1,48 @@
+#![cfg(feature = "preserve_order")]
+
+extern crate indexmap;
+
+#[derive(serde::Deserialize, Eq, PartialEq, Debug)]
+struct Container<T> {
+ inner: T,
+}
+
+#[derive(serde::Deserialize, Eq, PartialEq, Debug)]
+struct Unsigned {
+ unsigned: u16,
+}
+
+impl Default for Unsigned {
+ fn default() -> Self {
+ Self { unsigned: 128 }
+ }
+}
+
+impl From<Unsigned> for config::ValueKind {
+ fn from(unsigned: Unsigned) -> Self {
+ let mut properties = indexmap::IndexMap::new();
+ properties.insert(
+ "unsigned".to_string(),
+ config::Value::from(unsigned.unsigned),
+ );
+
+ Self::Table(properties)
+ }
+}
+
+#[test]
+fn test_deser_unsigned_int() {
+ let container = Container {
+ inner: Unsigned::default(),
+ };
+
+ let built = config::Config::builder()
+ .set_default("inner", Unsigned::default())
+ .unwrap()
+ .build()
+ .unwrap()
+ .try_deserialize::<Container<Unsigned>>()
+ .unwrap();
+
+ assert_eq!(container, built);
+}
diff --git a/tests/unsigned_int_hm.rs b/tests/unsigned_int_hm.rs
new file mode 100644
index 0000000..ab2a60c
--- /dev/null
+++ b/tests/unsigned_int_hm.rs
@@ -0,0 +1,46 @@
+#![cfg(not(feature = "preserve_order"))]
+
+#[derive(serde::Deserialize, Eq, PartialEq, Debug)]
+struct Container<T> {
+ inner: T,
+}
+
+#[derive(serde::Deserialize, Eq, PartialEq, Debug)]
+struct Unsigned {
+ unsigned: u16,
+}
+
+impl Default for Unsigned {
+ fn default() -> Self {
+ Self { unsigned: 128 }
+ }
+}
+
+impl From<Unsigned> for config::ValueKind {
+ fn from(unsigned: Unsigned) -> Self {
+ let mut properties = std::collections::HashMap::new();
+ properties.insert(
+ "unsigned".to_string(),
+ config::Value::from(unsigned.unsigned),
+ );
+
+ Self::Table(properties)
+ }
+}
+
+#[test]
+fn test_deser_unsigned_int_hm() {
+ let container = Container {
+ inner: Unsigned::default(),
+ };
+
+ let built = config::Config::builder()
+ .set_default("inner", Unsigned::default())
+ .unwrap()
+ .build()
+ .unwrap()
+ .try_deserialize::<Container<Unsigned>>()
+ .unwrap();
+
+ assert_eq!(container, built);
+}