From 5cc60be02cd70c9ec3789502e33c4178f5a3e4fb Mon Sep 17 00:00:00 2001 From: laentropia Date: Mon, 27 Apr 2026 18:15:38 -0600 Subject: [PATCH] test: new --- src/lib.rs | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 08ffd44..ed79fe1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,11 +1,12 @@ use std::{fmt, ops}; +#[derive(Debug, PartialEq, Eq)] pub struct Fraction { num: i64, den: i64, } -#[derive(Debug)] +#[derive(Debug, PartialEq, Eq)] pub enum FractionError { DivisionByZero, ZeroDenominator, @@ -220,4 +221,31 @@ impl TryInto for Fraction { #[cfg(test)] mod tests { 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); + } }