test: substraction
This commit is contained in:
56
src/lib.rs
56
src/lib.rs
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user