@@ -268,15 +268,15 @@ impl Area {
268
268
}
269
269
270
270
impl Measurement for Area {
271
- fn get_base_units ( & self ) -> f64 {
271
+ fn as_base_units ( & self ) -> f64 {
272
272
self . square_meters
273
273
}
274
274
275
275
fn from_base_units ( units : f64 ) -> Self {
276
276
Self :: from_square_meters ( units)
277
277
}
278
278
279
- fn get_base_units_name ( & self ) -> & ' static str {
279
+ fn as_base_units_name ( & self ) -> & ' static str {
280
280
"m\u{00B2} "
281
281
}
282
282
@@ -297,3 +297,230 @@ impl Measurement for Area {
297
297
}
298
298
299
299
implement_measurement ! { Area }
300
+
301
+ #[ cfg( test) ]
302
+ mod test {
303
+ use area:: * ;
304
+ use test_utils:: assert_almost_eq;
305
+
306
+ #[ test]
307
+ fn square_meters ( ) {
308
+ let i1 = Area :: from_square_meters ( 100.0 ) ;
309
+ let r1 = i1. as_square_meters ( ) ;
310
+ let i2 = Area :: from_square_meters ( 100.0 ) ;
311
+ let r2 = i2. as_square_meters ( ) ;
312
+ assert_almost_eq ( r1, 100.0 ) ;
313
+ assert_almost_eq ( r2, 100.0 ) ;
314
+ }
315
+
316
+ #[ test]
317
+ fn square_metres ( ) {
318
+ let i1 = Area :: from_square_meters ( 100.0 ) ;
319
+ let r1 = i1. as_square_metres ( ) ;
320
+ let i2 = Area :: from_square_metres ( 100.0 ) ;
321
+ let r2 = i2. as_square_meters ( ) ;
322
+ assert_almost_eq ( r1, 100.0 ) ;
323
+ assert_almost_eq ( r2, 100.0 ) ;
324
+ }
325
+
326
+ #[ test]
327
+ fn square_nanometers ( ) {
328
+ let i1 = Area :: from_square_meters ( 100.0 ) ;
329
+ let r1 = i1. as_square_nanometers ( ) ;
330
+ let i2 = Area :: from_square_nanometers ( 100.0 ) ;
331
+ let r2 = i2. as_square_meters ( ) ;
332
+ assert_almost_eq ( r1, 1e20 ) ;
333
+ assert_almost_eq ( r2, 1e-16 ) ;
334
+ }
335
+
336
+ #[ test]
337
+ fn square_nanometres ( ) {
338
+ let i1 = Area :: from_square_meters ( 100.0 ) ;
339
+ let r1 = i1. as_square_nanometres ( ) ;
340
+ let i2 = Area :: from_square_nanometres ( 100.0 ) ;
341
+ let r2 = i2. as_square_meters ( ) ;
342
+ assert_almost_eq ( r1, 1e20 ) ;
343
+ assert_almost_eq ( r2, 1e-16 ) ;
344
+ }
345
+
346
+ #[ test]
347
+ fn square_micrometers ( ) {
348
+ let i1 = Area :: from_square_meters ( 100.0 ) ;
349
+ let r1 = i1. as_square_micrometers ( ) ;
350
+ let i2 = Area :: from_square_micrometers ( 100.0 ) ;
351
+ let r2 = i2. as_square_meters ( ) ;
352
+ assert_almost_eq ( r1, 1e14 ) ;
353
+ assert_almost_eq ( r2, 1e-10 ) ;
354
+ }
355
+
356
+ #[ test]
357
+ fn square_micrometres ( ) {
358
+ let i1 = Area :: from_square_meters ( 100.0 ) ;
359
+ let r1 = i1. as_square_micrometres ( ) ;
360
+ let i2 = Area :: from_square_micrometres ( 100.0 ) ;
361
+ let r2 = i2. as_square_meters ( ) ;
362
+ assert_almost_eq ( r1, 1e14 ) ;
363
+ assert_almost_eq ( r2, 1e-10 ) ;
364
+ }
365
+
366
+ #[ test]
367
+ fn square_millimeters ( ) {
368
+ let i1 = Area :: from_square_meters ( 100.0 ) ;
369
+ let r1 = i1. as_square_millimeters ( ) ;
370
+ let i2 = Area :: from_square_millimeters ( 100.0 ) ;
371
+ let r2 = i2. as_square_meters ( ) ;
372
+ assert_almost_eq ( r1, 1e8 ) ;
373
+ assert_almost_eq ( r2, 1e-4 ) ;
374
+ }
375
+
376
+ #[ test]
377
+ fn square_millimetres ( ) {
378
+ let i1 = Area :: from_square_meters ( 100.0 ) ;
379
+ let r1 = i1. as_square_millimetres ( ) ;
380
+ let i2 = Area :: from_square_millimetres ( 100.0 ) ;
381
+ let r2 = i2. as_square_meters ( ) ;
382
+ assert_almost_eq ( r1, 1e8 ) ;
383
+ assert_almost_eq ( r2, 1e-4 ) ;
384
+ }
385
+
386
+ #[ test]
387
+ fn square_centimeters ( ) {
388
+ let i1 = Area :: from_square_meters ( 100.0 ) ;
389
+ let r1 = i1. as_square_centimeters ( ) ;
390
+ let i2 = Area :: from_square_centimeters ( 100.0 ) ;
391
+ let r2 = i2. as_square_meters ( ) ;
392
+ assert_almost_eq ( r1, 1e6 ) ;
393
+ assert_almost_eq ( r2, 1e-2 ) ;
394
+ }
395
+
396
+ #[ test]
397
+ fn square_centimetres ( ) {
398
+ let i1 = Area :: from_square_meters ( 100.0 ) ;
399
+ let r1 = i1. as_square_centimetres ( ) ;
400
+ let i2 = Area :: from_square_centimetres ( 100.0 ) ;
401
+ let r2 = i2. as_square_meters ( ) ;
402
+ assert_almost_eq ( r1, 1e6 ) ;
403
+ assert_almost_eq ( r2, 1e-2 ) ;
404
+ }
405
+
406
+ #[ test]
407
+ fn square_decimeters ( ) {
408
+ let i1 = Area :: from_square_meters ( 100.0 ) ;
409
+ let r1 = i1. as_square_decimeters ( ) ;
410
+ let i2 = Area :: from_square_decimeters ( 100.0 ) ;
411
+ let r2 = i2. as_square_meters ( ) ;
412
+ assert_almost_eq ( r1, 1e4 ) ;
413
+ assert_almost_eq ( r2, 1.0 ) ;
414
+ }
415
+
416
+ #[ test]
417
+ fn square_decimetres ( ) {
418
+ let i1 = Area :: from_square_meters ( 100.0 ) ;
419
+ let r1 = i1. as_square_decimetres ( ) ;
420
+ let i2 = Area :: from_square_decimetres ( 100.0 ) ;
421
+ let r2 = i2. as_square_meters ( ) ;
422
+ assert_almost_eq ( r1, 1e4 ) ;
423
+ assert_almost_eq ( r2, 1.0 ) ;
424
+ }
425
+
426
+ #[ test]
427
+ fn square_hectometers ( ) {
428
+ let i1 = Area :: from_square_meters ( 100.0 ) ;
429
+ let r1 = i1. as_square_hectometers ( ) ;
430
+ let i2 = Area :: from_square_hectometers ( 100.0 ) ;
431
+ let r2 = i2. as_square_meters ( ) ;
432
+ assert_almost_eq ( r1, 1e-2 ) ;
433
+ assert_almost_eq ( r2, 1e6 ) ;
434
+ }
435
+
436
+ #[ test]
437
+ fn square_hectometres ( ) {
438
+ let i1 = Area :: from_square_meters ( 100.0 ) ;
439
+ let r1 = i1. as_square_hectometres ( ) ;
440
+ let i2 = Area :: from_square_hectometres ( 100.0 ) ;
441
+ let r2 = i2. as_square_meters ( ) ;
442
+ assert_almost_eq ( r1, 1e-2 ) ;
443
+ assert_almost_eq ( r2, 1e6 ) ;
444
+ }
445
+
446
+ #[ test]
447
+ fn hectares ( ) {
448
+ let i1 = Area :: from_square_meters ( 100.0 ) ;
449
+ let r1 = i1. as_hectares ( ) ;
450
+ let i2 = Area :: from_hectares ( 100.0 ) ;
451
+ let r2 = i2. as_square_meters ( ) ;
452
+ assert_almost_eq ( r1, 1e-2 ) ;
453
+ assert_almost_eq ( r2, 1e6 ) ;
454
+ }
455
+
456
+ #[ test]
457
+ fn square_kilometers ( ) {
458
+ let i1 = Area :: from_square_meters ( 100.0 ) ;
459
+ let r1 = i1. as_square_kilometers ( ) ;
460
+ let i2 = Area :: from_square_kilometers ( 100.0 ) ;
461
+ let r2 = i2. as_square_meters ( ) ;
462
+ assert_almost_eq ( r1, 1e-4 ) ;
463
+ assert_almost_eq ( r2, 1e8 ) ;
464
+ }
465
+
466
+ #[ test]
467
+ fn square_kilometres ( ) {
468
+ let i1 = Area :: from_square_meters ( 100.0 ) ;
469
+ let r1 = i1. as_square_kilometres ( ) ;
470
+ let i2 = Area :: from_square_kilometres ( 100.0 ) ;
471
+ let r2 = i2. as_square_meters ( ) ;
472
+ assert_almost_eq ( r1, 1e-4 ) ;
473
+ assert_almost_eq ( r2, 1e8 ) ;
474
+ }
475
+
476
+ #[ test]
477
+ fn square_inches ( ) {
478
+ let i1 = Area :: from_square_meters ( 100.0 ) ;
479
+ let r1 = i1. as_square_inches ( ) ;
480
+ let i2 = Area :: from_square_inches ( 100.0 ) ;
481
+ let r2 = i2. as_square_meters ( ) ;
482
+ assert_almost_eq ( r1, 155000.0 ) ;
483
+ assert_almost_eq ( r2, 0.06451587097 ) ;
484
+ }
485
+
486
+ #[ test]
487
+ fn square_feet ( ) {
488
+ let i1 = Area :: from_square_meters ( 100.0 ) ;
489
+ let r1 = i1. as_square_feet ( ) ;
490
+ let i2 = Area :: from_square_feet ( 100.0 ) ;
491
+ let r2 = i2. as_square_meters ( ) ;
492
+ assert_almost_eq ( r1, 1076.39 ) ;
493
+ assert_almost_eq ( r2, 9.2902950097728 ) ;
494
+ }
495
+
496
+ #[ test]
497
+ fn square_yards ( ) {
498
+ let i1 = Area :: from_square_meters ( 100.0 ) ;
499
+ let r1 = i1. as_square_yards ( ) ;
500
+ let i2 = Area :: from_square_yards ( 100.0 ) ;
501
+ let r2 = i2. as_square_meters ( ) ;
502
+ assert_almost_eq ( r1, 119.599 ) ;
503
+ assert_almost_eq ( r2, 83.612732764187 ) ;
504
+ }
505
+
506
+ #[ test]
507
+ fn acres ( ) {
508
+ let i1 = Area :: from_square_meters ( 100.0 ) ;
509
+ let r1 = i1. as_acres ( ) ;
510
+ let i2 = Area :: from_acres ( 100.0 ) ;
511
+ let r2 = i2. as_square_meters ( ) ;
512
+ assert_almost_eq ( r1, 0.0247105 ) ;
513
+ assert_almost_eq ( r2, 404686.0 ) ;
514
+ }
515
+
516
+ #[ test]
517
+ fn square_miles ( ) {
518
+ let i1 = Area :: from_square_meters ( 100.0 ) ;
519
+ let r1 = i1. as_square_miles ( ) ;
520
+ let i2 = Area :: from_square_miles ( 100.0 ) ;
521
+ let r2 = i2. as_square_meters ( ) ;
522
+ assert_almost_eq ( r1, 3.86102e-5 ) ;
523
+ assert_almost_eq ( r2, 258998704.7 ) ;
524
+ }
525
+
526
+ }
0 commit comments