@@ -268,15 +268,15 @@ impl Area {
268268}
269269
270270impl Measurement for Area {
271- fn get_base_units ( & self ) -> f64 {
271+ fn as_base_units ( & self ) -> f64 {
272272 self . square_meters
273273 }
274274
275275 fn from_base_units ( units : f64 ) -> Self {
276276 Self :: from_square_meters ( units)
277277 }
278278
279- fn get_base_units_name ( & self ) -> & ' static str {
279+ fn as_base_units_name ( & self ) -> & ' static str {
280280 "m\u{00B2} "
281281 }
282282
@@ -297,3 +297,230 @@ impl Measurement for Area {
297297}
298298
299299implement_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