surrealml_core/storage/header/
string_value.rs

1//! Defines a generic string value for the header.
2
3
4/// Defines a generic string value for the header.
5/// 
6/// # Fields
7/// * `value` - The value of the string.
8#[derive(Debug, PartialEq)]
9pub struct StringValue {
10    pub value: Option<String>,
11}
12
13
14impl StringValue {
15
16    /// Creates a new string value with no value.
17    /// 
18    /// # Returns
19    /// A new string value with no value.
20    pub fn fresh() -> Self {
21        StringValue {
22            value: None,
23        }
24    }
25
26    /// Creates a new string value from a string.
27    /// 
28    /// # Arguments
29    /// * `value` - The value of the string.
30    /// 
31    /// # Returns
32    /// A new string value.
33    pub fn from_string(value: String) -> Self {
34        match value.as_str() {
35            "" => StringValue {
36                value: None,
37            },
38            _ => StringValue {
39                value: Some(value),
40            },
41        }
42    }
43
44    /// Converts the string value to a string.
45    /// 
46    /// # Returns
47    /// The string value as a string.
48    pub fn to_string(&self) -> String {
49        match &self.value {
50            Some(value) => value.to_string(),
51            None => String::from(""),
52        }
53    }
54
55}
56
57
58#[cfg(test)]
59mod tests {
60    use super::*;
61
62    #[test]
63    fn test_fresh() {
64        let string_value = StringValue::fresh();
65        assert_eq!(string_value, StringValue {
66            value: None,
67        });
68    }
69
70    #[test]
71    fn test_from_string() {
72        let string_value = StringValue::from_string(String::from("test"));
73        assert_eq!(string_value, StringValue {
74            value: Some(String::from("test")),
75        });
76    }
77
78    #[test]
79    fn test_from_string_none() {
80        let string_value = StringValue::from_string(String::from(""));
81        assert_eq!(string_value, StringValue {
82            value: None,
83        });
84    }
85
86    #[test]
87    fn test_to_string() {
88        let string_value = StringValue::from_string(String::from("test"));
89        assert_eq!(string_value.to_string(), String::from("test"));
90    }
91
92    #[test]
93    fn test_to_string_none() {
94        let string_value = StringValue {
95            value: None,
96        };
97        assert_eq!(string_value.to_string(), String::from(""));
98    }
99}