easyofd_core/doc/
keywords.rs1#[derive(Debug, Clone, Default)]
9pub struct Keywords {
10 pub keywords: Vec<String>,
12}
13
14impl Keywords {
15 #[must_use]
17 pub fn new() -> Self {
18 Self::default()
19 }
20
21 pub fn add(&mut self, keyword: impl Into<String>) {
23 self.keywords.push(keyword.into());
24 }
25
26 #[must_use]
28 pub fn len(&self) -> usize {
29 self.keywords.len()
30 }
31
32 #[must_use]
34 pub fn is_empty(&self) -> bool {
35 self.keywords.is_empty()
36 }
37
38 #[must_use]
40 pub fn to_string_joined(&self) -> String {
41 self.keywords.join(",")
42 }
43}
44
45#[cfg(test)]
46mod tests {
47 use super::*;
48
49 #[test]
50 fn keywords_new() {
51 let k = Keywords::new();
52 assert!(k.is_empty());
53 }
54
55 #[test]
56 fn keywords_add() {
57 let mut k = Keywords::new();
58 k.add("OFD");
59 k.add("PDF");
60 assert_eq!(k.len(), 2);
61 }
62
63 #[test]
64 fn keywords_to_string_joined() {
65 let mut k = Keywords::new();
66 k.add("A");
67 k.add("B");
68 assert_eq!(k.to_string_joined(), "A,B");
69 }
70}