#![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);
}