#[derive(Debug, Clone, PartialEq, Eq, Hash, Default)]
pub struct SrsReferenceGroup {
srs_name: Option<Box<str>>,
srs_dimension: Option<u32>,
}
impl SrsReferenceGroup {
pub fn new() -> Self {
Self::default()
}
pub fn is_empty(&self) -> bool {
self.srs_name.is_none() && self.srs_dimension.is_none()
}
pub fn srs_name(&self) -> Option<&str> {
self.srs_name.as_deref()
}
pub fn srs_dimension(&self) -> Option<u32> {
self.srs_dimension
}
pub fn set_srs_name(&mut self, srs_name: impl Into<String>) {
self.srs_name = Some(srs_name.into().into_boxed_str());
}
pub fn set_srs_name_opt(&mut self, srs_name: Option<String>) {
self.srs_name = srs_name.map(String::into_boxed_str);
}
pub fn clear_srs_name(&mut self) {
self.srs_name = None;
}
pub fn set_srs_dimension(&mut self, srs_dimension: u32) {
self.srs_dimension = Some(srs_dimension);
}
pub fn set_srs_dimension_opt(&mut self, srs_dimension: Option<u32>) {
self.srs_dimension = srs_dimension;
}
pub fn clear_srs_dimension(&mut self) {
self.srs_dimension = None;
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn new_group_is_empty() {
assert!(SrsReferenceGroup::new().is_empty());
}
#[test]
fn group_with_any_attribute_is_not_empty() {
let mut group = SrsReferenceGroup::new();
group.set_srs_dimension(3);
assert!(!group.is_empty());
group.clear_srs_dimension();
group.set_srs_name("EPSG:25832");
assert!(!group.is_empty());
assert_eq!(group.srs_name(), Some("EPSG:25832"));
}
}