egml-io 0.0.2-alpha.1

IO operations for processing GML data.
Documentation
use egml_core::model::basic::Measure;
use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct GmlMeasure {
    #[serde(rename = "@uom")]
    pub uom: String,
    #[serde(rename = "$value")]
    pub value: f64,
}

impl From<GmlMeasure> for Measure {
    fn from(item: GmlMeasure) -> Self {
        Self {
            uom: item.uom,
            value: item.value,
        }
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    use quick_xml::de;

    #[test]
    fn deserialize_measure() {
        let xml_document = b"
          <gen:value uom=\"m2\">120.0</gen:value>";

        let gml_measure: GmlMeasure = de::from_reader(xml_document.as_ref()).expect("should work");
        let measure = Measure::from(gml_measure);

        assert_eq!(measure.uom, "m2");
        assert_eq!(measure.value, 120.0);
    }
}