1use super::Version;
2use crate::compat::Name;
3
4impl Version {
5 pub(crate) fn new(version: Name) -> Self {
17 Self { version }
19 }
20
21 #[inline]
39 #[must_use = "return value should be used"]
40 pub fn as_str(&self) -> &str {
41 self.version.as_str()
42 }
43}
44
45#[cfg(test)]
46mod tests {
47 use super::*;
48 use crate::Parser;
49
50 fn assert_version_str(version: &Version, expected: &str) {
52 assert_eq!(version.as_str(), expected);
53 #[cfg(feature = "std")]
54 assert_eq!(version.to_string(), expected);
55 }
56
57 #[test]
58 fn test_version_parse_major_only() {
59 let line = b"VERSION \"1\"";
60 let mut parser = Parser::new(line).unwrap();
61 let result = Version::parse(&mut parser);
62 assert!(result.is_ok());
63 let version = result.unwrap();
64 assert_version_str(&version, "1");
65 }
66
67 #[test]
68 fn test_version_parse_full_version() {
69 let line = b"VERSION \"1.2.3\"";
70 let mut parser = Parser::new(line).unwrap();
71 let result = Version::parse(&mut parser);
72 assert!(result.is_ok());
73 let version = result.unwrap();
74 assert_version_str(&version, "1.2.3");
75 }
76
77 #[test]
78 fn test_version_parse_with_whitespace() {
79 let line = b"VERSION \"1.0\"";
80 let mut parser = Parser::new(line).unwrap();
81 let result = Version::parse(&mut parser);
82 assert!(result.is_ok());
83 let version = result.unwrap();
84 assert_version_str(&version, "1.0");
85 }
86
87 #[test]
88 fn test_version_parse_empty_quotes() {
89 let line = b"VERSION \"\"";
90 let mut parser = Parser::new(line).unwrap();
91 let version = Version::parse(&mut parser).unwrap();
92 assert_version_str(&version, "");
93 }
94
95 #[test]
96 fn test_version_with_special_chars() {
97 let line = b"VERSION \"1.0-beta\"";
98 let mut parser = Parser::new(line).unwrap();
99 let version = Version::parse(&mut parser).unwrap();
100 assert_version_str(&version, "1.0-beta");
101 }
102}