use super::Version;
use crate::VERSION;
use std::fmt::{Display, Formatter, Result};
impl Display for Version {
fn fmt(&self, f: &mut Formatter<'_>) -> Result {
write!(f, "{}", self.version)
}
}
impl Version {
#[must_use = "return value should be used"]
pub fn to_dbc_string(&self) -> String {
if self.version.is_empty() {
format!("{} \"\"", VERSION)
} else {
format!("{} \"{}\"", VERSION, &self.version)
}
}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::Parser;
#[test]
fn test_version_to_dbc_string() {
let line1 = b"VERSION \"1\"";
let mut parser1 = Parser::new(line1).unwrap();
let v1 = Version::parse(&mut parser1).unwrap();
assert_eq!(v1.to_dbc_string(), "VERSION \"1\"");
let line2 = b"VERSION \"1.0\"";
let mut parser2 = Parser::new(line2).unwrap();
let v2 = Version::parse(&mut parser2).unwrap();
assert_eq!(v2.to_dbc_string(), "VERSION \"1.0\"");
let line3 = b"VERSION \"2.3.4\"";
let mut parser3 = Parser::new(line3).unwrap();
let v3 = Version::parse(&mut parser3).unwrap();
assert_eq!(v3.to_dbc_string(), "VERSION \"2.3.4\"");
}
#[test]
fn test_version_empty_round_trip() {
let line = b"VERSION \"\"";
let mut parser = Parser::new(line).unwrap();
let version = Version::parse(&mut parser).unwrap();
assert_eq!(version.to_dbc_string(), "VERSION \"\"");
}
}