From 5a5a5ffd300d2ca1da52ac69b42c718c17c36f7d Mon Sep 17 00:00:00 2001 From: laentropia Date: Mon, 27 Apr 2026 18:44:28 -0600 Subject: [PATCH] test: substraction --- src/lib.rs | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 2b11f08..e94139b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -136,7 +136,7 @@ impl ops::Sub for Fraction { fn sub(self, other: Self) -> Self::Output { let mut new = Fraction { num: (self.num * other.den) - (self.den * other.num), - den: self.num * other.den, + den: self.den * other.den, }; new.reduce(); new.correct_sign(); @@ -293,4 +293,58 @@ mod tests { assert_eq!(c.num, 4); assert_eq!(c.den, 7); } + + #[test] + fn test_sub_basic() { + let a = Fraction::new(7, 13).unwrap(); + let b = Fraction::new(4, 7).unwrap(); + let c = a - b; + assert_eq!(c.num, -3); + assert_eq!(c.den, 91); + } + + #[test] + fn test_sub_with_common_denominator() { + let a = Fraction::new(7, 13).unwrap(); + let b = Fraction::new(4, 13).unwrap(); + let c = a - b; + assert_eq!(c.num, 3); + assert_eq!(c.den, 13); + } + + #[test] + fn test_sub_positive_and_negative() { + let a = Fraction::new(-32, 237).unwrap(); + let b = Fraction::new(22, 44).unwrap(); + let c = a - b; + assert_eq!(c.num, -301); + assert_eq!(c.den, 474); + } + + #[test] + fn test_sub_negative_and_negative() { + let a = Fraction::new(-500, 12).unwrap(); + let b = Fraction::new(-22, 4).unwrap(); + let c = a - b; + assert_eq!(c.num, -217); + assert_eq!(c.den, 6); + } + + #[test] + fn test_sub_with_zero() { + let a = Fraction::new(0, 13).unwrap(); + let b = Fraction::new(4, 7).unwrap(); + let c = a - b; + assert_eq!(c.num, -4); + assert_eq!(c.den, 7); + } + + #[test] + fn test_sub_result_zero() { + let a = Fraction::new(5, 9).unwrap(); + let b = Fraction::new(5, 9).unwrap(); + let c = a - b; + assert_eq!(c.num, 0); + assert_eq!(c.den, 1); + } }