uom/si/
specific_radioactivity.rs

1//! Specific radioactivity (base unit becquerel per kilogram, kg⁻¹ · s⁻¹).
2
3quantity! {
4    /// Specific radioactivity (base unit becquerel per kilogram, kg⁻¹ · s⁻¹).
5    quantity: SpecificRadioactivity; "specific radioactivity";
6    /// Dimension of specific radioactivity, M⁻¹T⁻¹ (base unit becquerel per kilogram, kg⁻¹ · s⁻¹).
7    dimension: ISQ<
8        Z0,     // length
9        N1,     // mass
10        N1,     // time
11        Z0,     // 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        @becquerel_per_kilogram: prefix!(none); "Bq/kg", "becquerel per kilogram",
18            "becquerels per kilogram";
19
20        @curie_per_kilogram: 3.7_E10; "Ci/kg", "curie per kilogram", "curie per kilogram";
21
22        @disintegrations_per_minute_per_kilogram: 1.0 / 6.0_E1; "dpm/kg",
23            "disintegration per minute per kilogram", "disintegrations per minute per kilogram";
24    }
25}
26
27#[cfg(test)]
28mod tests {
29    storage_types! {
30        use crate::num::One;
31        use crate::si::radioactivity as rad;
32        use crate::si::specific_radioactivity as srad;
33        use crate::si::quantities::*;
34        use crate::si::mass as m;
35        use crate::tests::Test;
36
37        #[test]
38        fn check_dimension() {
39            let _: SpecificRadioactivity<V> = (Radioactivity::new::<rad::becquerel>(V::one())
40                / Mass::new::<m::kilogram>(V::one())).into();
41        }
42
43        #[test]
44        fn check_units() {
45            test::<rad::becquerel, m::kilogram, srad::becquerel_per_kilogram>();
46            test::<rad::curie, m::kilogram, srad::curie_per_kilogram>();
47            test::<rad::disintegrations_per_minute, m::kilogram,
48                srad::disintegrations_per_minute_per_kilogram>();
49
50            fn test<RAD: rad::Conversion<V>, M: m::Conversion<V>, SRAD: srad::Conversion<V>>() {
51                Test::assert_approx_eq(&SpecificRadioactivity::new::<SRAD>(V::one()),
52                    &(Radioactivity::new::<RAD>(V::one()) / Mass::new::<M>(V::one())).into());
53            }
54        }
55    }
56}