@@ -135,3 +135,151 @@ impl Measurement for Force {
135
135
}
136
136
137
137
implement_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