exercism-perl5

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

leap.t (2169B) - 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";    # Find modules in the same dir as this file.
      8 
      9 use Leap qw<is_leap_year>;
     10 
     11 my @test_cases = do { local $/; @{ JSON->decode(<DATA>) }; };
     12 plan 10;                                 # This is how many tests we expect to run.
     13 
     14 imported_ok qw<is_leap_year> or bail_out;
     15 
     16 for my $case (@test_cases) {
     17   is(
     18     is_leap_year( $case->{input}{year} ),
     19     $case->{expected} ? T : DF,    # Check if True, or Defined but False
     20     $case->{description}
     21   );
     22 }
     23 
     24 __DATA__
     25 [
     26   {
     27     "description": "year not divisible by 4 in common year",
     28     "expected": false,
     29     "input": {
     30       "year": 2015
     31     },
     32     "property": "leapYear"
     33   },
     34   {
     35     "description": "year divisible by 2, not divisible by 4 in common year",
     36     "expected": false,
     37     "input": {
     38       "year": 1970
     39     },
     40     "property": "leapYear"
     41   },
     42   {
     43     "description": "year divisible by 4, not divisible by 100 in leap year",
     44     "expected": true,
     45     "input": {
     46       "year": 1996
     47     },
     48     "property": "leapYear"
     49   },
     50   {
     51     "description": "year divisible by 4 and 5 is still a leap year",
     52     "expected": true,
     53     "input": {
     54       "year": 1960
     55     },
     56     "property": "leapYear"
     57   },
     58   {
     59     "description": "year divisible by 100, not divisible by 400 in common year",
     60     "expected": false,
     61     "input": {
     62       "year": 2100
     63     },
     64     "property": "leapYear"
     65   },
     66   {
     67     "description": "year divisible by 100 but not by 3 is still not a leap year",
     68     "expected": false,
     69     "input": {
     70       "year": 1900
     71     },
     72     "property": "leapYear"
     73   },
     74   {
     75     "description": "year divisible by 400 is leap year",
     76     "expected": true,
     77     "input": {
     78       "year": 2000
     79     },
     80     "property": "leapYear"
     81   },
     82   {
     83     "description": "year divisible by 400 but not by 125 is still a leap year",
     84     "expected": true,
     85     "input": {
     86       "year": 2400
     87     },
     88     "property": "leapYear"
     89   },
     90   {
     91     "description": "year divisible by 200, not divisible by 400 in common year",
     92     "expected": false,
     93     "input": {
     94       "year": 1800
     95     },
     96     "property": "leapYear"
     97   }
     98 ]