Skip to main content

surrealml_core/storage/header/
string_value.rs

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