From 6c03c83c771e290625f9a15d169c44a037b24116 Mon Sep 17 00:00:00 2001 From: mikhailofff Date: Thu, 22 Jan 2026 18:14:52 +0400 Subject: [PATCH] =?UTF-8?q?add=20corner=E2=80=91case=20tests=20for=20core?= =?UTF-8?q?=20simplify?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iOverlay/src/core/simplify.rs | 60 +++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/iOverlay/src/core/simplify.rs b/iOverlay/src/core/simplify.rs index 5a33923..f0d4040 100644 --- a/iOverlay/src/core/simplify.rs +++ b/iOverlay/src/core/simplify.rs @@ -363,4 +363,64 @@ mod tests { assert_eq!(r1.len(), 1); assert_eq!(r1[0][0].len(), 3); } + + #[test] + fn test_without_points() { + let contour: &[IntPoint] = &[]; + + let mut rev_contour = contour.to_vec(); + rev_contour.reverse(); + + let r0 = contour.simplify(FillRule::NonZero, Default::default()); + assert_eq!(r0.len(), 0); + + let r1 = rev_contour.simplify(FillRule::NonZero, Default::default()); + assert_eq!(r1.len(), 0); + } + + #[test] + fn test_with_single_point() { + let contour = vec![IntPoint::new(0, 0)]; + + let mut rev_contour = contour.clone(); + rev_contour.reverse(); + + let r0 = contour.simplify(FillRule::NonZero, Default::default()); + assert_eq!(r0.len(), 0); + + let r1 = contour.simplify(FillRule::NonZero, Default::default()); + assert_eq!(r1.len(), 0); + } + + #[test] + fn test_with_pair_of_points() { + let contour = vec![IntPoint::new(0, 0), IntPoint::new(1, 1)]; + + let mut rev_contour = contour.clone(); + rev_contour.reverse(); + + let r0 = contour.simplify(FillRule::NonZero, Default::default()); + assert_eq!(r0.len(), 0); + + let r1 = contour.simplify(FillRule::NonZero, Default::default()); + assert_eq!(r1.len(), 0); + } + + #[test] + fn test_near_collinear_paths() { + let contour = vec![ + IntPoint::new(-100, -100), + IntPoint::new(0, 0), + IntPoint::new(101, 100), + ]; + + let mut rev_contour = contour.clone(); + rev_contour.reverse(); + + let r0 = contour.simplify(FillRule::NonZero, Default::default()); + assert_eq!(r0.len(), 1); + + let r1 = contour.simplify(FillRule::NonZero, Default::default()); + assert_eq!(r1.len(), 1); + } }