test: new

This commit is contained in:
2026-04-27 18:15:38 -06:00
parent e79d93aa9d
commit 5cc60be02c

View File

@@ -1,11 +1,12 @@
use std::{fmt, ops}; use std::{fmt, ops};
#[derive(Debug, PartialEq, Eq)]
pub struct Fraction { pub struct Fraction {
num: i64, num: i64,
den: i64, den: i64,
} }
#[derive(Debug)] #[derive(Debug, PartialEq, Eq)]
pub enum FractionError { pub enum FractionError {
DivisionByZero, DivisionByZero,
ZeroDenominator, ZeroDenominator,
@@ -220,4 +221,31 @@ impl TryInto<i64> for Fraction {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
#[test]
fn test_new_valid_fraction() {
let f = Fraction::new(2, 4).unwrap();
assert_eq!(f.num, 1);
assert_eq!(f.den, 2);
}
#[test]
fn test_new_zero_denominator_error() {
let f = Fraction::new(2, 0);
assert!(matches!(f, Err(FractionError::ZeroDenominator)));
}
#[test]
fn test_new_reduces_fraction() {
let f = Fraction::new(256, 512).unwrap();
assert_eq!(f.num, 1);
assert_eq!(f.den, 2);
}
#[test]
fn test_new_normalizes_signs() {
let f = Fraction::new(1, -2).unwrap();
assert_eq!(f.num, -1);
assert_eq!(f.den, 2);
}
} }