Skip to content

Commit e6889ff

Browse files
committed
Add unit tests for MergeIter
1 parent dcb2104 commit e6889ff

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

src/utils.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ pub fn write_byte_string(f: &mut Formatter, byte_string: &[u8]) -> fmt::Result {
3636
Ok(())
3737
}
3838

39+
/// An iterator that merges two sorted iterators into one sorted iterator
3940
pub(crate) struct MergeIter<It1, It2>
4041
where
4142
It1: Iterator,
@@ -284,4 +285,30 @@ mod tests {
284285
]);
285286
assert_eq!(format!("{:?}", bytes), r##""Class IRI=\"#B\"""##);
286287
}
288+
289+
#[test]
290+
fn merge_empty() {
291+
let iter = MergeIter::new(vec![].into_iter(), vec![].into_iter());
292+
assert_eq!(iter.collect::<Vec<usize>>(), vec![]);
293+
}
294+
295+
#[test]
296+
fn merge_single_empty() {
297+
let iter = MergeIter::new(vec![1].into_iter(), vec![].into_iter());
298+
assert_eq!(iter.collect::<Vec<usize>>(), vec![1]);
299+
let iter = MergeIter::new(vec![].into_iter(), vec![1].into_iter());
300+
assert_eq!(iter.collect::<Vec<usize>>(), vec![1]);
301+
}
302+
303+
#[test]
304+
fn merge_whole_side_before() {
305+
let iter = MergeIter::new(vec![1, 2, 3].into_iter(), vec![4, 5, 6].into_iter());
306+
assert_eq!(iter.collect::<Vec<usize>>(), vec![1, 2, 3, 4, 5, 6]);
307+
}
308+
309+
#[test]
310+
fn merge_interleave() {
311+
let iter = MergeIter::new(vec![1, 2, 8, 20].into_iter(), vec![3, 4, 22, 23].into_iter());
312+
assert_eq!(iter.collect::<Vec<usize>>(), vec![1, 2, 3, 4, 8, 20, 22, 23]);
313+
}
287314
}

0 commit comments

Comments
 (0)