1quantity! {
4 quantity: Torque; "torque";
11 dimension: ISQ<
13 P2, P1, N2, Z0, Z0, Z0, Z0>; kind: dyn (crate::si::marker::AngleKind);
21 units {
22 @yottanewton_meter: prefix!(yotta); "YN · m", "yottanewton meter", "yottanewton meters";
23 @zettanewton_meter: prefix!(zetta); "ZN · m", "zettanewton meter", "zettanewton meters";
24 @exanewton_meter: prefix!(exa); "EN · m", "exanewton meter", "exanewton meters";
25 @petanewton_meter: prefix!(peta); "PN · m", "petanewton meter", "petanewton meters";
26 @teranewton_meter: prefix!(tera); "TN · m", "teranewton meter", "teranewton meters";
27 @giganewton_meter: prefix!(giga); "GN · m", "giganewton meter", "giganewton meters";
28 @meganewton_meter: prefix!(mega); "MN · m", "meganewton meter", "meganewton meters";
29 @kilonewton_meter: prefix!(kilo); "kN · m", "kilonewton meter", "kilonewton meters";
30 @hectonewton_meter: prefix!(hecto); "hN · m", "hectonewton meter", "hectonewton meters";
31 @decanewton_meter: prefix!(deca); "daN · m", "decanewton meter", "decanewton meters";
32 @newton_meter: prefix!(none); "N · m", "newton meter", "newton meters";
34 @decinewton_meter: prefix!(deci); "dN · m", "decinewton meter", "decinewton meters";
35 @centinewton_meter: prefix!(centi); "cN · m", "centinewton meter", "centinewton meters";
36 @millinewton_meter: prefix!(milli); "mN · m", "millinewton meter", "millinewton meters";
37 @micronewton_meter: prefix!(micro); "µN · m", "micronewton meter", "micronewton meters";
38 @nanonewton_meter: prefix!(nano); "nN · m", "nanonewton meter", "nanonewton meters";
39 @piconewton_meter: prefix!(pico); "pN · m", "piconewton meter", "piconewton meters";
40 @femtonewton_meter: prefix!(femto); "fN · m", "femtonewton meter", "femtonewton meters";
41 @attonewton_meter: prefix!(atto); "aN · m", "attonewton meter", "attonewton meters";
42 @zeptonewton_meter: prefix!(zepto); "zN · m", "zeptonewton meter", "zeptonewton meters";
43 @yoctonewton_meter: prefix!(yocto); "yN · m", "yoctonewton meter", "yoctonewton meters";
44
45 @newton_yottameter: prefix!(yotta); "N · Ym", "newton yottameter", "newton yottameters";
46 @newton_zettameter: prefix!(zetta); "N · Zm", "newton zettameter", "newton zettameters";
47 @newton_exameter: prefix!(exa); "N · Em", "newton exameter", "newton exameters";
48 @newton_petameter: prefix!(peta); "N · Pm", "newton petameter", "newton petameters";
49 @newton_terameter: prefix!(tera); "N · Tm", "newton terameter", "newton terameters";
50 @newton_gigameter: prefix!(giga); "N · Gm", "newton gigameter", "newton gigameters";
51 @newton_megameter: prefix!(mega); "N · Mm", "newton megameter", "newton megameters";
52 @newton_kilometer: prefix!(kilo); "N · km", "newton kilometer", "newton kilometers";
53 @newton_hectometer: prefix!(hecto); "N · hm", "newton hectometer", "newton hectometers";
54 @newton_decameter: prefix!(deca); "N · dam", "newton decameter", "newton decameters";
55 @newton_decimeter: prefix!(deci); "N · dm", "newton decimeter", "newton decimeters";
56 @newton_centimeter: prefix!(centi); "N · cm", "newton centimeter", "newton centimeters";
57 @newton_millimeter: prefix!(milli); "N · mm", "newton millimeter", "newton millimeters";
58 @newton_micrometer: prefix!(micro); "N · µm", "newton micrometer", "newton micrometers";
59 @newton_nanometer: prefix!(nano); "N · nm", "newton nanometer", "newton nanometers";
60 @newton_picometer: prefix!(pico); "N · pm", "newton picometer", "newton picometers";
61 @newton_femtometer: prefix!(femto); "N · fm", "newton femtometer", "newton femtometers";
62 @newton_attometer: prefix!(atto); "N · am", "newton attometer", "newton attometers";
63 @newton_zeptometer: prefix!(zepto); "N · zm", "newton zeptometer", "newton zeptometers";
64 @newton_yoctometer: prefix!(yocto); "N · ym", "newton yoctometer", "newton yoctometers";
65
66 @dyne_meter: 1.0_E-5; "dyn · m", "dyne meter", "dyne meters";
67 @dyne_centimeter: 1.0_E-7; "dyn · cm", "dyne centimeter", "dyne centimeters";
68 @kilogram_force_meter: 9.806_65_E0; "kgf · m", "kilogram-force meter",
69 "kilogram-force meters";
70 @ounce_force_inch: 7.061_553_06_E-3; "ozf · in", "ounce-force inch", "ounces-force inches";
71 @pound_force_foot: 1.355_818_065_6_E0; "lbf · ft", "pound-force foot", "pounds-force feet";
72 @pound_force_inch: 1.129_848_388_E-1; "lbf · in", "pound-force inch", "pounds-force inches";
73 }
74}
75
76#[cfg(test)]
77mod tests {
78 storage_types! {
79 use crate::num::One;
80 use crate::si::force as f;
81 use crate::si::length as l;
82 use crate::si::quantities::*;
83 use crate::si::torque as t;
84 use crate::tests::Test;
85
86 #[test]
87 fn check_dimension() {
88 let _: Torque<V> = (Force::new::<f::newton>(V::one())
89 * Length::new::<l::meter>(V::one())).into();
90 }
91
92 #[test]
93 fn check_units() {
94 test::<f::yottanewton, l::meter, t::yottanewton_meter>();
95 test::<f::zettanewton, l::meter, t::zettanewton_meter>();
96 test::<f::exanewton, l::meter, t::exanewton_meter>();
97 test::<f::petanewton, l::meter, t::petanewton_meter>();
98 test::<f::teranewton, l::meter, t::teranewton_meter>();
99 test::<f::giganewton, l::meter, t::giganewton_meter>();
100 test::<f::meganewton, l::meter, t::meganewton_meter>();
101 test::<f::kilonewton, l::meter, t::kilonewton_meter>();
102 test::<f::hectonewton, l::meter, t::hectonewton_meter>();
103 test::<f::decanewton, l::meter, t::decanewton_meter>();
104 test::<f::newton, l::meter, t::newton_meter>();
105 test::<f::decinewton, l::meter, t::decinewton_meter>();
106 test::<f::centinewton, l::meter, t::centinewton_meter>();
107 test::<f::millinewton, l::meter, t::millinewton_meter>();
108 test::<f::micronewton, l::meter, t::micronewton_meter>();
109 test::<f::nanonewton, l::meter, t::nanonewton_meter>();
110 test::<f::piconewton, l::meter, t::piconewton_meter>();
111 test::<f::femtonewton, l::meter, t::femtonewton_meter>();
112 test::<f::attonewton, l::meter, t::attonewton_meter>();
113 test::<f::zeptonewton, l::meter, t::zeptonewton_meter>();
114 test::<f::yoctonewton, l::meter, t::yoctonewton_meter>();
115
116 test::<f::newton, l::yottameter, t::newton_yottameter>();
117 test::<f::newton, l::zettameter, t::newton_zettameter>();
118 test::<f::newton, l::exameter, t::newton_exameter>();
119 test::<f::newton, l::petameter, t::newton_petameter>();
120 test::<f::newton, l::terameter, t::newton_terameter>();
121 test::<f::newton, l::gigameter, t::newton_gigameter>();
122 test::<f::newton, l::megameter, t::newton_megameter>();
123 test::<f::newton, l::kilometer, t::newton_kilometer>();
124 test::<f::newton, l::hectometer, t::newton_hectometer>();
125 test::<f::newton, l::decameter, t::newton_decameter>();
126 test::<f::newton, l::decimeter, t::newton_decimeter>();
127 test::<f::newton, l::centimeter, t::newton_centimeter>();
128 test::<f::newton, l::millimeter, t::newton_millimeter>();
129 test::<f::newton, l::micrometer, t::newton_micrometer>();
130 test::<f::newton, l::nanometer, t::newton_nanometer>();
131 test::<f::newton, l::picometer, t::newton_picometer>();
132 test::<f::newton, l::femtometer, t::newton_femtometer>();
133 test::<f::newton, l::attometer, t::newton_attometer>();
134 test::<f::newton, l::zeptometer, t::newton_zeptometer>();
135 test::<f::newton, l::yoctometer, t::newton_yoctometer>();
136
137 test::<f::dyne, l::meter, t::dyne_meter>();
138 test::<f::dyne, l::centimeter, t::dyne_centimeter>();
139 test::<f::kilogram_force, l::meter, t::kilogram_force_meter>();
140 test::<f::ounce_force, l::inch, t::ounce_force_inch>();
141 test::<f::pound_force, l::foot, t::pound_force_foot>();
142 test::<f::pound_force, l::inch, t::pound_force_inch>();
143
144 fn test<F: f::Conversion<V>, L: l::Conversion<V>, T: t::Conversion<V>>() {
145 Test::assert_approx_eq(&Torque::new::<T>(V::one()),
146 &(Force::new::<F>(V::one()) * Length::new::<L>(V::one())).into());
147 }
148 }
149 }
150}