()
| 109 | |
| 110 | #[test] |
| 111 | fn 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 |
nothing calls this directly
no test coverage detected