use serde::{Deserialize, Serialize};
use super::data_item::DataItem;
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct Geometry {
#[serde(rename = "@GeometryType")]
#[doc(hidden)]
pub geometry_type: GeometryType,
#[serde(rename = "DataItem")]
#[doc(hidden)]
pub data_items: Vec<DataItem>,
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Serialize, Deserialize)]
pub enum GeometryType {
#[default]
#[doc(hidden)]
XYZ,
#[doc(hidden)]
XY,
#[serde(rename = "X_Y_Z")]
#[doc(hidden)]
XYZSeparate,
}
#[cfg(test)]
mod tests {
use quick_xml::se::to_string;
use super::*;
#[test]
fn geometry_type_default() {
assert_eq!(GeometryType::default(), GeometryType::XYZ);
}
#[test]
fn geometry_serialization() {
let geometry = Geometry {
geometry_type: GeometryType::XY,
data_items: vec![DataItem::default()],
};
pretty_assertions::assert_eq!(
to_string(&geometry).unwrap(),
"<Geometry GeometryType=\"XY\"><DataItem Dimensions=\"1\" NumberType=\"Float\" Format=\"XML\" Precision=\"4\"/></Geometry>"
);
}
}