use super::Version;
use crate::compat::Name;
impl Version {
pub(crate) fn new(version: Name) -> Self {
Self { version }
}
#[inline]
#[must_use = "return value should be used"]
pub fn as_str(&self) -> &str {
self.version.as_str()
}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::Parser;
fn assert_version_str(version: &Version, expected: &str) {
assert_eq!(version.as_str(), expected);
#[cfg(feature = "std")]
assert_eq!(version.to_string(), expected);
}
#[test]
fn test_version_parse_major_only() {
let line = b"VERSION \"1\"";
let mut parser = Parser::new(line).unwrap();
let result = Version::parse(&mut parser);
assert!(result.is_ok());
let version = result.unwrap();
assert_version_str(&version, "1");
}
#[test]
fn test_version_parse_full_version() {
let line = b"VERSION \"1.2.3\"";
let mut parser = Parser::new(line).unwrap();
let result = Version::parse(&mut parser);
assert!(result.is_ok());
let version = result.unwrap();
assert_version_str(&version, "1.2.3");
}
#[test]
fn test_version_parse_with_whitespace() {
let line = b"VERSION \"1.0\"";
let mut parser = Parser::new(line).unwrap();
let result = Version::parse(&mut parser);
assert!(result.is_ok());
let version = result.unwrap();
assert_version_str(&version, "1.0");
}
#[test]
fn test_version_parse_empty_quotes() {
let line = b"VERSION \"\"";
let mut parser = Parser::new(line).unwrap();
let version = Version::parse(&mut parser).unwrap();
assert_version_str(&version, "");
}
#[test]
fn test_version_with_special_chars() {
let line = b"VERSION \"1.0-beta\"";
let mut parser = Parser::new(line).unwrap();
let version = Version::parse(&mut parser).unwrap();
assert_version_str(&version, "1.0-beta");
}
}