test: addtiion
This commit is contained in:
47
src/lib.rs
47
src/lib.rs
@@ -104,7 +104,7 @@ impl ops::Add for Fraction {
|
||||
fn add(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();
|
||||
@@ -248,4 +248,49 @@ mod tests {
|
||||
assert_eq!(f.num, -1);
|
||||
assert_eq!(f.den, 2);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_add_basic() {
|
||||
let a = Fraction::new(7, 13).unwrap();
|
||||
let b = Fraction::new(4, 7).unwrap();
|
||||
let c = a + b;
|
||||
assert_eq!(c.num, 101);
|
||||
assert_eq!(c.den, 91);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_add_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, 11);
|
||||
assert_eq!(c.den, 13);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_add_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, 173);
|
||||
assert_eq!(c.den, 474);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_add_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, -283);
|
||||
assert_eq!(c.den, 6);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_add_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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user