MCPcopy Index your code
hub / github.com/douchuan/algorithm / trie_st

Function trie_st

tests/test_strings.rs:111–174  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

109
110#[test]
111fn trie_st() {
112 let mut st = TrieST::default();
113 // test len & empty
114 assert!(st.is_empty());
115 assert_eq!(0, st.len());
116
117 let i = SHELLS_ST;
118 let mut hm = HashMap::new();
119 let a = extract_words(i);
120 for (i, &s) in a.iter().enumerate() {
121 hm.insert(s, i);
122 // test put
123 st.put(s, Some(i));
124 }
125
126 // test len & empty
127 assert!(!st.is_empty());
128 assert_eq!(7, st.len());
129
130 for (&k, v) in hm.iter() {
131 // test get & contains
132 assert_eq!(st.get(k), Some(v));
133 assert!(st.contains(k));
134 }
135
136 // test keys
137 // TrieST keys contained in HashMap
138 let keys = st.keys();
139 assert_eq!(hm.keys().len(), st.len());
140 for k in keys.iter() {
141 assert!(hm.contains_key(k.as_str()));
142 }
143 // HashMap keys contained in TrieST
144 let keys = hm.keys();
145 for &k in keys {
146 assert!(st.contains(k));
147 }
148
149 // test keys_with_prefix
150 let mut matches = st.keys_with_prefix("shor");
151 assert_eq!(1, matches.len());
152 assert_eq!(Some("shore"), matches.dequeue().as_deref());
153
154 // test keys_that_match
155 let mut matches = st.keys_that_match(".he.l.");
156 assert_eq!(Some("shells"), matches.dequeue().as_deref());
157
158 // test longest_prefix_of
159 assert_eq!(Some("shells"), st.longest_prefix_of("shellsort"));
160 assert_eq!(Some("she"), st.longest_prefix_of("shell"));
161 assert_eq!(None, st.longest_prefix_of("quicksort"));
162
163 // test delete
164 assert!(st.contains("shells"));
165 st.delete("shells");
166 assert_eq!(6, st.len());
167 assert!(!st.contains("shells"));
168

Callers

nothing calls this directly

Calls 8

extract_wordsFunction · 0.70
iterMethod · 0.45
insertMethod · 0.45
putMethod · 0.45
keysMethod · 0.45
keys_with_prefixMethod · 0.45
keys_that_matchMethod · 0.45
deleteMethod · 0.45

Tested by

no test coverage detected