uom/si/
specific_volume.rs1quantity! {
4 quantity: SpecificVolume; "specific volume";
6 dimension: ISQ<
8 P3, N1, Z0, Z0, Z0, Z0, Z0>; units {
16 @cubic_meter_per_kilogram: prefix!(none); "m³/kg", "cubic meter per kilogram",
17 "cubic meters per kilogram";
18 @cubic_centimeter_per_kilogram: prefix!(centi) * prefix!(centi) * prefix!(centi); "cm³/kg",
19 "cubic centimeter per kilogram", "cubic centimeters per kilogram";
20
21 @cubic_meter_per_gram: prefix!(none) / prefix!(milli); "m³/g", "cubic meter per gram",
22 "cubic meters per gram";
23 @cubic_centimeter_per_gram:
24 prefix!(centi) * prefix!(centi) * prefix!(centi) / prefix!(milli); "cm³/g",
25 "cubic centimeter per gram", "cubic centimeters per gram";
26 }
27}
28
29#[cfg(test)]
30mod tests {
31 storage_types! {
32 use crate::num::One;
33 use crate::si::volume as a;
34 use crate::si::mass as m;
35 use crate::si::specific_volume as sv;
36 use crate::si::quantities::*;
37 use crate::tests::Test;
38
39 #[test]
40 fn check_dimension() {
41 let _: SpecificVolume<V> = Volume::new::<a::cubic_meter>(V::one())
42 / Mass::new::<m::kilogram>(V::one());
43 }
44
45 #[test]
46 fn check_units() {
47 test::<a::cubic_meter, m::kilogram, sv::cubic_meter_per_kilogram>();
48 test::<a::cubic_centimeter, m::kilogram, sv::cubic_centimeter_per_kilogram>();
49 test::<a::cubic_meter, m::gram, sv::cubic_meter_per_gram>();
50 test::<a::cubic_centimeter, m::gram, sv::cubic_centimeter_per_gram>();
51
52 fn test<A: a::Conversion<V>, M: m::Conversion<V>, SV: sv::Conversion<V>>() {
53 Test::assert_eq(&SpecificVolume::new::<SV>(V::one()),
54 &(Volume::new::<A>(V::one()) / Mass::new::<M>(V::one())));
55 }
56 }
57 }
58}