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 {
|
fn add(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();
|
||||||
@@ -248,4 +248,49 @@ mod tests {
|
|||||||
assert_eq!(f.num, -1);
|
assert_eq!(f.num, -1);
|
||||||
assert_eq!(f.den, 2);
|
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