unitforge 0.5.3

A library for unit and quantity consistent computations in Rust
Documentation
use num_traits::Zero;
use unitforge::quantities::{Force, ForceUnit};
use unitforge::PhysicsQuantity;

#[test]
fn scalar_division_by_zero_saturates_to_signed_infinity() {
    let pos = Force::new(10.0, ForceUnit::N) / 0.0;
    let neg = Force::new(-10.0, ForceUnit::N) / 0.0;

    assert!(pos.as_f64().is_infinite());
    assert!(pos.as_f64().is_sign_positive());
    assert!(neg.as_f64().is_infinite());
    assert!(neg.as_f64().is_sign_negative());
}

#[test]
fn zero_divided_by_zero_scalar_becomes_nan() {
    let value = Force::zero() / 0.0;
    assert!(value.is_nan());
    #[cfg(not(any(feature = "storage-f64", feature = "storage-f32")))]
    assert_eq!(value.get_power(), 0);
}

#[test]
fn scalar_multiplication_by_nan_produces_nan_quantity() {
    let value = Force::new(10.0, ForceUnit::N) * f64::NAN;
    assert!(value.is_nan());
    #[cfg(not(any(feature = "storage-f64", feature = "storage-f32")))]
    assert_eq!(value.get_power(), 0);
}

#[test]
fn scalar_division_by_nan_produces_nan_quantity() {
    let value = Force::new(10.0, ForceUnit::N) / f64::NAN;
    assert!(value.is_nan());
    #[cfg(not(any(feature = "storage-f64", feature = "storage-f32")))]
    assert_eq!(value.get_power(), 0);
}

#[test]
fn infinity_times_zero_becomes_nan() {
    let value = Force::INFINITY * 0.0;
    assert!(value.is_nan());
    #[cfg(not(any(feature = "storage-f64", feature = "storage-f32")))]
    assert_eq!(value.get_power(), 0);
}