dbc_rs/version/builder/
impls.rs

1use super::VersionBuilder;
2
3impl VersionBuilder {
4    /// Creates a new `VersionBuilder` with no version set.
5    ///
6    /// # Examples
7    ///
8    /// ```rust,no_run
9    /// use dbc_rs::VersionBuilder;
10    ///
11    /// let builder = VersionBuilder::new();
12    /// // Must set version before building
13    /// let version = builder.version("1.0").build()?;
14    /// # Ok::<(), dbc_rs::Error>(())
15    /// ```
16    pub fn new() -> Self {
17        Self { version: None }
18    }
19
20    /// Sets the complete version string.
21    ///
22    /// # Arguments
23    ///
24    /// * `version` - The complete version string (e.g., "1.0", "1.2.3", "1.0-beta")
25    ///
26    /// # Examples
27    ///
28    /// ```rust,no_run
29    /// use dbc_rs::VersionBuilder;
30    ///
31    /// let version = VersionBuilder::new()
32    ///     .version("1.2.3")
33    ///     .build()?;
34    /// assert_eq!(version.as_str(), "1.2.3");
35    /// # Ok::<(), dbc_rs::Error>(())
36    /// ```
37    #[must_use = "builder method returns modified builder"]
38    pub fn version(mut self, version: impl AsRef<str>) -> Self {
39        self.version = Some(version.as_ref().to_string());
40        self
41    }
42}
43
44impl Default for VersionBuilder {
45    fn default() -> Self {
46        Self::new()
47    }
48}
49
50#[cfg(test)]
51mod tests {
52    use super::VersionBuilder;
53
54    #[test]
55    fn test_version_builder_version_string() {
56        let version = VersionBuilder::new().version("1.0").build().unwrap();
57        assert_eq!(version.as_str(), "1.0");
58    }
59
60    #[test]
61    fn test_version_builder_with_special_chars() {
62        let version = VersionBuilder::new().version("1.0-beta").build().unwrap();
63        assert_eq!(version.as_str(), "1.0-beta");
64    }
65
66    #[test]
67    fn test_version_builder_long_version() {
68        let long_version = "1.2.3.4.5.6.7.8.9.10";
69        let version = VersionBuilder::new().version(long_version).build().unwrap();
70        assert_eq!(version.as_str(), long_version);
71    }
72}