test: substraction

This commit is contained in:
2026-04-27 18:44:28 -06:00
parent 273ba27222
commit 5a5a5ffd30

View File

@@ -136,7 +136,7 @@ impl ops::Sub for Fraction {
fn sub(self, other: Self) -> Self::Output { fn sub(self, other: Self) -> Self::Output {
let mut new = Fraction { let mut new = Fraction {
num: (self.num * other.den) - (self.den * other.num), num: (self.num * other.den) - (self.den * other.num),
den: self.num * other.den, den: self.den * other.den,
}; };
new.reduce(); new.reduce();
new.correct_sign(); new.correct_sign();
@@ -293,4 +293,58 @@ mod tests {
assert_eq!(c.num, 4); assert_eq!(c.num, 4);
assert_eq!(c.den, 7); 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);
}
} }