aboutsummaryrefslogtreecommitdiff
path: root/src/primitive/variant.rs
diff options
context:
space:
mode:
authorMax Audron <audron@cocaine.farm>2025-02-22 20:10:45 +0100
committerMax Audron <audron@cocaine.farm>2025-02-22 20:10:45 +0100
commit6bd871a9af959ab7ca39d6250954e0f1f452b8f9 (patch)
tree675d252137df85da0fdff7b304075a645e4da43a /src/primitive/variant.rs
parentupdate flake (diff)
update dependencies and fix errors
Diffstat (limited to '')
-rw-r--r--src/primitive/variant.rs108
1 files changed, 56 insertions, 52 deletions
diff --git a/src/primitive/variant.rs b/src/primitive/variant.rs
index b306ea7..46334a0 100644
--- a/src/primitive/variant.rs
+++ b/src/primitive/variant.rs
@@ -434,6 +434,8 @@ impl Deserialize for Variant {
#[cfg(test)]
mod tests {
+ use time::macros::format_description;
+
use super::*;
#[test]
@@ -460,10 +462,7 @@ mod tests {
i_n_64.serialize().unwrap(),
[0, 0, 0, 129, 0, 255, 252, 253, 100, 160, 148, 133, 168]
);
- assert_eq!(
- i_n_32.serialize().unwrap(),
- [0, 0, 0, 2, 0, 202, 122, 245, 31]
- );
+ assert_eq!(i_n_32.serialize().unwrap(), [0, 0, 0, 2, 0, 202, 122, 245, 31]);
assert_eq!(i_n_16.serialize().unwrap(), [0, 0, 0, 130, 0, 224, 13]);
assert_eq!(i_n_8.serialize().unwrap(), [0, 0, 0, 131, 0, 178]);
}
@@ -496,8 +495,7 @@ mod tests {
let i_n_16 = Variant::i16(-8179);
let i_n_8 = Variant::i8(-78);
- let (_, v_i_64) =
- Variant::parse(&[0, 0, 0, 129, 0, 0, 3, 2, 155, 95, 107, 122, 88]).unwrap();
+ let (_, v_i_64) = Variant::parse(&[0, 0, 0, 129, 0, 0, 3, 2, 155, 95, 107, 122, 88]).unwrap();
let (_, v_i_32) = Variant::parse(&[0, 0, 0, 2, 0, 53, 133, 10, 225]).unwrap();
let (_, v_i_16) = Variant::parse(&[0, 0, 0, 130, 0, 31, 243]).unwrap();
let (_, v_i_8) = Variant::parse(&[0, 0, 0, 131, 0, 78]).unwrap();
@@ -526,8 +524,7 @@ mod tests {
let u_16 = Variant::u16(8179);
let u_8 = Variant::u8(78);
- let (_, v_u_64) =
- Variant::parse(&[0, 0, 0, 132, 0, 0, 3, 2, 155, 95, 107, 122, 88]).unwrap();
+ let (_, v_u_64) = Variant::parse(&[0, 0, 0, 132, 0, 0, 3, 2, 155, 95, 107, 122, 88]).unwrap();
let (_, v_u_32) = Variant::parse(&[0, 0, 0, 3, 0, 53, 133, 10, 225]).unwrap();
let (_, v_u_16) = Variant::parse(&[0, 0, 0, 133, 0, 31, 243]).unwrap();
let (_, v_u_8) = Variant::parse(&[0, 0, 0, 134, 0, 78]).unwrap();
@@ -579,8 +576,8 @@ mod tests {
let mut test_variantmap = VariantMap::new();
test_variantmap.insert("Configured".to_string(), Variant::bool(true));
let bytes = [
- 0, 0, 0, 1, 0, 0, 0, 20, 0, 67, 0, 111, 0, 110, 0, 102, 0, 105, 0, 103, 0, 117, 0, 114,
- 0, 101, 0, 100, 0, 0, 0, 1, 0, 1,
+ 0, 0, 0, 1, 0, 0, 0, 20, 0, 67, 0, 111, 0, 110, 0, 102, 0, 105, 0, 103, 0, 117, 0, 114, 0, 101,
+ 0, 100, 0, 0, 0, 1, 0, 1,
]
.to_vec();
assert_eq!(test_variantmap.serialize().unwrap(), bytes);
@@ -589,8 +586,8 @@ mod tests {
#[test]
pub fn variantmap_deserialize() {
let test_bytes: &[u8] = &[
- 0, 0, 0, 1, 0, 0, 0, 20, 0, 67, 0, 111, 0, 110, 0, 102, 0, 105, 0, 103, 0, 117, 0, 114,
- 0, 101, 0, 100, 0, 0, 0, 1, 0, 1,
+ 0, 0, 0, 1, 0, 0, 0, 20, 0, 67, 0, 111, 0, 110, 0, 102, 0, 105, 0, 103, 0, 117, 0, 114, 0, 101,
+ 0, 100, 0, 0, 0, 1, 0, 1,
];
let (len, res) = VariantMap::parse(test_bytes).unwrap();
let mut test_variantmap = VariantMap::new();
@@ -609,8 +606,8 @@ mod tests {
};
let bytes = vec![
- 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
- 0x4, 0x74, 0x65, 0x73, 0x74,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x74,
+ 0x65, 0x73, 0x74,
];
assert_eq!(test_buffer_info.serialize().unwrap(), bytes);
}
@@ -625,8 +622,8 @@ mod tests {
};
let bytes = vec![
- 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
- 0x5, 0x74, 0x65, 0x73, 0x74, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5, 0x74,
+ 0x65, 0x73, 0x74, 0x0,
];
let (len, res) = BufferInfo::parse(&bytes).unwrap();
@@ -636,10 +633,7 @@ mod tests {
#[test]
fn char_serialize() {
- assert_eq!(
- Variant::char('z').serialize().unwrap(),
- [0, 0, 0, 7, 0, 0, 122]
- );
+ assert_eq!(Variant::char('z').serialize().unwrap(), [0, 0, 0, 7, 0, 0, 122]);
}
#[test]
@@ -658,23 +652,23 @@ mod tests {
assert_eq!(
Variant::String(test_string.clone()).serialize().unwrap(),
[
- 0, 0, 0, 10, 0, 0, 0, 0, 36, 0, 0x54, 0, 0x68, 0, 0x69, 0, 0x73, 0, 0x20, 0, 0x69,
- 0, 0x73, 0, 0x20, 0, 0x61, 0, 0x20, 0, 0x54, 0, 0x65, 0, 0x73, 0, 0x74, 0, 0x21, 0,
- 0x31, 0, 0x21, 0, 0x21
+ 0, 0, 0, 10, 0, 0, 0, 0, 36, 0, 0x54, 0, 0x68, 0, 0x69, 0, 0x73, 0, 0x20, 0, 0x69, 0, 0x73,
+ 0, 0x20, 0, 0x61, 0, 0x20, 0, 0x54, 0, 0x65, 0, 0x73, 0, 0x74, 0, 0x21, 0, 0x31, 0, 0x21, 0,
+ 0x21
]
);
assert_eq!(
Variant::ByteArray(test_string.clone()).serialize().unwrap(),
[
- 0, 0, 0, 12, 0, 0, 0, 0, 18, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61,
- 0x20, 0x54, 0x65, 0x73, 0x74, 0x21, 0x31, 0x21, 0x21
+ 0, 0, 0, 12, 0, 0, 0, 0, 18, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20,
+ 0x54, 0x65, 0x73, 0x74, 0x21, 0x31, 0x21, 0x21
]
);
assert_eq!(
Variant::StringList(test_string_list).serialize().unwrap(),
[
- 0, 0, 0, 11, 0, 0, 0, 0, 2, 0, 0, 0, 10, 0, 0x74, 0, 0x65, 0, 0x73, 0, 0x74, 0,
- 0x31, 0, 0, 0, 12, 0, 0x74, 0, 0x65, 0, 0x73, 0, 0x74, 0, 0x20, 0, 0x32
+ 0, 0, 0, 11, 0, 0, 0, 0, 2, 0, 0, 0, 10, 0, 0x74, 0, 0x65, 0, 0x73, 0, 0x74, 0, 0x31, 0, 0,
+ 0, 12, 0, 0x74, 0, 0x65, 0, 0x73, 0, 0x74, 0, 0x20, 0, 0x32
]
);
}
@@ -685,19 +679,18 @@ mod tests {
let test_string_list = vec!["test1".to_string(), "test 2".to_string()];
let test_string_src = vec![
- 0, 0, 0, 10, 0, 0, 0, 0, 36, 0, 0x54, 0, 0x68, 0, 0x69, 0, 0x73, 0, 0x20, 0, 0x69, 0,
- 0x73, 0, 0x20, 0, 0x61, 0, 0x20, 0, 0x54, 0, 0x65, 0, 0x73, 0, 0x74, 0, 0x21, 0, 0x31,
- 0, 0x21, 0, 0x21,
+ 0, 0, 0, 10, 0, 0, 0, 0, 36, 0, 0x54, 0, 0x68, 0, 0x69, 0, 0x73, 0, 0x20, 0, 0x69, 0, 0x73, 0,
+ 0x20, 0, 0x61, 0, 0x20, 0, 0x54, 0, 0x65, 0, 0x73, 0, 0x74, 0, 0x21, 0, 0x31, 0, 0x21, 0, 0x21,
];
let test_string_src_utf8 = vec![
- 0, 0, 0, 12, 0, 0, 0, 0, 18, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61,
- 0x20, 0x54, 0x65, 0x73, 0x74, 0x21, 0x31, 0x21, 0x21, 0,
+ 0, 0, 0, 12, 0, 0, 0, 0, 18, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x54,
+ 0x65, 0x73, 0x74, 0x21, 0x31, 0x21, 0x21, 0,
];
let test_string_list_src = vec![
- 0, 0, 0, 11, 0, 0, 0, 0, 2, 0, 0, 0, 10, 0, 0x74, 0, 0x65, 0, 0x73, 0, 0x74, 0, 0x31,
- 0, 0, 0, 12, 0, 0x74, 0, 0x65, 0, 0x73, 0, 0x74, 0, 0x20, 0, 0x32,
+ 0, 0, 0, 11, 0, 0, 0, 0, 2, 0, 0, 0, 10, 0, 0x74, 0, 0x65, 0, 0x73, 0, 0x74, 0, 0x31, 0, 0, 0,
+ 12, 0, 0x74, 0, 0x65, 0, 0x73, 0, 0x74, 0, 0x20, 0, 0x32,
];
assert_eq!(
@@ -716,38 +709,49 @@ mod tests {
#[test]
fn datetime_serialize() {
- let datetime =
- Variant::DateTime(DateTime::parse("2020-02-19 13:00 +0200", "%Y-%m-%d %R %z").unwrap());
- let date = Variant::Date(Date::parse("2020-02-19", "%Y-%m-%d").unwrap());
- let time = Variant::Time(Time::parse("13:00", "%R").unwrap());
+ let datetime = Variant::DateTime(
+ DateTime::parse(
+ "2020-02-19 13:00 +0200",
+ format_description!(
+ "[year]-[month]-[day] [hour]:[minute] [offset_hour sign:mandatory][offset_minute]"
+ ),
+ )
+ .unwrap(),
+ );
+
+ let date =
+ Variant::Date(Date::parse("2020-02-19", format_description!("[year]-[month]-[day]")).unwrap());
+ let time = Variant::Time(Time::parse("13:00", format_description!("[hour]:[minute]")).unwrap());
assert_eq!(
datetime.serialize().unwrap(),
[0, 0, 0, 0x10, 0, 0, 37, 133, 19, 2, 202, 28, 128, 3, 0, 0, 28, 32]
);
- assert_eq!(
- date.serialize().unwrap(),
- [0, 0, 0, 0x0e, 0, 0, 37, 133, 19]
- );
+ assert_eq!(date.serialize().unwrap(), [0, 0, 0, 0x0e, 0, 0, 37, 133, 19]);
- assert_eq!(
- time.serialize().unwrap(),
- [0, 0, 0, 0x0f, 0, 2, 202, 28, 128]
- );
+ assert_eq!(time.serialize().unwrap(), [0, 0, 0, 0x0f, 0, 2, 202, 28, 128]);
}
#[test]
fn datetime_deserialize() {
- let datetime =
- Variant::DateTime(DateTime::parse("2020-02-19 13:00 +0200", "%Y-%m-%d %R %z").unwrap());
- let date = Variant::Date(Date::parse("2020-02-19", "%Y-%m-%d").unwrap());
- let time = Variant::Time(Time::parse("13:00", "%R").unwrap());
+ let datetime = Variant::DateTime(
+ DateTime::parse(
+ "2020-02-19 13:00 +0200",
+ format_description!(
+ "[year]-[month]-[day] [hour]:[minute] [offset_hour sign:mandatory][offset_minute]"
+ ),
+ )
+ .unwrap(),
+ );
+
+ let date =
+ Variant::Date(Date::parse("2020-02-19", format_description!("[year]-[month]-[day]")).unwrap());
+ let time = Variant::Time(Time::parse("13:00", format_description!("[hour]:[minute]")).unwrap());
assert_eq!(
(18, datetime),
- Variant::parse(&[0, 0, 0, 0x10, 0, 0, 37, 133, 19, 2, 202, 28, 128, 3, 0, 0, 28, 32])
- .unwrap()
+ Variant::parse(&[0, 0, 0, 0x10, 0, 0, 37, 133, 19, 2, 202, 28, 128, 3, 0, 0, 28, 32]).unwrap()
);
assert_eq!(