|
|
|
|
@ -86,6 +86,9 @@ impl LenValueMap {
|
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
let decoded = decoder.decode(&word)?; |
|
|
|
|
if decoded.is_empty() { |
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
self.data |
|
|
|
|
.entry(decoded.value_len()?) |
|
|
|
|
@ -249,6 +252,32 @@ mod tests {
|
|
|
|
|
assert!(words.contains(&TEST_WORD_4.to_string())); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[test] |
|
|
|
|
fn test_skip_empty_decodes() { |
|
|
|
|
let words = vec![TEST_WORD_1.to_string(), TEST_WORD_2.to_string()]; |
|
|
|
|
let mut decoder = MockDecoder::new(); |
|
|
|
|
decoder.expect_decode().returning(|word| { |
|
|
|
|
if word == TEST_WORD_1 { |
|
|
|
|
DecodedValue::new("".to_string()) |
|
|
|
|
} else { |
|
|
|
|
DecodedValue::new(TEST_NUM_2.to_string()) |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
let mut lv_map = LenValueMap::new(); |
|
|
|
|
lv_map.insert_words(words, &decoder).unwrap(); |
|
|
|
|
|
|
|
|
|
let data = lv_map.into_data(); |
|
|
|
|
|
|
|
|
|
assert_eq!(data.len(), 1); |
|
|
|
|
assert!(data.contains_key(&TEST_NUM_1_LEN)); |
|
|
|
|
let data = data.get(&TEST_NUM_1_LEN).unwrap(); |
|
|
|
|
assert!(data.contains_key(&TEST_NUM_2)); |
|
|
|
|
let words = data.get(&TEST_NUM_2).unwrap(); |
|
|
|
|
assert_eq!(words.len(), 1); |
|
|
|
|
assert_eq!(words[0], TEST_WORD_2); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[test] |
|
|
|
|
fn test_decoder_error_propagates() { |
|
|
|
|
let mut decoder = MockDecoder::new(); |
|
|
|
|
|