diff --git a/src/common.rs b/src/common.rs index 7adfa11..40d1ae7 100644 --- a/src/common.rs +++ b/src/common.rs @@ -101,8 +101,6 @@ pub fn get_diff_ratio(ops: &[DiffOp], old_len: usize, new_len: usize) -> f32 { /// This will leave holes behind in long periods of equal ranges so that /// you can build things like unified diffs. pub fn group_diff_ops(mut ops: Vec, n: usize) -> Vec> { - assert!(n > 0, "n must be 1 or larger"); - if ops.is_empty() { return vec![]; } diff --git a/src/text/mod.rs b/src/text/mod.rs index bdc75a0..23408e6 100644 --- a/src/text/mod.rs +++ b/src/text/mod.rs @@ -760,10 +760,12 @@ fn test_serde_ops() { } #[test] -#[should_panic = "n must be 1 or larger"] fn test_regression_issue_37() { let config = TextDiffConfig::default(); - let diff = config.diff_lines("", ""); + let diff = config.diff_lines("\u{18}\n\n", "\n\n\r"); let mut output = diff.unified_diff(); - output.context_radius(0).to_string(); + assert_eq!( + output.context_radius(0).to_string(), + "@@ -1 +1,0 @@\n-\u{18}\n@@ -2,0 +2,2 @@\n+\n+\r" + ); } diff --git a/src/udiff.rs b/src/udiff.rs index d975068..c65609e 100644 --- a/src/udiff.rs +++ b/src/udiff.rs @@ -57,7 +57,7 @@ impl UnifiedDiffHunkRange { impl fmt::Display for UnifiedDiffHunkRange { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { let mut beginning = self.start() + 1; - let len = self.end() - self.start(); + let len = self.end().saturating_sub(self.start()); if len == 1 { write!(f, "{}", beginning) } else {