exercism-perl5

Repository for my Perl 5 Exercism exercises
git clone git://git.samirparikh.com/exercism-perl5
Log | Files | Refs | README

space-age.t (1753B) - raw


      1 #!/usr/bin/env perl
      2 use Test2::V0;
      3 use JSON::PP;
      4 use constant JSON => JSON::PP->new;
      5 
      6 use FindBin qw<$Bin>;
      7 use lib $Bin, "$Bin/local/lib/perl5";
      8 
      9 use SpaceAge qw<age_on_planet>;
     10 
     11 my @test_cases = do { local $/; @{ JSON->decode(<DATA>) }; };
     12 
     13 imported_ok qw<age_on_planet> or bail_out;
     14 
     15 for my $case (@test_cases) {
     16   is( age_on_planet( $case->{input} ),
     17     $case->{expected}, $case->{description}, );
     18 }
     19 
     20 done_testing;
     21 
     22 __DATA__
     23 [
     24   {
     25     "description": "age on Earth",
     26     "expected": 31.69,
     27     "input": {
     28       "planet": "Earth",
     29       "seconds": 1000000000
     30     },
     31     "property": "age"
     32   },
     33   {
     34     "description": "age on Mercury",
     35     "expected": 280.88,
     36     "input": {
     37       "planet": "Mercury",
     38       "seconds": 2134835688
     39     },
     40     "property": "age"
     41   },
     42   {
     43     "description": "age on Venus",
     44     "expected": 9.78,
     45     "input": {
     46       "planet": "Venus",
     47       "seconds": 189839836
     48     },
     49     "property": "age"
     50   },
     51   {
     52     "description": "age on Mars",
     53     "expected": 35.88,
     54     "input": {
     55       "planet": "Mars",
     56       "seconds": 2129871239
     57     },
     58     "property": "age"
     59   },
     60   {
     61     "description": "age on Jupiter",
     62     "expected": 2.41,
     63     "input": {
     64       "planet": "Jupiter",
     65       "seconds": 901876382
     66     },
     67     "property": "age"
     68   },
     69   {
     70     "description": "age on Saturn",
     71     "expected": 2.15,
     72     "input": {
     73       "planet": "Saturn",
     74       "seconds": 2000000000
     75     },
     76     "property": "age"
     77   },
     78   {
     79     "description": "age on Uranus",
     80     "expected": 0.46,
     81     "input": {
     82       "planet": "Uranus",
     83       "seconds": 1210123456
     84     },
     85     "property": "age"
     86   },
     87   {
     88     "description": "age on Neptune",
     89     "expected": 0.35,
     90     "input": {
     91       "planet": "Neptune",
     92       "seconds": 1821023456
     93     },
     94     "property": "age"
     95   }
     96 ]