Add tests for myers_diff module

pull/464/head
Wilfred Hughes 2023-01-15 10:55:14 +07:00
parent 85e630aabc
commit dd92af3643
1 changed files with 29 additions and 1 deletions

@ -1,6 +1,6 @@
//! A fast diff for linear content, using Myer's diff algorithm. //! A fast diff for linear content, using Myer's diff algorithm.
#[derive(Debug)] #[derive(Debug, PartialEq)]
pub enum DiffResult<T> { pub enum DiffResult<T> {
Left(T), Left(T),
Both(T, T), Both(T, T),
@ -21,3 +21,31 @@ pub fn slice<'a, T: PartialEq + Clone>(lhs: &'a [T], rhs: &'a [T]) -> Vec<DiffRe
}) })
.collect::<Vec<_>>() .collect::<Vec<_>>()
} }
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_slice_same_items() {
let diff_items = slice(&["a", "b"], &["a", "b"]);
assert_eq!(
diff_items,
vec![DiffResult::Both(&"a", &"a"), DiffResult::Both(&"b", &"b")]
);
}
#[test]
fn test_slice_different_items() {
let diff_items = slice(&["a", "b"], &["c", "d"]);
assert_eq!(
diff_items,
vec![
DiffResult::Left(&"a"),
DiffResult::Left(&"b"),
DiffResult::Right(&"c"),
DiffResult::Right(&"d"),
]
);
}
}