#[cfg(test)]
mod integration_tests {
use crate::fixed_point::domains::symbolic::rational::*;
#[test]
fn test_symbolic_integration_basic() {
let a = RationalNumber::new(1, 3); let b = RationalNumber::new(3, 8);
let result = a / b;
assert_eq!(result.numerator_i128().unwrap(), 8);
assert_eq!(result.denominator_i128().unwrap(), 9);
}
#[test]
fn test_rational_mathematical_exactness() {
let one_third = RationalNumber::new(1, 3);
let three = RationalNumber::new(3, 1);
let result = one_third * three;
assert_eq!(result.numerator_i128().unwrap(), 1);
assert_eq!(result.denominator_i128().unwrap(), 1);
}
#[test]
fn test_rational_chain_operations() {
let a = RationalNumber::new(1, 7);
let b = RationalNumber::new(7, 3);
let c = RationalNumber::new(2, 9);
let result = (a * b) / c;
let expected_num = 3i32;
let expected_den = 2i32;
let actual_num: i32 = result.numerator_i128().unwrap() as i32;
let actual_den: i32 = result.denominator_i128().unwrap() as i32;
assert_eq!(actual_num * expected_den, expected_num * actual_den);
}
}