1use egml_core::model::basic::Measure;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
5pub struct GmlMeasure {
6 #[serde(rename = "@uom")]
7 pub uom: String,
8 #[serde(rename = "$value")]
9 pub value: f64,
10}
11
12impl From<GmlMeasure> for Measure {
13 fn from(item: GmlMeasure) -> Self {
14 Self {
15 uom: item.uom,
16 value: item.value,
17 }
18 }
19}
20
21#[cfg(test)]
22mod tests {
23 use super::*;
24 use quick_xml::de;
25
26 #[test]
27 fn deserialize_measure() {
28 let xml_document = b"
29 <gen:value uom=\"m2\">120.0</gen:value>";
30
31 let gml_measure: GmlMeasure = de::from_reader(xml_document.as_ref()).expect("should work");
32 let measure = Measure::from(gml_measure);
33
34 assert_eq!(measure.uom, "m2");
35 assert_eq!(measure.value, 120.0);
36 }
37}