unitforge 0.5.1

A library for unit and quantity consistent computations in Rust
Documentation
#![cfg(any(feature = "storage-f64", feature = "storage-f32"))]

use unitforge::quantities::{Distance, DistanceUnit, Force, ForceUnit};
use unitforge::PhysicsQuantity;

#[test]
fn new_and_from_raw_store_direct_base_values() {
    let force = Force::new(1.0, ForceUnit::kN);
    let distance = Distance::from_raw(2.5);

    assert_eq!(force.as_f64(), 1000.0);
    assert_eq!(force.to(ForceUnit::N), 1000.0);
    assert_eq!(distance.as_f64(), 2.5);
    assert_eq!(distance.to(DistanceUnit::m), 2.5);
}

#[test]
fn arithmetic_uses_native_float_behavior() {
    let lhs = Force::new(1.0, ForceUnit::kN);
    let rhs = Force::new(500.0, ForceUnit::N);
    let sum = lhs + rhs;
    let scaled = sum * 2.0;

    assert_eq!(sum.as_f64(), 1500.0);
    assert_eq!(scaled.as_f64(), 3000.0);
}

#[test]
fn optimize_is_no_op_for_plain_storage() {
    let mut force = Force::new(1.25, ForceUnit::kN);
    force.optimize();

    assert_eq!(force.as_f64(), 1250.0);
}