uom/si/
molality.rs

1//! Molality (base unit mole per kilogram, kg⁻¹ · mol).
2
3quantity! {
4    /// Molality (base unit mole per kilogram, kg⁻¹ · mol).
5    quantity: Molality; "molality";
6    /// Dimension of molality, M⁻¹N (base unit mole per kilogram, kg⁻¹ · mol).
7    dimension: ISQ<
8        Z0,     // length
9        N1,     // mass
10        Z0,     // time
11        Z0,     // electric current
12        Z0,     // thermodynamic temperature
13        P1,     // amount of substance
14        Z0>;    // luminous intensity
15    kind: dyn (crate::si::marker::ConstituentConcentrationKind);
16    units {
17        @mole_per_kilogram: prefix!(none); "mol/kg", "mole per kilogram", "moles per kilogram";
18    }
19}
20
21#[cfg(test)]
22mod tests {
23    storage_types! {
24        use crate::num::One;
25        use crate::si::amount_of_substance as aos;
26        use crate::si::mass as m;
27        use crate::si::molality as mol;
28        use crate::si::quantities::*;
29        use crate::tests::Test;
30
31        #[test]
32        fn check_dimension() {
33            let _: Molality<V> = (AmountOfSubstance::new::<aos::mole>(V::one())
34                / Mass::new::<m::kilogram>(V::one())).into();
35        }
36
37        #[test]
38        fn check_units() {
39            test::<aos::mole, m::kilogram, mol::mole_per_kilogram>();
40
41            fn test<AOS: aos::Conversion<V>, M: m::Conversion<V>, MOL: mol::Conversion<V>>() {
42                Test::assert_approx_eq(&Molality::new::<MOL>(V::one()),
43                    &(AmountOfSubstance::new::<AOS>(V::one()) /
44                    Mass::new::<M>(V::one())).into());
45            }
46        }
47    }
48}