uom/si/
surface_electric_current_density.rs

1//! Surface electric current density (base unit ampere per meter, ). 
2
3quantity! {
4    /// Surface electric current density (base unit ampere per meter, m⁻¹ · A).
5    quantity: SurfaceElectricCurrentDensity; "surface electric current density";
6    /// Dimension of surface electric current density, IL⁻¹ (base unit ampere per meter, m⁻¹ · A).
7    dimension: ISQ<
8        N1,     // length
9        Z0,     // mass
10        Z0,     // time
11        P1,     // electric current
12        Z0,     // thermodynamic temperature
13        Z0,     // amount of substance
14        Z0>;    // luminous intensity
15    kind: dyn (crate::si::marker::ConstituentConcentrationKind);
16    units {
17        @ampere_per_meter: prefix!(none); "A/m", "ampere per meter", "amperes per meter";
18        @ampere_per_centimeter: prefix!(none) / prefix!(centi) ; "A/cm", "ampere per centimeter",
19            "amperes per centimeter";
20        @ampere_per_millimeter: prefix!(none) / prefix!(milli) ; "A/mm", "ampere per millimeter",
21            "amperes per millimeter";
22        @ampere_per_micrometer: prefix!(none) / prefix!(micro) ; "A/μm", "ampere per micrometer",
23            "amperes per micrometer";
24    }
25}
26
27#[cfg(test)]
28mod tests {
29    storage_types! {
30        use crate::num::One;
31        use crate::si::length as l;
32        use crate::si::electric_current as i;
33        use crate::si::surface_electric_current_density as ecd;
34        use crate::si::quantities::*;
35        use crate::tests::Test;
36
37        #[test]
38        fn check_dimension() {
39            let _: SurfaceElectricCurrentDensity<V> = (ElectricCurrent::new::<i::ampere>(V::one())
40                / Length::new::<l::meter>(V::one())).into();
41        }
42
43        #[test]
44        fn check_units() {
45            test::<i::ampere, l::meter, ecd::ampere_per_meter>();
46            test::<i::ampere, l::centimeter, ecd::ampere_per_centimeter>();
47            test::<i::ampere, l::millimeter, ecd::ampere_per_millimeter>();
48            test::<i::ampere, l::micrometer, ecd::ampere_per_micrometer>();
49
50            fn test<I: i::Conversion<V>, L: l::Conversion<V>, ECD: ecd::Conversion<V>>() {
51                Test::assert_approx_eq(&SurfaceElectricCurrentDensity::new::<ECD>(V::one()),
52                    &(ElectricCurrent::new::<I>(V::one()) / Length::new::<L>(V::one())).into());
53            }
54        }
55    }
56}