tlq-ucum 0.1.10

UCUM (Unified Code for Units of Measure) implementation.
Documentation
use rust_decimal::Decimal;
use std::str::FromStr;

#[test]
fn parse_rejects_non_ascii() {
    let err = tlq_ucum::parse("µg").unwrap_err();
    assert!(matches!(err, tlq_ucum::Error::NonAscii));
}

#[test]
fn validate_rejects_invalid_syntax() {
    assert!(tlq_ucum::validate("mg//dL").is_err());
    assert!(tlq_ucum::validate("kg/(m.s2").is_err());
    assert!(tlq_ucum::validate("m..s").is_err());
}

#[test]
fn equivalence_basic() {
    assert!(tlq_ucum::equivalent("mg/dL", "g/L").unwrap());
    assert!(!tlq_ucum::equivalent("mg", "m").unwrap());
}

#[test]
fn case_sensitive_symbols() {
    assert!(tlq_ucum::validate("[iU]").is_ok());
    assert!(tlq_ucum::validate("[IU]").is_ok());
    assert!(tlq_ucum::validate("iu").is_err());
}

#[test]
fn converts_minutes_to_seconds() {
    let v = tlq_ucum::convert_decimal(Decimal::ONE, "min", "s").unwrap();
    assert_eq!(v, Decimal::from(60));
}

#[test]
fn deciliter_to_liter() {
    let v = tlq_ucum::convert_decimal(Decimal::ONE, "dL", "L").unwrap();
    assert_eq!(v, Decimal::from_str("0.1").unwrap());
}

#[test]
fn normalizes_pressure_to_pa() {
    let n = tlq_ucum::normalize(Decimal::from(120), "mm[Hg]").unwrap();
    assert_eq!(n.unit, "Pa");
    assert_eq!(n.value, Decimal::from_str("15998.64").unwrap());
}