uom/si/
areal_mass_density.rs

1//! Areal mass density (base unit kilogram per square meter, m⁻² · kg).
2
3quantity! {
4    /// Areal mass density (base unit kilogram per square meter, m⁻² · kg).
5    quantity: ArealMassDensity; "areal mass density";
6    /// Dimension of areal mass density, L⁻²M (base unit kilogram per square meter, m⁻² · kg).
7    dimension: ISQ<
8        N2,     // length
9        P1,     // mass
10        Z0,     // time
11        Z0,     // electric current
12        Z0,     // thermodynamic temperature
13        Z0,     // amount of substance
14        Z0>;    // luminous intensity
15    units {
16        @kilogram_per_square_meter: prefix!(none); "kg/m²", "kilogram per square meter",
17            "kilograms per square meter";
18        @gram_per_square_meter: prefix!(milli); "g/m²", "gram per square meter",
19            "grams per square meter";
20        @gram_per_square_centimeter: prefix!(milli) / prefix!(centi) / prefix!(centi); "g/cm²",
21            "gram per square centimeter", "grams per square centimeter";
22
23        @ounce_per_square_foot: 2.834_952_E-2 / 9.290_304_E-2; "oz/ft²", "ounce per square foot",
24            "ounces per square foot";
25    }
26}
27
28#[cfg(test)]
29mod test {
30    storage_types! {
31        use crate::num::One;
32        use crate::si::mass as m;
33        use crate::si::areal_mass_density as d;
34        use crate::si::quantities::*;
35        use crate::si::area as a;
36        use crate::tests::Test;
37
38        #[test]
39        fn check_dimension() {
40            let _: ArealMassDensity<V> = Mass::new::<m::kilogram>(V::one())
41                / Area::new::<a::square_meter>(V::one());
42        }
43
44        #[test]
45        fn check_units() {
46            test::<m::kilogram, a::square_meter, d::kilogram_per_square_meter>();
47            test::<m::gram, a::square_meter, d::gram_per_square_meter>();
48            test::<m::gram, a::square_centimeter, d::gram_per_square_centimeter>();
49
50            test::<m::ounce, a::square_foot, d::ounce_per_square_foot>();
51
52            fn test<M: m::Conversion<V>, A: a::Conversion<V>, D: d::Conversion<V>>() {
53                Test::assert_approx_eq(&ArealMassDensity::new::<D>(V::one()),
54                    &(Mass::new::<M>(V::one()) / Area::new::<A>(V::one())));
55            }
56        }
57    }
58}