surrealml_core/storage/header/
string_value.rs1use std::fmt;
3
4#[derive(Debug, PartialEq)]
9pub struct StringValue {
10 pub value: Option<String>,
11}
12
13impl StringValue {
14 pub fn fresh() -> Self {
19 StringValue {
20 value: None,
21 }
22 }
23
24 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}