@@ -135,3 +135,151 @@ impl Measurement for Force {
135135}
136136
137137implement_measurement ! { Force }
138+
139+ #[ cfg( test) ]
140+ mod test {
141+ use force:: * ;
142+ use test_utils:: assert_almost_eq;
143+
144+ #[ test]
145+ pub fn newtons ( ) {
146+ let i1 = Force :: from_newtons ( 100.0 ) ;
147+ let r1 = i1. as_newtons ( ) ;
148+
149+ assert_almost_eq ( r1, 100.0 ) ;
150+ }
151+
152+ #[ test]
153+ pub fn micronewtons ( ) {
154+ let i1 = Force :: from_newtons ( 100.0 ) ;
155+ let r1 = i1. as_micronewtons ( ) ;
156+
157+ let i2 = Force :: from_micronewtons ( 100.0 ) ;
158+ let r2 = i2. as_newtons ( ) ;
159+
160+ assert_almost_eq ( r1, 1e8 ) ;
161+ assert_almost_eq ( r2, 1e-4 ) ;
162+ }
163+
164+ #[ test]
165+ pub fn millinewtons ( ) {
166+ let i1 = Force :: from_newtons ( 100.0 ) ;
167+ let r1 = i1. as_millinewtons ( ) ;
168+
169+ let i2 = Force :: from_millinewtons ( 100.0 ) ;
170+ let r2 = i2. as_newtons ( ) ;
171+
172+ assert_almost_eq ( r1, 1e5 ) ;
173+ assert_almost_eq ( r2, 1e-1 ) ;
174+ }
175+
176+ #[ test]
177+ pub fn pounds ( ) {
178+ let i1 = Force :: from_newtons ( 100.0 ) ;
179+ let r1 = i1. as_pounds ( ) ;
180+
181+ let i2 = Force :: from_pounds ( 100.0 ) ;
182+ let r2 = i2. as_newtons ( ) ;
183+
184+ assert_almost_eq ( r1, 22.480886300718 ) ;
185+ assert_almost_eq ( r2, 444.822 ) ;
186+ }
187+
188+ #[ test]
189+ pub fn poundals ( ) {
190+ let i1 = Force :: from_newtons ( 100.0 ) ;
191+ let r1 = i1. as_poundals ( ) ;
192+
193+ let i2 = Force :: from_poundals ( 100.0 ) ;
194+ let r2 = i2. as_newtons ( ) ;
195+
196+ assert_almost_eq ( r1, 723.3016238104 ) ;
197+ assert_almost_eq ( r2, 13.8255 ) ;
198+ }
199+
200+ #[ test]
201+ pub fn kiloponds ( ) {
202+ let i1 = Force :: from_newtons ( 100.0 ) ;
203+ let r1 = i1. as_kiloponds ( ) ;
204+
205+ let i2 = Force :: from_kiloponds ( 100.0 ) ;
206+ let r2 = i2. as_newtons ( ) ;
207+
208+ assert_almost_eq ( r1, 10.1972 ) ;
209+ assert_almost_eq ( r2, 980.665 ) ;
210+ }
211+
212+ #[ test]
213+ pub fn dynes ( ) {
214+ let i1 = Force :: from_newtons ( 100.0 ) ;
215+ let r1 = i1. as_dynes ( ) ;
216+
217+ let i2 = Force :: from_dynes ( 100.0 ) ;
218+ let r2 = i2. as_newtons ( ) ;
219+
220+ assert_almost_eq ( r1, 1e7 ) ;
221+ assert_almost_eq ( r2, 0.001 ) ;
222+ }
223+
224+ #[ test]
225+ fn add ( ) {
226+ let a = Force :: from_newtons ( 2.0 ) ;
227+ let b = Force :: from_newtons ( 4.0 ) ;
228+ let c = a + b;
229+ let d = b + a;
230+ assert_almost_eq ( c. as_newtons ( ) , 6.0 ) ;
231+ assert_eq ! ( c, d) ;
232+ }
233+
234+ #[ test]
235+ fn sub ( ) {
236+ let a = Force :: from_newtons ( 2.0 ) ;
237+ let b = Force :: from_newtons ( 4.0 ) ;
238+ let c = a - b;
239+ assert_almost_eq ( c. as_newtons ( ) , -2.0 ) ;
240+ }
241+
242+ #[ test]
243+ fn mul ( ) {
244+ let a = Force :: from_newtons ( 3.0 ) ;
245+ let b = a * 2.0 ;
246+ let c = 2.0 * a;
247+ assert_almost_eq ( b. as_newtons ( ) , 6.0 ) ;
248+ assert_eq ! ( b, c) ;
249+ }
250+
251+ #[ test]
252+ fn div ( ) {
253+ let a = Force :: from_newtons ( 2.0 ) ;
254+ let b = Force :: from_newtons ( 4.0 ) ;
255+ let c = a / b;
256+ let d = a / 2.0 ;
257+ assert_almost_eq ( c, 0.5 ) ;
258+ assert_almost_eq ( d. as_newtons ( ) , 1.0 ) ;
259+ }
260+
261+ #[ test]
262+ fn eq ( ) {
263+ let a = Force :: from_newtons ( 2.0 ) ;
264+ let b = Force :: from_newtons ( 2.0 ) ;
265+ assert_eq ! ( a == b, true ) ;
266+ }
267+
268+ #[ test]
269+ fn neq ( ) {
270+ let a = Force :: from_newtons ( 2.0 ) ;
271+ let b = Force :: from_newtons ( 4.0 ) ;
272+ assert_eq ! ( a == b, false ) ;
273+ }
274+
275+ #[ test]
276+ fn cmp ( ) {
277+ let a = Force :: from_newtons ( 2.0 ) ;
278+ let b = Force :: from_newtons ( 4.0 ) ;
279+ assert_eq ! ( a < b, true ) ;
280+ assert_eq ! ( a <= b, true ) ;
281+ assert_eq ! ( a > b, false ) ;
282+ assert_eq ! ( a >= b, false ) ;
283+ }
284+
285+ }
0 commit comments