added first bugfix
This commit is contained in:
parent
c668a2ac69
commit
b9a5490325
3 changed files with 22 additions and 8 deletions
18
src/test.rs
18
src/test.rs
|
|
@ -7,12 +7,20 @@ pub fn should_be_equal_lists<'a>(left: impl Iterator<Item=&'a &'a str>, right: V
|
|||
}
|
||||
|
||||
pub fn should_be_equal_list_of_lists<'a>(actual: &mut impl Iterator<Item=impl Iterator<Item=&'a &'a str>>, expected: Vec<Iter<&'a str>>) {
|
||||
let mut actual_vec=Vec::new();
|
||||
actual_vec.extend(actual);
|
||||
assert_eq!(actual_vec.len(), expected.len());
|
||||
for (actual_outer, expected_outer) in actual_vec.into_iter().zip(expected.into_iter()) {
|
||||
for (actual_inner, expected_inner) in actual_outer.zip(expected_outer) {
|
||||
let actual = collect(actual);
|
||||
assert_eq!(actual.len(), expected.len());
|
||||
for (actual_outer, expected_outer) in actual.into_iter().zip(expected.into_iter()) {
|
||||
let actual_outer: Vec<&&str> = actual_outer.collect();
|
||||
let expected_outer: Vec<&&str> = expected_outer.collect();
|
||||
assert_eq!(actual_outer.len(), expected_outer.len());
|
||||
for (actual_inner, expected_inner) in actual_outer.iter().zip(expected_outer.iter()) {
|
||||
assert_eq!(actual_inner, expected_inner);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn collect<'a>(iter: &mut impl Iterator<Item=impl Iterator<Item=&'a &'a str>>) -> Vec<impl Iterator<Item=&'a &'a str>> {
|
||||
let mut vec = Vec::new();
|
||||
vec.extend(iter);
|
||||
vec
|
||||
}
|
||||
|
|
@ -172,7 +172,8 @@ mod tests {
|
|||
let gram4 = vec!["b", "c"];
|
||||
let gram5 = vec!["c"];
|
||||
let gram6 = vec!["c", "d"];
|
||||
let expected = vec![gram1.iter(), gram2.iter(), gram3.iter(), gram4.iter(), gram5.iter(), gram6.iter()];
|
||||
let gram7 = vec!["d"];
|
||||
let expected = vec![gram1.iter(), gram2.iter(), gram3.iter(), gram4.iter(), gram5.iter(), gram6.iter(), gram7.iter()];
|
||||
|
||||
should_be_equal_list_of_lists(&mut bigrams, expected);
|
||||
}
|
||||
|
|
@ -181,6 +182,7 @@ mod tests {
|
|||
fn test_everygrams_n_eq_3() {
|
||||
let sequence = vec!["a", "b", "c", "d", "e"];
|
||||
let mut bigrams = everygrams(sequence.iter(), 3);
|
||||
|
||||
let gram1 = vec!["a"];
|
||||
let gram2 = vec!["a", "b"];
|
||||
let gram3 = vec!["a", "b", "c"];
|
||||
|
|
@ -190,7 +192,11 @@ mod tests {
|
|||
let gram7 = vec!["c"];
|
||||
let gram8 = vec!["c", "d"];
|
||||
let gram9 = vec!["c", "d", "e"];
|
||||
let expected = vec![gram1.iter(), gram2.iter(), gram3.iter(), gram4.iter(), gram5.iter(), gram6.iter(), gram7.iter(), gram8.iter(), gram9.iter()];
|
||||
let gram10 = vec!["d"];
|
||||
let gram11 = vec!["d", "e"];
|
||||
let gram12 = vec!["e"];
|
||||
|
||||
let expected = vec![gram1.iter(), gram2.iter(), gram3.iter(), gram4.iter(), gram5.iter(), gram6.iter(), gram7.iter(), gram8.iter(), gram9.iter(), gram10.iter(), gram11.iter(), gram12.iter()];
|
||||
|
||||
should_be_equal_list_of_lists(&mut bigrams, expected);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ impl<'a> Iterator for EveryGramSequenceIter<'a> {
|
|||
if maybe_next.is_some() {
|
||||
self.current_ngram.push(&maybe_next.unwrap());
|
||||
} else {
|
||||
self.n = 0; // not pretty, but ensures that the following next will be the last
|
||||
self.n -= 1; // not pretty, but ensures correct ending
|
||||
if self.current_ngram.len() == 0 {
|
||||
return None;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue