Skip to main content

uom/si/
angular_absement.rs

1//! Angular Absement (base unit radian second, s).
2
3quantity! {
4    /// Angular Absement (base unit radian second, s).
5    quantity: AngularAbsement; "angular absement";
6    /// Dimension of angular absement, T (base unit radian second, s).
7    dimension: ISQ<
8        Z0,     // length
9        Z0,     // mass
10        P1,     // time
11        Z0,     // electric current
12        Z0,     // thermodynamic temperature
13        Z0,     // amount of substance
14        Z0>;    // luminous intensity
15    kind: dyn crate::si::marker::AngleKind;
16    units {
17        @radian_second: prefix!(none); "rad · s", "radian second", "radian seconds";
18        @degree_second: 1.745_329_251_994_329_5_E-2; "° · s", "degree second", "degree seconds";
19    }
20}
21
22#[cfg(test)]
23mod tests {
24    storage_types! {
25        use crate::si::angular_absement as a;
26        use crate::si::angle as l;
27        use crate::si::quantities::*;
28        use crate::si::time as t;
29        use crate::tests::Test;
30        use crate::num::One;
31
32        #[test]
33        fn check_dimension() {
34            let _: AngularAbsement<V> = (Angle::new::<l::radian>(V::one())
35                * Time::new::<t::second>(V::one())).into();
36        }
37
38        #[test]
39        fn check_units() {
40            test::<l::radian, t::second, a::radian_second>();
41            test::<l::degree, t::second, a::degree_second>();
42
43            fn test<L: l::Conversion<V>, T: t::Conversion<V>, A: a::Conversion<V>>() {
44                Test::assert_eq(&AngularAbsement::new::<A>(V::one()),
45                    &(Angle::new::<L>(V::one()) * Time::new::<T>(V::one())).into());
46            }
47        }
48    }
49}