use uninum::{Number, num};
#[test]
fn test_from_implementations_comprehensive() {
assert_eq!(Number::from(u32::MIN), Number::from(0u64));
assert_eq!(Number::from(u32::MAX), Number::from(4294967295u64));
assert_eq!(Number::from(u64::MIN), Number::from(0u64));
assert_eq!(
Number::from(u64::MAX),
Number::from(18446744073709551615u64)
);
assert_eq!(Number::from(usize::MAX), Number::from(usize::MAX as u64));
assert_eq!(Number::from(i32::MIN), Number::from(-2147483648i64));
assert_eq!(Number::from(i32::MAX), Number::from(2147483647i64));
assert_eq!(
Number::from(i64::MIN),
Number::from(-9223372036854775808i64)
);
assert_eq!(Number::from(i64::MAX), Number::from(9223372036854775807i64));
assert_eq!(Number::from(isize::MIN), Number::from(isize::MIN as i64));
assert_eq!(Number::from(isize::MAX), Number::from(isize::MAX as i64));
assert_eq!(Number::from(f64::NAN), num!(f64::NAN));
assert_eq!(Number::from(f64::INFINITY), num!(f64::INFINITY));
assert_eq!(Number::from(f64::NEG_INFINITY), num!(f64::NEG_INFINITY));
assert_eq!(Number::from(f64::MIN), num!(f64::MIN));
assert_eq!(Number::from(f64::MAX), num!(f64::MAX));
assert_eq!(Number::from(f64::MIN_POSITIVE), num!(f64::MIN_POSITIVE));
assert_eq!(Number::from(f64::EPSILON), num!(f64::EPSILON));
assert_eq!(Number::from(0.0f64), num!(0.0));
assert_eq!(Number::from(-0.0f64), num!(-0.0));
}
#[test]
fn test_from_float_constructor() {
let b = num!(std::f64::consts::PI);
if let Some(f64_val) = b.try_get_f64() {
assert!((f64_val - std::f64::consts::PI).abs() < 0.001);
} else {
panic!("Expected f64 value");
}
}
#[test]
fn test_constructor_methods_boundary_values() {
assert_eq!(Number::from(u32::MIN as u64), Number::from(0u64));
assert_eq!(Number::from(u32::MAX as u64), Number::from(4294967295u64));
assert_eq!(Number::from(i32::MIN as i64), Number::from(-2147483648i64));
assert_eq!(Number::from(i32::MAX as i64), Number::from(2147483647i64));
assert_eq!(Number::from(u64::MIN), Number::from(0u64));
assert_eq!(
Number::from(u64::MAX),
Number::from(18446744073709551615u64)
);
assert_eq!(
Number::from(i64::MIN),
Number::from(-9223372036854775808i64)
);
assert_eq!(Number::from(i64::MAX), Number::from(9223372036854775807i64));
assert!(num!(f64::NAN).is_nan());
assert!(num!(f64::INFINITY).is_infinite());
assert!(num!(f64::NEG_INFINITY).is_infinite());
}
#[test]
#[cfg(feature = "decimal")]
fn test_from_decimal() {
use rust_decimal::Decimal;
let decimal_value = Decimal::new(314159, 5); let number = Number::from(decimal_value);
assert!(number.try_get_decimal().is_some());
if let Some(arc_decimal) = number.try_get_decimal() {
assert_eq!(**arc_decimal, decimal_value);
}
}