rust_lstar/knowledge_base/
stats.rs1pub struct KnowledgeBaseStats {
5 nb_query: usize,
6 nb_submitted_query: usize,
7 nb_letter: usize,
8 nb_submitted_letter: usize,
9}
10
11impl KnowledgeBaseStats {
12 pub fn new() -> Self {
14 KnowledgeBaseStats {
15 nb_query: 0,
16 nb_submitted_query: 0,
17 nb_letter: 0,
18 nb_submitted_letter: 0,
19 }
20 }
21
22 pub fn nb_submitted_query(&self) -> usize {
24 self.nb_submitted_query
25 }
26
27 pub fn set_nb_submitted_query(&mut self, value: usize) {
29 self.nb_submitted_query = value;
30 }
31
32 pub fn increment_nb_submitted_query(&mut self) {
34 self.nb_submitted_query += 1;
35 }
36
37 pub fn nb_submitted_letter(&self) -> usize {
39 self.nb_submitted_letter
40 }
41
42 pub fn set_nb_submitted_letter(&mut self, value: usize) {
44 self.nb_submitted_letter = value;
45 }
46
47 pub fn add_nb_submitted_letter(&mut self, count: usize) {
49 self.nb_submitted_letter += count;
50 }
51
52 pub fn nb_letter(&self) -> usize {
54 self.nb_letter
55 }
56
57 pub fn set_nb_letter(&mut self, value: usize) {
59 self.nb_letter = value;
60 }
61
62 pub fn add_nb_letter(&mut self, count: usize) {
64 self.nb_letter += count;
65 }
66
67 pub fn nb_query(&self) -> usize {
69 self.nb_query
70 }
71
72 pub fn set_nb_query(&mut self, value: usize) {
74 self.nb_query = value;
75 }
76
77 pub fn increment_nb_query(&mut self) {
79 self.nb_query += 1;
80 }
81}
82
83impl Default for KnowledgeBaseStats {
84 fn default() -> Self {
85 Self::new()
86 }
87}
88
89impl std::fmt::Display for KnowledgeBaseStats {
90 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
91 write!(
92 f,
93 "\t- nb query = {}\n\t- nb submitted query = {}\n\t- nb letter = {}\n\t- nb submitted letter = {}\n",
94 self.nb_query, self.nb_submitted_query, self.nb_letter, self.nb_submitted_letter
95 )
96 }
97}
98
99#[cfg(test)]
100mod tests {
101 use super::*;
102
103 #[test]
104 fn test_creation() {
105 let stats = KnowledgeBaseStats::new();
106 assert_eq!(stats.nb_query(), 0);
107 assert_eq!(stats.nb_submitted_query(), 0);
108 assert_eq!(stats.nb_letter(), 0);
109 assert_eq!(stats.nb_submitted_letter(), 0);
110 }
111
112 #[test]
113 fn test_increment_query() {
114 let mut stats = KnowledgeBaseStats::new();
115 stats.increment_nb_query();
116 stats.increment_nb_query();
117 assert_eq!(stats.nb_query(), 2);
118 }
119
120 #[test]
121 fn test_add_letter() {
122 let mut stats = KnowledgeBaseStats::new();
123 stats.add_nb_letter(5);
124 stats.add_nb_letter(3);
125 assert_eq!(stats.nb_letter(), 8);
126 }
127}