uom/si/
electrical_mobility.rs

1//! Electrical mobility (base unit square meter per volt second, kg⁻¹ · s² · A).
2
3quantity! {
4    /// Electrical mobility (base unit square meter per volt second, kg⁻¹ · s² · A).
5    quantity: ElectricalMobility; "electrical mobility";
6    /// Dimension of electrical mobility, M⁻¹T²I⁻¹ (base unit square meter per volt second,
7    /// kg⁻¹ · s² · A).
8    dimension: ISQ<
9        Z0,     // length
10        N1,     // mass
11        P2,     // time
12        P1,     // electric current
13        Z0,     // thermodynamic temperature
14        Z0,     // amount of substance
15        Z0>;    // luminous intensity
16    units {
17        @square_meter_per_volt_second: prefix!(none); "m²/(V · s)", "square meter per volt second",
18            "square meters per volt second";
19        @square_centimeter_per_volt_second: prefix!(centi) * prefix!(centi); "cm²/(V · s)",
20            "square centimeter per volt second", "square centimeters per volt second";
21    }
22}
23
24#[cfg(test)]
25mod test {
26    storage_types! {
27        use crate::num::One;
28        use crate::si::electrical_mobility as em;
29        use crate::si::electric_potential as ep;
30        use crate::si::time as t;
31        use crate::si::length as l;
32        use crate::si::quantities::*;
33        use crate::tests::Test;
34
35        #[test]
36        fn check_dimension() {
37            let _: ElectricalMobility<V> = Length::new::<l::meter>(V::one())
38                * Length::new::<l::meter>(V::one())
39                / Time::new::<t::second>(V::one())
40                / ElectricPotential::new::<ep::volt>(V::one());
41        }
42
43        #[test]
44        fn check_units() {
45            test::<l::meter, ep::volt, t::second, em::square_meter_per_volt_second>();
46            test::<l::centimeter, ep::volt, t::second,em::square_centimeter_per_volt_second>();
47
48            fn test<L: l::Conversion<V>, EP: ep::Conversion<V>, T: t::Conversion<V>,
49                EM: em::Conversion<V>>()
50            {
51                Test::assert_approx_eq(&ElectricalMobility::new::<EM>(V::one()),
52                    &(Length::new::<L>(V::one())
53                        * Length::new::<L>(V::one())
54                        / ElectricPotential::new::<EP>(V::one())
55                        / Time::new::<T>(V::one())));
56            }
57        }
58    }
59}