summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/unsigned_int.rs48
1 files changed, 48 insertions, 0 deletions
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);
+}